Mohamed Ahmed181 نشر 15 فبراير أرسل تقرير نشر 15 فبراير #include <iostream> using namespace std; int minpositive(int nums[], int size){ int check = 50; for(int i = 0; i < size; i++){ if(nums[i] > 0 && check > nums[i]){ check = nums[i]; } } //return check; } int main(){ int numbers[] = { -10, -20, 15, 100, 10, 5, -50, 0 }; // 5 int numssize = sizeof(numbers) / sizeof(numbers[0]); cout << minpositive(numbers, numssize) << "\n"; return 0; } لما بعمل كومنت لل return بيطلع رقم 8 اللي هو عدد العناصر في ال array ممكن اعرف العملية دي تمت ازاي؟ ولو نفس ال function بس انا مش عارف الارقام ازاي اجيب اصغر واحد بطريقة dynamic؟ 2 اقتباس
1 محمد عاطف17 نشر 15 فبراير أرسل تقرير نشر 15 فبراير اولا اذا قمت بعمل comment لسطر ال return فى الدالة minpositive فان الكود لن يعمل وسيظهر لك خطأ لانك قد قمت بتعريف الدالة minpositive انها تقوم بارجاع رقم int و فى داخل الدالة لا تقوم بارجاع اى قيمة لذا سيظهر لك خطأ . ثانيا لتقوم بارجاع القيمة بطريقة dynamic لتقم باستخدام هذا الكود int minpositive(int nums[], int size) { int check = nums[0]; for (int i = 0; i < size; i++) { if (nums[i] > 0 && abs(check) > nums[i]) { check = nums[i]; } } if (check < 0) return 0; return check; } اولا نقم بتعريف المتغير check باول قيمة فى المصفوفة (array) لانك اذا لم تقم بذلك سيحدث خطأ لنفترض انك قمت بتعريف check لياخذ قيمة 1 و ان ال array لا تحتوى على عنصر رقم 1 وان اصغر قيمة هى مثلا 5 كما فى المثال الخاص بكم ستجد ان القيمة التى سيتم ارجاعها من هذه الدالة هى 1 وهذا خطأ لذلك قمنا باخذ اول قيمة فى المصفوفة ثانيا ستجد انى قمت باضافة abs(check) بدلا من check لان اول قيمة فى المصفوفة من الممكن ان تكون سالبة لذلك ستكون اصغر من اى قيمة موجبة اخرى ولن يتحقق الشرط لذلك قمنا باضافة ذلك. اخيرا ستجدنى قمت باضافة هذا السطر if (check < 0) return 0; لانه فى حالة ان المصفوفة كانت جميعها ارقام سالبة فيجب ان يقوم بارجاع 0 1 اقتباس
0 Taha Khaled2 نشر 15 فبراير أرسل تقرير نشر 15 فبراير في الكود الخاص بك، تحتاج إلى إعادة تعليق return لأنه تم تعليقه حاليًا. دون عبارة return، فإن الدالة minpositive لا تقوم بإرجاع أي قيمة، وبالتالي فإن القيمة التي يتم طباعتها في main() لن تكون محددة، وستعرض قيمة عشوائية من الذاكرة. لحل هذه المشكلة والحصول على أصغر عنصر موجب في المصفوفة، يمكنك استخدام قيمة افتراضية تمثل أصغر عدد ممكن، ثم تحديث هذه القيمة أثناء المرور عبر المصفوفة. في حالة عدم وجود عناصر موجبة في المصفوفة، يمكنك إعادة هذه القيمة الافتراضية كنتيجة. الكود الخاص بك بعد التعديل #include <iostream> using namespace std; int minpositive(int nums[], int size) { int check = 1; // قيمة افتراضية تمثل أصغر عدد ممكن for (int i = 0; i < size; i++) { if (nums[i] > 0 && check > nums[i]) { check = nums[i]; } } return check; } int main() { int numbers[] = { -10, -20, 15, 100, 10, 5, -50, 0 }; // 5 int numssize = sizeof(numbers) / sizeof(numbers[0]); cout << minpositive(numbers, numssize) << "\n"; return 0; } 1 اقتباس
السؤال
Mohamed Ahmed181
لما بعمل كومنت لل return بيطلع رقم 8 اللي هو عدد العناصر في ال array ممكن اعرف العملية دي تمت ازاي؟
ولو نفس ال function بس انا مش عارف الارقام ازاي اجيب اصغر واحد بطريقة dynamic؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.