[Débutant]Calculette en langage c multi-choix

Fermé
zalt - Modifié par zalt le 29/11/2011 à 17:04
beam1916 Messages postés 153 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 2 juin 2022 - 29 nov. 2011 à 18:06
Bonjour, je développe une calculette en langage c, je suis bloqué à la partie moteur des opérations, le choix des différentes opération fonctionne en phase test d'affichage.

C'est dans un but perso et pour "aller plus loin".

Voici le schéma de l'appli que j'ai fais :


calculette => menu =>01 Addition => deux variables choisies => affichage résultat
02 => Soustraction => deux variables choisies
03=> Division => deux variables choisies
04=> Modulo => deux variables choisies


Pour naviguer dedans il faut entrer les nombres correspondant aux opérations à effectuer et entrer les variables. Je précise que je code sous code blocks, sous le moteur MinGW pour gnugcc.

Voici le code erroné :


  
#include <stdio.h>    
#include <stdlib.h>    
#include <math.h>    
int main(int argc, char *argv[])    
{    
    printf("\n=>Bienvenue dans la calculette<=\n \n");    
}    

int menu()    
{    

//menu de l'application    
printf("01 - Additionner\n");    
printf("02 - Soustraire\n");    
printf("03 - Diviser\n");    
printf("04 - Modulo\n");    
    int choix = 0;    
while (choix <1 || choix > 5)    

{    



scanf("%d", &choix);    

    }    

return choix;    
}    


int nombre1;    
switch (menu())    
{    
//addition    
case 1:    

printf("Veuillez saisir le premier nombre a additionner\n \n");    
scanf("%d", &nombre1);    
printf("Veuillez saisir le deuxième nombre a additionner \n \n ")    
scanf("%d", &nombre2);    
int resultat1()  = int %nombre1% + int %nombre2%    
printf ("%resultat1%")    
break;    
//soustraction    

case 2:    
printf("Veuillez saisir le premier nombre a soustraire\n \n");    
scanf("%d", &nombre1);    
printf("Veuillez saisir le deuxieme nombre a additionner \n \n ")    
scanf("%d", &nombre2);    
int resultat2()  = int %nombre1% * int %nombre2%    
break;    

//division    
case 3:    
printf("Veuillez saisir le premier a diviser\n \n");    
scanf("%d", &nombre1);    
printf("Veuillez saisir le deuxième nombre a diviser \n \n ");    
scanf("%d", &nombre2);    
int resultat3()  = int %nombre1% / int %nombre2% ;    
break;    

//modulo    
case 4:    
printf("Veuillez saisir le premier nombre a moduler\n \n");    
scanf("%d", &nombre1);    
printf("Veuillez saisir le deuxième nombre a moduler \n \n ");    
scanf("%d", &nombre2);    
int resultat4()  = int %nombre1% % int %nombre2%    
break;    


    return 0;    
}    
}    
   






Merci d'avance pour votre aide, et bonne soirée, zalt.


1 réponse

beam1916 Messages postés 153 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 2 juin 2022 5
29 nov. 2011 à 18:06
Salut.

A mon avis tu fais compliqué quand on peut faire simple. C'est peut être exprès pour t'entraîner ;) Parfait.
Je souligne que je suis pas un pro et ça fait longtemps que j'ai pas touché au C donc je peux me tromper.
Déjà au niveau du choix de l'opération, je préfère: " while (choix<1 || choix >4) " Sinon si quelqu'un rentre 5 bah... la boucle s'arrêtera alors que tu n'as pas prévu ce choix :p
Ensuite,tu n'as déclaré que nombre1. Je n'ai pas vu nombre2. Aussi il est toujours préférable d'initialiser toutes les variables (int choix = 0;) . Et une fois que tu as initialisé une variable, tu n'as plus qu'a écrire son nom(sans son type et sans les "%") dans tes fonctions. Donc, au lieu d'écrire: "int resultat1() = int %nombre1% + int %nombre2%" tu écris "resultat1=nombre1+nombre2;" Alala ya plein de trucs hein lol. Faut pas oublier le point-virgule (;) à la fin des instructions. Les parenthèses que tu mets à resultat1 ne te servent à rien ici. Sauf si tu as une fonction résultats que tu prévois faire plus tard ;). Voilà en gros.
Si tu veux je peux te proposer une façon de faire simple (parce que peut être que tu veux trouver toi-même) ;)
0