1
votes

Comptez les nombres positifs, négatifs, pairs et impairs après que l'utilisateur a entré autant de valeurs qu'il le souhaite

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


1 commentaires

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.


3 Réponses :


3
votes

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


0 commentaires

-1
votes

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


1 commentaires

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.



2
votes

J'ai trouvé quelques problèmes dans votre code.

  1. à quoi sert de placer i dans % d . Cette section de code doit ressembler à ceci
 int number, counteven = 0, countodd = 0, countneg = 0, countpos = 0;
  1. N'assignez pas de comparaisons en variables. Cela conduit à de mauvaises sorties.

    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
    }
  1. Si vous souhaitez calculer quelque chose en continu, mettez ces calculs dans une boucle . @Blaze l'a mentionné.
    int loop = ( 1 == scanf("%di",&number) ) && ( 0 != number );
    while( loop )
    {
        //code
    }
  1. La dernière chose est que vous avez utilisé beaucoup de variables inutilisées. Si vous ne l'utilisez pas, supprimez-les
( 1 == scanf("%d",&number) ) && ( 0 != number )
               ^


0 commentaires