J'ai besoin de ça pour l'école. Je suis un débutant en codage. J'ai trouvé un moyen de boucler les valeurs d'entrée jusqu'à ce que l'utilisateur entre le numéro 0. Après cela, le programme devrait afficher la quantité de nombres pos, neg, pairs et impairs. Si quelqu'un peut m'aider, je suis resté coincé à googler et à essayer moi-même ces 3 dernières heures.
int main() { int positive, negative, even, odd, i, number,num; int counteven = 0, countodd = 0, countneg = 0, countpos = 0; printf("Hello!\n"); printf("I am a programm that will tell you how many\npositive, negative, even and odd numbers you have inputted.\n"); printf("You can start inputting numbers. When you're finished input the number 0 to let me know you're done.\n"); int loop = ( 1 == scanf("%di",&number) ) && ( 0 != number ); while( loop ) { loop = ( 1 == scanf("%di",&number) ) && ( 0 != number ); } if (number < 0) { countneg++; } else { countpos++; } printf("\nPositive Numbers : %d\nNegative Numbers : %d\nEven Numbers : %d\nOdd Numbers : %d", countpos, countneg, counteven, countodd); return 0; }
3 Réponses :
Je ne sais pas ce que fait le spécificateur "% di"
. Utilisez simplement % d
.
Il y a un problème avec votre boucle. Vos vérifications pour voir si le nombre est positif ou négatif n'en font pas partie. Vous obtenez juste tous les nombres et jetez les résultats, faites une vérification sur le dernier nombre que vous avez obtenu (qui est 0
). Mettez ces jobs dans la boucle, et mettez de préférence le 1 == scanf ()
dans la condition de boucle:
if (number % 2 == 0) counteven++; else countodd++;
Vous ne faites pas non plus le chèque pair / impair. Ajoutez ceci à la boucle:
while ((1 == scanf("%d", &number)) && (0 != number)) { if (number < 0) countneg++; else countpos++; }
L'opérateur mod (%) est utilisé pour vérifier le reste
#include<stdio.h> int main() { int positive, negative, even, odd, i, number,num; int counteven = 0, countodd = 0, countneg = 0, countpos = 0; printf("Hello!\n"); printf("I am a programm that will tell you how many\npositive, negative, even and odd numbers you have inputted.\n"); printf("You can start inputting numbers. When you're finished input the number 0 to let me know you're done.\n"); i = scanf("%d",&number); while(number!=0 && i==1) { if (number < 0) countneg++; else countpos++; if(number%2==0) counteven++; else countodd++; i = scanf("%d",&number); } printf("\nPositive Numbers : %d\nNegative Numbers : %d\nEven Numbers : %d\nOdd Numbers : %d", countpos, countneg, counteven, countodd); return 0; }
Vous devez formater votre code correctement, mais de toute façon l'utilisation de scanf
n'est pas le problème ici, voir la réponse ci-dessous.
J'ai trouvé quelques problèmes dans votre code.
% d
. Cette section de code doit ressembler à ceci int number, counteven = 0, countodd = 0, countneg = 0, countpos = 0;
while(( 1 == scanf("%d",&number) ) && ( 0 != number )) { if (number < 0) countneg++; else countpos++; if (number % 2 == 0) counteven++; else countodd++; }
while(( 1 == scanf("%d",&number) ) && ( 0 != number )) { //code }
int loop = ( 1 == scanf("%di",&number) ) && ( 0 != number ); while( loop ) { //code }
( 1 == scanf("%d",&number) ) && ( 0 != number ) ^
Vous ajoutez des valeurs en dehors de votre boucle! Comment cela fonctionne-t-il? Essayez de nous dire en anglais comment vous résoudriez ce problème. Vous traduirez cela en code réel par la suite.