Boucle d’aide

Salut les gars … c‘est encore le débutant 🙂 Je prépare un programme qui calcule l’aire d’un sortingangle ou d’un carré, puis demande à l’utilisateur s’il souhaite en calculer un autre. Le code fonctionne au point qu’il va calculer l’aire de l’une ou l’autre forme, mais ne continue pas avec le rest du code. Par exemple, si carré est sélectionné, la surface est calculée, puis retourne à l’invite du côté du carré. Je suppose que c’est à nouveau la boucle en boucle pour toujours, mais je ne sais pas comment arrêter la boucle sans fin.

Heres mon code:

#include #include int main(void) { float sq_side, sorting_base, sorting_height, Area; char shape, cont = 'Y'; printf("Please select the type of shape you desire to calculate the area for:\n"); printf(" \n"); printf(" Square = S Triangle = T \n"); printf(" ------- x \n"); printf(" : : xx \n"); printf(" : : xx \n"); printf(" ------- xxxxxxx \n"); printf(" \n"); printf("Please select either S or T:"); scanf("%c", &shape); while (cont != 'n' && cont != 'N') if (shape == 'S' || shape == 's') { printf("What is the length of the sides of the square?:\n"); scanf("%f", &sq_side); Area = pow(sq_side,2); printf("The area of the square is %.2f.\n", Area); } else if (shape == 'T' || shape == 't') { printf("What is the length of the base of the sortingangle?:\n"); scanf("%f", &sorting_base); printf("What is the height of the sortingangle?:\n"); scanf("%f", &sorting_height); Area = 0.5 * sorting_base * sorting_height; printf("The area of the sortingangle is %.2f.\n", Area); } else { printf("Error: You have select an incorrect option."); } printf("Do you wish to calculate a new shape?"); fflush(stdin); scanf("%c", &cont); return(0); } 

Il vous manque des accolades. Le résultat était que seule l’instruction if (qui inclut la chaîne de ifs) était en réalité dans le corps de la boucle. Le printf (et plus tard) ne fait pas partie de cette instruction composée.

  while (cont != 'n' && cont != 'N') { if (shape == 'S' || shape == 's') { printf("What is the length of the sides of the square?:\n"); scanf("%f", &sq_side); Area = pow(sq_side,2); printf("The area of the square is %.2f.\n", Area); } else if (shape == 'T' || shape == 't') { printf("What is the length of the base of the sortingangle?:\n"); scanf("%f", &sorting_base); printf("What is the height of the sortingangle?:\n"); scanf("%f", &sorting_height); Area = 0.5 * sorting_base * sorting_height; printf("The area of the sortingangle is %.2f.\n", Area); } else { printf("Error: You have select an incorrect option."); } printf("Do you wish to calculate a new shape?"); fflush(stdin); scanf("%c", &cont); } 

Il n’y a pas de crochets pour vous en boucle. Ainsi, le code situé en dehors de votre bloc if elseif else n’est pas appelé.

actuellement votre code se traduit par

 while (cont != 'n' && cont != 'N') { if (shape == 'S' || shape == 's') {} else if (shape == 'T' || shape == 't') {} else {} } printf("Do you wish to calculate a new shape?"); fflush(stdin); scanf("%c", &cont); 

quand tu veux

 while (cont != 'n' && cont != 'N') { if (shape == 'S' || shape == 's') {} else if (shape == 'T' || shape == 't') {} else {} printf("Do you wish to calculate a new shape?"); fflush(stdin); scanf("%c", &cont); } 

N’oubliez pas que si vous n’incluez pas d’accolades dans une structure de contrôle, elle n’appelle que l’instruction suivante, qui dans votre cas est une série d’instructions nestedes if-else if.

J’espère que ça aide – Val