[ad_1]
j’ai écrit un programme qui imprime le plus grand chiffre d’un nombre
#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 cela fonctionne bien, mais si je saisis un nombre négatif, disons -432, cela m’imprime 0, au lieu de 4. Comment puis-je corriger cela ?
Ce que j’ai essayé :
…………………………………
Solution 1
C++
while (num > 0)
Cela échouera pour les nombres inférieurs à 0. Convertir en nombre absolu avant le test le corrigera :
C++
num = abs(num); while (num > 0)
Solution 2
Bonjour
Tout d’abord, vous devez mettre WHILE sur IF(num>=0), puis vous devez rendre votre nombre positif dans ELSE. par exemple, je fais (num=num-2*(num);) ceci. ça marche pour moi. vous pouvez absolument mieux écrire cela avec des fonctions.
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]
コメント