في هذا الكود البرمجي، يبدو أن هناك بعض الأخطاء في عملية طباعة عناصر الفيكتور. دعونا نتناول الأخطاء ونقدم بعض التوجيهات لتصحيح الكود.
أولًا وقبل كل شيء، يجب تعريف المتغيرات المستخدمة في الشيفرة البرمجية، وهي n و m و x و a و b. يجب عليك التأكد من أنك قد قمت بتعريف هذه المتغيرات بشكل صحيح في الجزء العلوي من الشيفرة.
ثانيًا، عند قراءة القيم للفيكتور، يجب عليك التأكد من أنك تقوم بتعيين قيم العناصر بشكل صحيح. على سبيل المثال، قمت بقراءة x بدون تعريفه في الشيفرة، يجب أن تقوم بتعريفه كمتغير.
الأخطاء في عملية الطباعة:
aye[a].first
وaye[a].second
ليست الطريقة الصحيحة للوصول إلى عناصر الـ pair. يجب عليك استخدامaye[a][0].first
للوصول إلى العنصر الأول في الـ pair وaye[a][0].second
للوصول إلى العنصر الثاني.aye[a][0]
وaye[a][1]
هي أزواج (pairs)، ولا يمكن طباعتها بهذه الطريقة. يجب استخدامcout
لطباعة كل جزء من الزوج على حدة، على سبيل المثالcout << aye[a][0].first << " " << aye[a][0].second << endl;
.
تصحيح الشيفرة:
cpp#include
using namespace std;
vectorint,string>> aye[100001];
int main()
{
int n, m, x, a, b;
cin >> n >> m;
for (int i = 1; i <= n; ++i)
{
cin >> x;
cin >> a >> b;
aye[a].push_back(make_pair(-b, to_string(x)));
// طباعة العناصر بشكل صحيح
cout << aye[a][0].first << " " << aye[a][0].second << endl;
}
return 0;
}
تأكد من تعريف المتغيرات بشكل صحيح واستخدام الفاصلة المناسبة في الدالة make_pair
.
المزيد من المعلومات
بالطبع، سأزودك بمزيد من المعلومات حول الشيفرة البرمجية وبعض النقاط التي يمكن أن تكون مفيدة:
-
التعامل مع الأزواج (
pair
) في الفيكتور:
يتم تخزين الأزواج في الفيكتورaye
، وهذا يعني أنه عند الوصول إلى العناصر، يجب استخدامaye[a][index].first
للحصول على الجزء الأول وaye[a][index].second
للحصول على الجزء الثاني. في الكود المصحح، تم استخدامaye[a][0]
للوصول إلى العنصر الأول، لكن يمكن تغيير الفهرس (index
) حسب متطلبات البرنامج. -
تحويل int إلى string:
عند قراءة قيمةx
، قمت بتحويلها إلى string باستخدامto_string(x)
لتناسب نوع البيانات المتوقع للـ pair الثاني الذي هو string. -
تعريف المتغيرات:
يجب دائمًا تعريف المتغيرات قبل استخدامها، وفي هذه الحالة، قمت بتعريفn
وm
وx
وa
وb
في بداية الدالةmain
. -
إرجاع القيمة من دالة
main
:
تمت إضافةreturn 0;
في نهاية الدالةmain
لضمان عدم حدوث أي مشاكل أثناء تنفيذ البرنامج.
يجدر بك دائمًا بتحسين وتعديل الشيفرة البرمجية وفقًا لاحتياجات مشروعك الخاص، وإضافة المزيد من الخطوات التحقق والتصحيح إذا لزم الأمر.