مروان محمود3 نشر 20 سبتمبر 2021 أرسل تقرير نشر 20 سبتمبر 2021 يأتيني رسالة الخطأ /garden.cpp:12:66: error: no match for 'operator+' (operand types are 'std::__cxx11::basic_string<char>' and 'int') عندما أحاول تنفيذ الكود string findTrees(int arr[],int n){ string position; int a; if(arr[0]==arr[2]){ a=abs(arr[3]-arr[1]); position=abs(arr[0]-a)+" " +to_string(arr[1])+' '+abs(arr[0]-a)+' '+ arr[3]; } 2 اقتباس
1 شرف الدين حفني نشر 20 سبتمبر 2021 أرسل تقرير نشر 20 سبتمبر 2021 سبب الخطأ أن الدالة abs تقوم بأخذ قيمة عددية وترجع القيمة المطلقة لها, والتي بدورها أيضا قيمة عددية كما أن المتغير في المصفوفة arr[3] يُعد أيضاً قيمة عددية, وال" " عبارة عن سلسلة نصية, ﻻ يمكنك جمع سلسلة نصية وقيمة عددية في الوقت ذاته, الحل أن تقوم بتحويل القيم العددية إلى سلسلة نصية عن طريق الدالة to_string كما عملت في عﻻمة الجمع رقم إثنين فتصبح الشفرة البرمجية خاصتك على الصيغة التالية string findTrees(int arr[],int n){ string position; int a; if(arr[0]==arr[2]){ a=abs(arr[3]-arr[1]); position=to_string(abs(arr[0]-a))+" " +to_string(arr[1])+' '+to_string(abs(arr[0]-a))+' '+ to_string(arr[3]); } 1 اقتباس
1 Hassan Hedr نشر 20 سبتمبر 2021 أرسل تقرير نشر 20 سبتمبر 2021 في c++ علامة الاقتباس المفردة" ' " تدل على النوع محرف char، وعلامة الاقتباس المزدوجة " " " تدل على نص الخطأ في المثال السابق هو عند محاولة جمع محرف و عدد int، بدل علامات الاقتباس للفراغات بعلامة مزدوجة كالتالي string findTrees(int arr[],int n){ string position; int a; if(arr[0]==arr[2]){ a=abs(arr[3]-arr[1]); position=abs(arr[0]-a) + " " + to_string(arr[1]) + " " + abs(arr[0]-a) + " " + arr[3]; } 1 اقتباس
السؤال
مروان محمود3
يأتيني رسالة الخطأ
عندما أحاول تنفيذ الكود
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.