2017-10-16 2 views
0

bonsoir,y/n boucle à la fin d'une fonction

Voici mon code. Je fais une petite calculatrice mais je me bats à la fin pour que la fonction répète avec une boucle y/n. J'ai regardé les autres mais je n'arrive pas à trouver la bonne réponse. Merci.

#include <stdio.h> 

int main() 
{ 
    int n, num1, num2, result; 
    char answer; 
    { 
    printf("\nWhat operation do you want to perform?\n"); 
    printf("Press 1 for addition.\n"); 
    printf("Press 2 for subtraction.\n"); 
    printf("Press 3 for multiplication.\n"); 
    printf("Press 4 for division.\n"); 
    scanf("%d", &n); 
    printf("Please enter a number.\n"); 
    scanf("%d", &num1); 
    printf("Please enter the second number.\n"); 
    scanf("%d", &num2); 
    switch(n) 
    { 
     case 1: result = num1 + num2; 
       printf("The addition of the two numbers is %d\n", result); 
       break; 
     case 2: result = num1 - num2; 
       printf("The subtraction of the two numbers is %d\n", result); 
       break; 
     case 3: result = num1 * num2; 
       printf("The multiplication of the two numbers is %d\n", result); 
       break; 
     case 4: result = num1/num2; 
       printf("The division of the two numbers is %d\n", result); 
       break; 
     default: printf("Wrong input!!!"); 
    } 
    printf("\nDo you want to continue, y/n?\n"); 
    scanf("%c", &answer); 
    while(answer == 'y'); 

    } 
    return 0; 
} 
+0

Vous utilisez une boucle incorrecte. S'il vous plaît voir un exemple de exemple alors que vous pourriez le faire correctement. – Talal

+0

Enveloppez le tout dans une boucle post-testée. –

+1

Je pense que vous voulez une boucle ['do/while'] (https://www.tutorialspoint.com/cprogramming/c_do_while_loop.htm). –

Répondre

3

Vous avez ce code

char answer; 
    { 
    printf("\nWhat operation do you want to perform?\n"); 
    //... 
    //... more code 
    //... 
    printf("\nDo you want to continue, y/n?\n"); 
    scanf("%c", &answer); 
    while(answer == 'y'); 

    } 

Essayez de changer à:

char answer; 
    do { 
    printf("\nWhat operation do you want to perform?\n"); 
    //... 
    //... more code 
    //... 
    printf("\nDo you want to continue, y/n?\n"); 
    scanf("%c", &answer); 
    } while(answer == 'y'); 

Ainsi, la forme de base est la suivante:

do { 
    // code to repeat 
} while (Boolean-expression); 

BTW - Vous devriez toujours vérifier la valeur renvoyée par scanf

Exemple:

if (scanf("%c", &answer) != 1) 
{ 
    // Add error handling 
} 

Notez également que vous voulez souvent un espace avant %c pour enlever tout espace blanc (y compris les nouvelles lignes) dans le flux d'entrée. Comme

if (scanf(" %c", &answer) != 1) 
{ 
    // Add error handling 
}