Fonctions et calculatrice en C
Résolu
limbergh
Messages postés
658
Date d'inscription
Statut
Membre
Dernière intervention
-
limbergh Messages postés 658 Date d'inscription Statut Membre Dernière intervention -
limbergh Messages postés 658 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai fait une calculatrice avec des fonctions en c (avec les pointeurs) et elle fonctionne.
J'ai essayé d'en faire une autre sans pointeur et la ça pose problème..
Voici mon code ;
si quelqu'un peut m'expliquer mon erreur...
Merci d'avance
j'ai fait une calculatrice avec des fonctions en c (avec les pointeurs) et elle fonctionne.
J'ai essayé d'en faire une autre sans pointeur et la ça pose problème..
Voici mon code ;
#include <stdio.h> #include <stdlib.h> /* fonction calcul 1*/ int calcul(int n) { printf("\n entrez un nombre : "); scanf("%d", n); return n; } /*fonction de l'operateur*/ char operateur(char op) { printf("\nentrez l'operateur : "); scanf(" %c", op); return op; } int main(int argc, char *argv[]) { int n,n1,n2,r,choix; char op; do { printf("-1- CALCULATRICE \n\n\n"); printf("-0- FIN DE PROGRAMME \n\n\n"); printf("votre choix===========>"); scanf("%d", &choix); switch(choix) { case 1: { n1=calcul( n); operateur( op); n2=calcul( n); } if (op=='+') { r=n1+n2; printf("\n%d\n\n", r); } if (op=='-') { r=n1-n2; printf("\n%d\n", r); } if (op=='/') { r=n1/n2; printf("\n%d\n", r); } if (op=='*') { r=n1*n2; printf("\n%d\n", r); } default : if (choix > 1) printf("\n\n mauvais choix!!!\n\n\n"); break; } } while(choix!=0); system("PAUSE"); return 0; }
si quelqu'un peut m'expliquer mon erreur...
Merci d'avance
A voir également:
- Fonctions et calculatrice en C
- Fonction si et - Guide
- Calculatrice gratuit - Télécharger - Calcul & Conversion
- Installer calculatrice - Télécharger - Calcul & Conversion
- Ma-calculatrice - Télécharger - Calcul & Conversion
- Calculatrice windows 7 - Télécharger - Calcul & Conversion
7 réponses
Salut
D'abord la syntaxe du scanf n'est pas correcte !
c'est scanf("%d", &n) avec le et commercial devant le nom de variable il s'agit de remplir une zone mémoire ^^
Peux-tu expliquer pourquoi ta fonction calcul a un paramètre ??
Il sert à rien puisque ta fonction RETOURNE le nombre n ^^
Et dans ton main tu fais juste n1 = calcul();
NB: pour le scanf de l'opérateur, normalement ya pas besoin du et commercial :P
Voilà c'est tout ce que je vois
++
Reltak
/* fonction calcul 1*/ int calcul(int n) { printf("\n entrez un nombre : "); scanf("%d", n)
D'abord la syntaxe du scanf n'est pas correcte !
c'est scanf("%d", &n) avec le et commercial devant le nom de variable il s'agit de remplir une zone mémoire ^^
Peux-tu expliquer pourquoi ta fonction calcul a un paramètre ??
Il sert à rien puisque ta fonction RETOURNE le nombre n ^^
Et dans ton main tu fais juste n1 = calcul();
NB: pour le scanf de l'opérateur, normalement ya pas besoin du et commercial :P
Voilà c'est tout ce que je vois
++
Reltak
re,
j'ai changer ce que tu m'as dit mais le calcul ne fonctionne toujours pas.
Il m'affiche bien d'entrez les deux nombres et l'opérateur et puis ça s'arrete la...
Je remet mon code pour visulaliser l'erreur si quelqd'un la trouve!!!
Merci
j'ai changer ce que tu m'as dit mais le calcul ne fonctionne toujours pas.
Il m'affiche bien d'entrez les deux nombres et l'opérateur et puis ça s'arrete la...
Je remet mon code pour visulaliser l'erreur si quelqd'un la trouve!!!
Merci
#include <stdio.h> #include <stdlib.h> /* fonction calcul 1*/ int calcul() { int n; printf("\n entrez un nombre : "); scanf("%d", &n); return n; } /*fonction de l'operateur*/ char operateur(char op) { printf("\nentrez l'operateur : "); scanf(" %c", &op); return op; } int main(int argc, char *argv[]) { int n1,n2,r,choix; char op; do { printf("-1- CALCULATRICE \n\n\n"); printf("-0- FIN DE PROGRAMME \n\n\n"); printf("votre choix===========>"); scanf("%d", &choix); switch(choix) { case 1: { n1=calcul( ); operateur( op); n2=calcul( ); } if (op=='+') { r=n1+n2; printf("\n%d\n\n", r); } if (op=='-') { r=n1-n2; printf("\n%d\n", r); } if (op=='/') { r=n1/n2; printf("\n%d\n", r); } if (op=='*') { r=n1*n2; printf("\n%d\n", r); } default : if (choix > 1) printf("\n\n mauvais choix!!!\n\n\n"); break; } } while(choix!=0); system("PAUSE"); return 0; }
Même donne pour la fonction operateur
Le paramètre ne sert à rien car tu le renvoie. Donc tu enlève le paramètre
et tu fais op = operateur(); dans ton main.
Normalement ca devrait mieux marcher :P
Et sinon est-ce qu'il y a un message d'erreur ou est-ce qu'il sort directement ?
Tu développes avec quoi ??
Donne un peu de détails STP
Reltak.
Le paramètre ne sert à rien car tu le renvoie. Donc tu enlève le paramètre
et tu fais op = operateur(); dans ton main.
Normalement ca devrait mieux marcher :P
Et sinon est-ce qu'il y a un message d'erreur ou est-ce qu'il sort directement ?
Tu développes avec quoi ??
Donne un peu de détails STP
Reltak.
Voilà mon code avec tes suggestions mais sans les break , il fonctionne et je
ne vois pas pourquoi non plus...
Si tu as des explications je suis preneur...( Je débute en c)...
Merci pour ta patience!!!
#include <stdio.h>
#include <stdlib.h>
/* fonction calcul 1*/
int calcul()
{
int n;
printf("\n entrez un nombre : ");
scanf("%d", &n);
return n;
}
/*fonction de l'operateur*/
char operateur()
{
char ope;
printf("\nentrez l'operateur : ");
scanf(" %c", &ope);
return ope;
}
int main(int argc, char *argv[])
{
int n1,n2,r,choix;
char op;
do
{
printf("-1- CALCULATRICE \n\n\n");
printf("-0- FIN DE PROGRAMME \n\n\n");
printf("votre choix===========>");
scanf("%d", &choix);
switch(choix)
{
case 1:
{
n1=calcul( );
op=operateur( );
n2=calcul( );
}
if (op=='+')
{
r=n1+n2;
printf("\n%d\n\n", r);
}
if
(op=='-')
{
r=n1-n2;
printf("\n%d\n", r);
}
if
(op=='/')
{
r=n1/n2;
printf("\n%d\n", r);
}
if
(op=='*')
{
r=n1*n2;
printf("\n%d\n", r);
}
default :
if (choix > 1)
printf("\n\n mauvais choix!!!\n\n\n");
break;
}
}
while(choix!=0);
system("PAUSE");
return 0;
}
ne vois pas pourquoi non plus...
Si tu as des explications je suis preneur...( Je débute en c)...
Merci pour ta patience!!!
#include <stdio.h>
#include <stdlib.h>
/* fonction calcul 1*/
int calcul()
{
int n;
printf("\n entrez un nombre : ");
scanf("%d", &n);
return n;
}
/*fonction de l'operateur*/
char operateur()
{
char ope;
printf("\nentrez l'operateur : ");
scanf(" %c", &ope);
return ope;
}
int main(int argc, char *argv[])
{
int n1,n2,r,choix;
char op;
do
{
printf("-1- CALCULATRICE \n\n\n");
printf("-0- FIN DE PROGRAMME \n\n\n");
printf("votre choix===========>");
scanf("%d", &choix);
switch(choix)
{
case 1:
{
n1=calcul( );
op=operateur( );
n2=calcul( );
}
if (op=='+')
{
r=n1+n2;
printf("\n%d\n\n", r);
}
if
(op=='-')
{
r=n1-n2;
printf("\n%d\n", r);
}
if
(op=='/')
{
r=n1/n2;
printf("\n%d\n", r);
}
if
(op=='*')
{
r=n1*n2;
printf("\n%d\n", r);
}
default :
if (choix > 1)
printf("\n\n mauvais choix!!!\n\n\n");
break;
}
}
while(choix!=0);
system("PAUSE");
return 0;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question#include <stdio.h> #include <stdlib.h> /* fonction calcul 1*/ int calcul() { int n; printf("\n entrez un nombre : "); scanf("%d", &n); return n; } /*fonction de l'operateur*/ char operateur() { char ope; printf("\nentrez l'operateur : "); scanf(" %c", &ope); return ope; } int main(int argc, char *argv[]) { int n1,n2,r,choix; char op; do { printf("-1- CALCULATRICE \n\n\n"); printf("-0- FIN DE PROGRAMME \n\n\n"); printf("votre choix===========>"); scanf("%d", &choix); switch(choix) { case 1: { n1=calcul( ); op=operateur( ); n2=calcul( ); if (op=='+') { r=n1+n2; printf("\n%d\n\n", r); } if(op=='-') { r=n1-n2; printf("\n%d\n", r); } if(op=='/') { r=n1/n2; printf("\n%d\n", r); } if(op=='*') { r=n1*n2; printf("\n%d\n", r); } break; } default : if (choix > 1) printf("\n\n mauvais choix!!!\n\n\n"); break; } } while(choix!=0); system("PAUSE"); return 0; }
Ce code devrait fonctionner paske avec ton code quand tu appuies sur 1 il fait juste les trois initialisations !