Programa C dígito más grande de un número

programación


Escribí un programa que imprime el dígito más grande de un número.

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

Si funciona bien, pero si ingreso un número negativo, digamos -432, me imprime 0, en lugar de 4. ¿Cómo puedo corregir eso?

Lo que he probado:

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

Solución 1

C++
while (num > 0)

Esto fallará para números menores que 0. Convierta a un número absoluto antes de que la prueba lo solucione:

C++
num = abs(num);
while (num > 0)

Solución 2

Hola
En primer lugar, debes poner WHILE en IF(num>=0), luego debes hacer que tu número sea positivo en ELSE. por ejemplo, hago (num=num-2*(num);) esto. funciona para mi. Absolutamente puedes escribir esto mucho mejor con funciones.

C++
#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をコピーしました