Calculatrice et fonction en C
Résolu
limbergh
Messages postés
658
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis débutant en C et j'assaye de faire une calculatrice dans ce langage en utilisant
des fonctions. Mon problème est que aucune de mes fonctions ne
fonctionnent (et je suis sur que l'erreur vient de mon code).
Je m'explique sur mon code.
C'est un switch qui demande d'introduire un nombre, après l'opérateur et enfin
un deuxième nombre (rien de très élaboré!!!). De plus je ne sais pas comment
appeler mes fonctions pour afficher le résultat.
Merci d'avance pour vos explications.
Limbergh
je suis débutant en C et j'assaye de faire une calculatrice dans ce langage en utilisant
des fonctions. Mon problème est que aucune de mes fonctions ne
fonctionnent (et je suis sur que l'erreur vient de mon code).
Je m'explique sur mon code.
C'est un switch qui demande d'introduire un nombre, après l'opérateur et enfin
un deuxième nombre (rien de très élaboré!!!). De plus je ne sais pas comment
appeler mes fonctions pour afficher le résultat.
Merci d'avance pour vos explications.
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 1\n"); printf("-2- operateur\n"); printf("-3- nombre 2\n"); printf("-4- resultat\n"); printf("votre choix===========>"); scanf("%d", &choix); switch(choix) { case 1 : { int calcul(int n1); } case 2 : { char operateur(char op); } case 3 : { int calcul2(int n2); } } } while(choix=!0); system("PAUSE"); return 0; }
A voir également:
- Do_op.c
- Fonction si et - Guide
- Calculatrice gratuit - Télécharger - Calcul & Conversion
- Installer calculatrice - Télécharger - Calcul & Conversion
- Fonction miroir - Guide
- Ma-calculatrice - Télécharger - Calcul & Conversion
12 réponses
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; }
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
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; }
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
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?
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...
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 ;)
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