[ad_1]
لقد كتبت برنامجًا يطبع أكبر رقم في الرقم
#include <stdio.h> int main(){ int num , large = 0, rem = 0; scanf("%d" , &num); while (num > 0) { rem = num % 10; if (rem > large) { large = rem; } num = num / 10; } printf("the biggest digit is %d\n", large); return 0; }
إذا كان يعمل بشكل جيد ولكن إذا قمت بإدخال رقم سالب فلنفترض -432 فإنه يطبع لي 0 بدلاً من 4. كيف يمكنني تصحيح ذلك؟
ما حاولت:
…………………………………………
الحل 1
سي ++
while (num > 0)
سيفشل هذا مع الأرقام الأقل من 0. قم بالتحويل إلى رقم مطلق قبل أن يقوم الاختبار بإصلاحه:
سي ++
num = abs(num); while (num > 0)
الحل 2
مرحبًا
أولًا، يجب عليك وضع WHILE على IF(num>=0)، ثم يجب أن تجعل رقمك موجبًا في ELSE. على سبيل المثال، أفعل هذا (num=num-2*(num);) هذا يعمل بالنسبة لي. بالتأكيد يمكنك كتابة هذا بشكل أفضل باستخدام الوظائف.
سي ++
#include<stdio.h> int main() { int num,r=0,max=0; scanf("%d",&num); if(num>=0) { while(num>0) { r=num%10; if(r>=max) { max=r; } num=num/10; } } else { num=num-2*(num); while(num>0) { r=num%10; if(r>=max) { max=r; } num=num/10; } } printf("%d",max); return 0; }
[ad_2]
コメント