Fonctions et calculatrice 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
-
7 févr. 2008 à 13:24
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 - 7 févr. 2008 à 17:10
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 - 7 févr. 2008 à 17:10
A voir également:
- Fonctions et calculatrice en C
- Fonction si et - Guide
- Installer calculatrice sur mon portable - Télécharger - Calcul & Conversion
- Calculatrice gratuit - Télécharger - Calcul & Conversion
- Ma-calculatrice - Télécharger - Calcul & Conversion
- Calculatrice vocale en ligne - Forum Logiciels
7 réponses
reltak
Messages postés
261
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
14 janvier 2012
41
7 févr. 2008 à 13:36
7 févr. 2008 à 13:36
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
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
7 févr. 2008 à 13:44
7 févr. 2008 à 13:44
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; }
reltak
Messages postés
261
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
14 janvier 2012
41
7 févr. 2008 à 13:49
7 févr. 2008 à 13:49
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.
reltak
Messages postés
261
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
14 janvier 2012
41
7 févr. 2008 à 13:51
7 févr. 2008 à 13:51
Je me permets de me répondre car j'ai vu une anomalie dans ton switch...
tu fais
Il faut faire les opérations à l'intérieur du bloc du (case 1) et ne pas oublier l'instruction break; à la fin.
tu fais
switch(choix) { case 1: { ... } // et tu fais tes opérations ici }
Il faut faire les opérations à l'intérieur du bloc du (case 1) et ne pas oublier l'instruction break; à la fin.
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
7 févr. 2008 à 13:55
7 févr. 2008 à 13:55
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
reltak
Messages postés
261
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
14 janvier 2012
41
7 févr. 2008 à 14:01
7 févr. 2008 à 14:01
#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 !
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
7 févr. 2008 à 14:12
7 févr. 2008 à 14:12
Salut
Sinon à la place de n1=..., op=operateur(). etc.
Tu peux mettre tout simplement : scanf("%d%c%d",&n1,&op,&n2);
Ainsi l'utilisateur pourra écrire directement son opération : 5+7 et valider.
Cordialement
Sinon à la place de n1=..., op=operateur(). etc.
Tu peux mettre tout simplement : scanf("%d%c%d",&n1,&op,&n2);
Ainsi l'utilisateur pourra écrire directement son opération : 5+7 et valider.
Cordialement
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
7 févr. 2008 à 17:10
7 févr. 2008 à 17:10
Merci à tout le monde pour vos réponses!!!