Calculatrice et fonction en C
Résolu/Fermé
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
-
6 févr. 2008 à 17:24
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 févr. 2008 à 00:21
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 févr. 2008 à 00:21
A voir également:
- Do_op.c
- Fonction si et - Guide
- Installer calculatrice sur mon portable - Télécharger - Calcul & Conversion
- Calculatrice gratuit - Télécharger - Calcul & Conversion
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
12 réponses
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
6 févr. 2008 à 18:26
6 févr. 2008 à 18:26
bonsoir,
j'ai changer des accolades mais je n'ai toujours pas de résultats...
Si quelqu'un peut m'aider....
AU SECOUOUUORS...
Non sans blague, merci d'avance pour vos interventions.
Limbergh
j'ai changer des accolades mais je n'ai toujours pas de résultats...
Si quelqu'un peut m'aider....
AU SECOUOUUORS...
Non sans blague, merci d'avance pour vos interventions.
Limbergh
#include <stdio.h> #include <stdlib.h> int n1,n2,r,choix; char op; /* fonction calcul 1*/ int calcul(int n1) { printf("entrez un nombre : "); scanf("%d", &n1); return n1; } /*fonction de l'operateur*/ char operateur(char op) { printf("entrez l'operateur : "); scanf(" %c", &op); return op; } /*fonction du nombre 2*/ int calcul2(int n2) { printf("entrez un nombre : "); scanf("%d", &n2); return n2; } int main(int argc, char *argv[]) { do { printf("-1- nombre et operateur 1\n"); printf("-2- resultat\n"); printf("votre choix===========>"); scanf("%d", &choix); switch(choix) { case 1: { calcul( n1); operateur( op); calcul2( n2); } case 2: if (op=='+') { r=n1+n2; printf("%d\n", r); } if (op=='-') { r=n1-n2; printf("%d\n", r); } if (op=='/') { r=n1/n2; printf("%d\n", r); } if (op=='*') { r=n1*n2; printf("%d\n", r); } } } while(choix!=0); system("PAUSE"); return 0; }
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
6 févr. 2008 à 17:33
6 févr. 2008 à 17:33
quand tu appelles une fonction il ne faut pas metre de type
ex: calcul( n1); (appel de la fonction calcul)
tes accolades aussi dans les cases sont inutiles car tu n'as qu'une seule instruction
ex: calcul( n1); (appel de la fonction calcul)
tes accolades aussi dans les cases sont inutiles car tu n'as qu'une seule instruction
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
6 févr. 2008 à 18:00
6 févr. 2008 à 18:00
salut,
voilà, j'ai "aéré" un peu mon code mais (désolé je suis vraiment au début en c) quand je
veux afficher le résultat, il m'indique "0" dans ma variable.
Peux-tu m'aiguiller?????
Merci d'avance
voilà, j'ai "aéré" un peu mon code mais (désolé je suis vraiment au début en c) quand je
veux afficher le résultat, il m'indique "0" dans ma variable.
Peux-tu m'aiguiller?????
Merci d'avance
#include <stdio.h> #include <stdlib.h> int n1,n2,r,choix; char op; /* fonction calcul 1*/ int calcul(int n1) { printf("entrez un nombre : "); scanf("%d", &n1); return n1; } /*fonction de l'operateur*/ char operateur(char op) { printf("entrez l'operateur : "); scanf(" %c", &op); return op; } /*fonction du nombre 2*/ int calcul2(int n2) { printf("entrez un nombre : "); scanf("%d", &n2); return n2; } int main(int argc, char *argv[]) { do { printf("-1- nombre et operateur 1\n"); printf("-2- resultat\n"); printf("votre choix===========>"); scanf("%d", &choix); switch(choix) { case 1: calcul( n1); operateur( op); calcul2( n2); case 2: { if (op=='+') r=n1+n2; printf("%d\n", r); } { if (op=='-') r=n1-n2; printf("%d\n", r); } { if (op=='/') r=n1/n2; printf("%d\n", r); } { if (op=='*') r=n1*n2; printf("%d\n", r); } } } while(choix!=0); system("PAUSE"); return 0; }
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
6 févr. 2008 à 18:25
6 févr. 2008 à 18:25
c'est parce que les variables de tes fonctions et de ton main ne sont que des copies pour modifier les variables du main en utilisant les fonctions il te faut utilisé les pointeurs c'est un peu compliqué mais ça donne ça
#include <stdio.h> #include <stdio.h> #include <stdlib.h> int n1,n2,r,choix; char op; /* fonction calcul 1*/ int calcul(int *n1) { printf("entrez un nombre : "); scanf("%d", n1); return *n1; } /*fonction de l'operateur*/ char operateur(char *op) { printf("entrez l'operateur : "); scanf(" %c", op); return *op; } /*fonction du nombre 2*/ int calcul2(int *n2) { printf("entrez un nombre : "); scanf("%d", n2); return *n2; } int main(int argc, char *argv[]) { do { printf("-1- nombre et operateur 1\n"); printf("-2- resultat\n"); printf("votre choix===========>"); scanf("%d", &choix); switch(choix) { case 1:{ calcul( &n1); operateur( &op); calcul2( &n2);} break; case 2: { if (op=='+'){ r=n1+n2; printf("%d\n", r); } if (op=='-'){ r=n1-n2; printf("%d\n", r); } if (op=='/'){ r=n1/n2; printf("%d\n", r); } if (op=='*'){ r=n1*n2; printf("%d\n", r); } } break; } } while(choix!=0); system("PAUSE"); return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
6 févr. 2008 à 18:29
6 févr. 2008 à 18:29
merci mype,
on s'est croisé dans nos messages...
on s'est croisé dans nos messages...
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
6 févr. 2008 à 18:31
6 févr. 2008 à 18:31
de rien ;)
si tu n'as plus de soucis n'oublies pas de metre en resolu
si tu n'as plus de soucis n'oublies pas de metre en resolu
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
6 févr. 2008 à 18:34
6 févr. 2008 à 18:34
au fait,
quand tu utilises des pointeurs, j'ai vu que tu avais retiré tous les "&" qui était dans les
scanf des fonctions et tu les as rajouté dans l'appel des fonctions (en case 1)...
Pourquoi?
quand tu utilises des pointeurs, j'ai vu que tu avais retiré tous les "&" qui était dans les
scanf des fonctions et tu les as rajouté dans l'appel des fonctions (en case 1)...
Pourquoi?
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
6 févr. 2008 à 18:49
6 févr. 2008 à 18:49
dans les scanf en faite c'est comme si tu écrivais scanf(" %c", &*op); comme j'utilise les pointeurs et comme & et * s'annule entre eux donc au lieu de metre &*op on peu metre seulement op pour faire plus propre
ensuite dans l'appel des fonctions je passe en parametre l'adresse de la variable op avec le & comme ça avec le pointeur de la fonction je vais pouvoir modifier la valeur de la variable du main dans la fonction
voila j'espere que j'ai été clair parce qu'il est est vrai que les pointeurs en C c'est pas tres simple...
ensuite dans l'appel des fonctions je passe en parametre l'adresse de la variable op avec le & comme ça avec le pointeur de la fonction je vais pouvoir modifier la valeur de la variable du main dans la fonction
voila j'espere que j'ai été clair parce qu'il est est vrai que les pointeurs en C c'est pas tres simple...
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
6 févr. 2008 à 18:54
6 févr. 2008 à 18:54
merci pour ta patience et tes explications mype...
Bonne soirée
Bonne soirée
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
6 févr. 2008 à 23:47
6 févr. 2008 à 23:47
Salut,
Je sais le problème est résolu, mais je tenais à te dire :
Tu utilises les accolades dans tes "cases" de ton switch. Et tu as oublié de mettre des break ;)
Je sais le problème est résolu, mais je tenais à te dire :
Tu utilises les accolades dans tes "cases" de ton switch. Et tu as oublié de mettre des break ;)
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
6 févr. 2008 à 23:59
6 févr. 2008 à 23:59
Salut,
merci de m'avoir fait cette remarque et c'est vrai que j'ai mis du temps pour m'en rendre compte...
Par hazard, tu n'aurai pas un site ou je peux trouver des exercices avec des fonctions pas trop compliqué pour commencer,
j'ai un peu dur avec celle-ci dans leurs utilisations...
Meric d'avance
merci de m'avoir fait cette remarque et c'est vrai que j'ai mis du temps pour m'en rendre compte...
Par hazard, tu n'aurai pas un site ou je peux trouver des exercices avec des fonctions pas trop compliqué pour commencer,
j'ai un peu dur avec celle-ci dans leurs utilisations...
Meric d'avance
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
7 févr. 2008 à 00:21
7 févr. 2008 à 00:21
Euh non, pas d'exercice sous la main. Désolé