Probleme D'Un Programme En Langage C
Résolu
Vince
-
SmallFitz Messages postés 351 Date d'inscription Statut Membre Dernière intervention -
SmallFitz Messages postés 351 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà mon problème, je suis en 3eme, et donc débutant en langage C,
J'ai écris un programme permettant de rassembler les additions, soustractions, multiplication, division ainsi que la racine carrée d'un nombre et x^y,
je compile donc le programme ( Dev C++ )
qui me dit qu'il n'y a pas d'erreur,
jouvre donc le programme, mais ( le programme viendra si dessous ), dès que j'entre la lettre pour le switch-case, une fenetre me dis que le programme "OP.exe" doit fermer car il a rencontré une erreur, est ce du au programme ? ou autre chose ?
voilà le programme :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main (void)
{
int a;
puts("Type De Calcul");
scanf("%s", a);
autre:
switch (a)
{
case 'a': goto add;
case 's': goto sou;
case 'm': goto mul;
case 'd': goto div;
case 'p': goto xpy;
case 'r': goto rc;
}
add:
{
int a, b;
puts("Entrez 2 valeurs");
scanf("%d %d", &a, &b);
printf("%d\n", a+b);
puts("Autre Calcul ?");
scanf("%s", &a);
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
sou:
{
int a, b;
puts("Entrez 2 valeurs");
scanf("%d %d", &a, &b);
printf("%d\n", a-b);
puts("Autre Calcul ?");
scanf("%s", &a);
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
mul:
{
int a, b;
puts("Entrez 2 valeurs");
scanf("%d %d", &a, &b);
printf("%d\n", a*b);
puts("Autre Calcul ?");
scanf("%s", &a);
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
div:
{
int a, b;
puts("Entrez 2 valeurs");
scanf("%d %d", &a, &b);
printf("%d\n", a/b);
puts("Autre Calcul ?");
scanf("%s", &a);
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
xpy:
{
int a, b;
puts("Entrez 2 valeurs");
scanf("%f", &a, &b);
printf("%f\n", pow( a, b ));
puts("Autre Calcul ?");
scanf("%s", &a);;
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
rc:
{
int a, b;
puts("Entrez 1 valeur");
scanf("%f", &a);
printf("%f\n", sqrt( a ));
puts("Autre Calcul ?");
scanf("%s", &a);
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
fin:;
}
Merci d'avance,
Vince'
Voilà mon problème, je suis en 3eme, et donc débutant en langage C,
J'ai écris un programme permettant de rassembler les additions, soustractions, multiplication, division ainsi que la racine carrée d'un nombre et x^y,
je compile donc le programme ( Dev C++ )
qui me dit qu'il n'y a pas d'erreur,
jouvre donc le programme, mais ( le programme viendra si dessous ), dès que j'entre la lettre pour le switch-case, une fenetre me dis que le programme "OP.exe" doit fermer car il a rencontré une erreur, est ce du au programme ? ou autre chose ?
voilà le programme :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main (void)
{
int a;
puts("Type De Calcul");
scanf("%s", a);
autre:
switch (a)
{
case 'a': goto add;
case 's': goto sou;
case 'm': goto mul;
case 'd': goto div;
case 'p': goto xpy;
case 'r': goto rc;
}
add:
{
int a, b;
puts("Entrez 2 valeurs");
scanf("%d %d", &a, &b);
printf("%d\n", a+b);
puts("Autre Calcul ?");
scanf("%s", &a);
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
sou:
{
int a, b;
puts("Entrez 2 valeurs");
scanf("%d %d", &a, &b);
printf("%d\n", a-b);
puts("Autre Calcul ?");
scanf("%s", &a);
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
mul:
{
int a, b;
puts("Entrez 2 valeurs");
scanf("%d %d", &a, &b);
printf("%d\n", a*b);
puts("Autre Calcul ?");
scanf("%s", &a);
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
div:
{
int a, b;
puts("Entrez 2 valeurs");
scanf("%d %d", &a, &b);
printf("%d\n", a/b);
puts("Autre Calcul ?");
scanf("%s", &a);
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
xpy:
{
int a, b;
puts("Entrez 2 valeurs");
scanf("%f", &a, &b);
printf("%f\n", pow( a, b ));
puts("Autre Calcul ?");
scanf("%s", &a);;
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
rc:
{
int a, b;
puts("Entrez 1 valeur");
scanf("%f", &a);
printf("%f\n", sqrt( a ));
puts("Autre Calcul ?");
scanf("%s", &a);
switch (a)
{
case 'O': goto autre;
case 'N': goto fin;
}
}
fin:;
}
Merci d'avance,
Vince'
A voir également:
- Probleme D'Un Programme En Langage C
- Langage ascii - Guide
- Mettre en veille un programme - Guide
- Programme demarrage windows - Guide
- Langage binaire - Guide
- Forcer la fermeture d'un programme - Guide
3 réponses
Arg alors il y a quelque chose qui ne va pas, c'est les goto (il faut éviter autant que possible de les utiliser si tu veux faire un "bon" programme.
De plus ton main est sensé retourner un int donc devrait se terminer par :
Voici le code que je te propose :
A l'exécution :
Bonne chance
De plus ton main est sensé retourner un int donc devrait se terminer par :
return 0;
Voici le code que je te propose :
#include <stdlib.h> #include <math.h> #include <stdio.h> int main(){ double x,y,res; char op; do{ printf("saisir une opération: exemple : 3 + 5\n"); }while(scanf("%lf %c %lf",&x,&op,&y)!=3); printf("operande1 = %lf\n",x); printf("operateur = %c\n",op); printf("operande2 = %lf\n",y); switch(op){ case '+': res = x + y; break; case '-': res = x - y; break; case 'p': res = pow(x,y); break; //... default: fprintf(stderr,"opérateur inconnu !\n"); return 1; } printf("resultat = %lf\n",res); return 0; }
A l'exécution :
(mando@aldur) (~) $ gcc -lm -W -Wall -o plop.exe plop.c (mando@aldur) (~) $ ./plop.exe saisir une opération: exemple : 3 + 5 3 p 5 operande1 = 3.000000 operateur = p operande2 = 5.000000 resultat = 243.000000
Bonne chance
int a; puts("Type De Calcul"); scanf("%d", &a);
scanf doit lire un entier (int) %d et il faut passer l'adresse de a : &a