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 इनपुट करता हूं तो यह मुझे 4 के बजाय 0 प्रिंट करता है। मैं इसे कैसे ठीक कर सकता हूं?

मैंने क्या प्रयास किया है:

…………………………………………..

समाधान 1

सी++
while (num > 0)

यह 0 से कम संख्याओं के लिए विफल हो जाएगा। परीक्षण से पहले इसे ठीक करने से पहले एक पूर्ण संख्या में कनवर्ट करें:

सी++
num = abs(num);
while (num > 0)

समाधान 2

नमस्ते
सबसे पहले आपको IF(num>=0) पर WHILE लगाना चाहिए, उसके बाद 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をコピーしました