[ad_1]
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; }
[ad_2]
コメント