برنامج C أكبر رقم من رقم


لقد كتبت برنامجًا يطبع أكبر رقم في الرقم

#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;
}

コメント

タイトルとURLをコピーしました