2015-08-25 1 views
-3

Je souhaite que l'utilisateur saisisse 8 chiffres. S'ils entrent moins de 8 numéros, le programme va quitter.Quitter 1 si le nombre total saisi n'est pas 8

Que dois-je faire en cas d'instruction?
Devrais-je mettre dans ma boucle somme + = i alors si somme pas 8 puis quitter?

C'est ce que je suis arrivé à ce jour, mais il ne fonctionne pas:

int main() { 
    int i, numb; 
    int sum = 0; 

    // the loop to enter 8 numb 
    printf("enter 8 numbers"); 

    if (i=0;i<8;i++) { 
     scanf("%d", &numb); 
     sum =+i; 
     if (sum < 8) 
      exit(1); 
    } 

    return (0); 
} 
+6

Montrez-nous le code que vous avez écrit pour cela, ou au moins votre tentative. Expliquez pourquoi vous pensez que cela ne fonctionne pas et comment vous ** pensez ** que vous y remédieriez. Votre question va juste se fermer à la minute car elle montre peu/pas d'effort. – Stormie

+0

Quel est votre code? –

+0

Avez-vous déjà essayé quelque chose? –

Répondre

-1

Voici un algorithme qui fait exactement ce que vous voulez:

1. Set a counter to 0 
2. While not end of file (EOF) do 

    1. Read a number 
    2. Increase counter by 1 

3. If sum counter equals 8, return 1, else return 0 

et votre code réparé (puisque vous avez enfin posté ce que vous avez essayé de faire):

int main() 
{ 
    int i, numb, counter = 0; 
    printf("enter 8 numbers"); 

    while(scanf("%d", &numb) != EOF) 
    { 
     counter++; 
    } 

    if (counter < 8) 
    { 
     printf("not enough numbers\n"); 
     exit(1); 
    } 

    return (0); 
} 

Démo en direct: http://ideone.com/iiOl1A

0

Vous voulez que l'utilisateur entre 8 numéros et puisque vous n'avez rien mentionné sur la somme, je suppose que peu importe ce que c'est. Enlevez complètement la condition intérieure if et remplacez l'externe par une boucle.

Voici le code:

for (i = 0; i < 8; i++) { 
    scanf("%d", &numb); 
    //Do whatever you want to do with the number here 
+0

Et s'il n'y avait pas 8 numéros à l'entrée? Lisez la question encore une fois, détrompez-vous. – 5208760

0

En raison de la façon dont la console fonctionne, vous ne pouvez pas dire où l'EOF est. Vous pouvez réaliser ce que vous voulez en vérifiant les séparateurs entre les nombres. Si vous souhaitez que les nombres ne soient pas inférieurs à 8 sur la même ligne, vous pouvez le faire de cette manière.

int main() { 
    int i, numb; 
    int sum = 0; 
    char separator=' '; 
    // the loop to enter 8 numb 
    printf("enter 8 numbers"); 
    for (i = 0; i<8; i++) 
    { 
     if (separator == '\n')//enter character encountered 
      break; 
     scanf("%d%c", &numb,&separator); 
    } 
    if (i < 8) 
     exit(1); 
    return (0); 
}