Probleme avec switch [Résolu]

Signaler
Messages postés
28
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
19 février 2006
-
Messages postés
28
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
19 février 2006
-
Bonjour à tous

Je suis debutant en c++.Je viens de fabrique un petit prog pour choisir entre la convertion des euros en francs ou des francs en euros mais quand je compile, mon compilateur s'arrete sur la ligne ou il y a endl;

#include <cstdio>
#include <cstdlib>
#include
using namespace std;

int main()
{
int c, c2, exit;
float euros, francs;

printf("convertir");
printf("\n\n 1 - les euros en francs");
printf("\n 2 - les francs en euros");
printf("\n 3 - les euros en francs");
printf("\n\n\t Choix:\t");
scanf("%d", &c);

switch(c)
{
case 1:
printf("\n\n entrer la somme en euros");
scanf("%f", &euros);
printf("la valeur en francs est est: %f", francs=euros * 6.55957, francs);
endl:
return main();
}
break;


switch(c2)
{
case 2:
printf("\n\n entrer la somme en francs");
scanf("%f", &francs);
printf("la valeur en euros est est: %f", euros=francs/6.55957, euros);
endl;
return main();
}

break;

case 3:
printf("\n\nAppuyez sur un touche pour continuer...\n");
scanf("%d", &exit);
break;

default:
printf("\n\n Choix non valide\n\n\n");
return main();
}

return 0;
}

Au debut j'avais utiliser cin et cout pout mon prog mais ont m'a dit que printf etait mieux.La je suis un peut perdu en plus il y a des "signesé que je ne comprend pas trop comme %f.Normalent % c'est pas modulo?

Merci d'avance pour votre aide.

18 réponses

Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
c'est ça !!

voila le même programme avec une conversion en plus (un cas en plus) :

Et comme les martiens sont un peu tatillons sur leur monnaie, on est
obligé de convertir avec 5 chiffres après la virgule (d'où le %.5f dans
le cas 3)

Et tu n'a pas besoin de déclarer une nouvelle variable (donner un nom a
float) pour faire fonctionner le programme, il suffit de rajouter un
cas de traitement dans la boucle switch (il a fallu decaler la valeur
de sortie Reponse = 4 pour inserer le traitement de la nouvelle
conversion)





int main(int argc, char* argv[]) {



int Reponse = 0;

float euros, francs;



while (Reponse != 4) {



printf("convertir");

printf("\n\n 1 - les euros en francs");

printf("\n 2 - les francs en euros");

printf("\n 3 - les francs en ecus martiens");

printf("\n 4 - quitter");

printf("\n\n\t Choix:\t");

scanf("%d", &Reponse);



switch(Reponse) {



case 1:

printf("\n\n entrer la somme en euros : ");

scanf("%f", &euros);


printf("la valeur en francs de %f euros est : %.2f
francs\n", euros, euros * 6.55957);

break;





case 2:

printf("\n\n entrer la somme en francs : ");

scanf("%f", &francs);


printf("la valeur en euros de %f francs est : %.2f
euros\n", francs, francs/6.55957);

break;



case 3:

printf("\n\n entrer la somme en francs : ");

scanf("%f", &francs);


printf("la valeur en ecus martiens de %f francs est
: %.5f ecus martiens\n", francs, francs*194.23456);

break;



case 4:

printf("Au revoir\n");

return (0);

break;



default:

break;

}

}

}
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
tout dabord le switch :

switch(val) {
case X :
//instructions
break;
case ...
default :
//instr2
}

equivaut a :
if (val == X) {
//instructions
} else if (val == ...) {
}else {
//instr2
}

ensuite,
printf(motif, vars, ...)
remplace les % du motif par les vars. si par exemple tu as 2 "%d" dans ton motif, il faudra que tu mette 2 int dans les vars (printf("var1=%d et var2=%d\n", var1, var2); ou var1 et var2 sont des int).

enfin le "return main()" n'est pas bien, ton programme fera des appels recursifs qui ne sont pas necessaires dans ton cas (couts supplementaires). remplace par un while qui sarrete quand tu rentre la valeur d'arret.

ton prog donnerai ca:

int main()
{
int c, exit, arret;
float euros, francs;

arret=0;
while( ! arret) {
printf("convertir");
printf("\n\n 1 - les euros en francs");
printf("\n 2 - les francs en euros");
printf("\n 3 - quitter");
printf("\n\n\t Choix:\t");
scanf("%d", &c);

switch(c)
{
case 1:
printf("\n\n entrer la somme en euros");
scanf("%f", &euros);
francs=euros * 6.55957;
printf("la valeur en francs est est: %f\n", francs);
break;
case 2:
printf("\n\n entrer la somme en francs");
scanf("%f", &francs);
euros=francs/6.55957;
printf("la valeur en euros est est: %f\n", euros);
break;
case 3:
printf("\n\nAppuyez sur un touche pour continuer...\n");
scanf("%d", &exit);
arret = 1;
break;
default:
printf("\n\n Choix non valide\n\n\n");
}
return 0;
}
}
Messages postés
79
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
8 décembre 2006

C'est parce que tu as mis "endl:" au lieu de "endl;" Sinon je sais pas qui t'as dit ca mais cin et cout sont mieux que printf qui est une fonction du C "deprecated". A ta place j'utiliserais cout et cin... enfin ca n'est pas très important. Sinon % c'est bien le modulo mais %f indique au programme qu'on attend un flottant, c'est à admettre :)
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Une autre solution :

int main(int argc, char* argv[]) {



int Reponse = 0;

float euros, francs;



while (Reponse != 3) {



printf("convertir");

printf("\n\n 1 - les euros en francs");

printf("\n 2 - les francs en euros");

printf("\n 3 - quitter");

printf("\n\n\t Choix:\t");

scanf("%d", &Reponse);



switch(Reponse) {



case 1:

printf("\n\n entrer la somme en euros : ");

scanf("%f", &euros);


printf("la valeur en francs de %f euros est : %.2f
francs\n", euros, euros * 6.55957);

break;





case 2:

printf("\n\n entrer la somme en francs : ");

scanf("%f", &francs);


printf("la valeur en euros de %f francs est : %.2f
euros\n", francs, francs/6.55957);

break;



case 3:

printf("Au revoir\n");

return (0);

break;



default:

break;

}

}

}



Les %f et %d sont appelées des chaines de format. C'est une
syntaxe utilisé avec les fonctions de la famille printf (sprintf,
vprintf...) pour permettre une mise en forme plus précise des sorties.
ainsi %f indique qu'il faut imprimer un chiffre à virgule dans le
format par défaut (5 ou 6 chiffres après la virgule mais ça dépend.),
tandis que %.2f indique qu'il faut afficher uniquement 2 chiffres après
la virgule (c'est plus joli pour des valeurs monétaires). Par contre si
tu avais voulu imprimer un résultat de type scientifique, tu aurais pu
écrire %.6f, ce qui induerait un résultat avec 6 chiffre après la
virgule. Il existe pleins de possibilités dans l'utilisation des
chaines de format et une bonne lecture d'un bon livre de C t'en
apprendra beaucoup plus.
Messages postés
28
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
19 février 2006

Merci à vous je viens de tester et sa marche nickel, j'ai enfin compri à quoi serve %.Si j'ai bien compri pour ajouter par exemple une nouvelle monnaie j'aurais à ajouter un nom a flaot, une ligne avec printf et ajouter une case?
Messages postés
28
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
19 février 2006

ok merci beaucoup pour l'aide.
Messages postés
28
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
19 février 2006

Désoler c'est encore moi.

Je voudrais juste savoir si il etait possible d'ajouter des graphismes simple dans mon programme juste histoire d'avoir un peut de forme.
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
printf("************** convertir ****************\n");

printf("* 1 - les euros en
francs
*\n");

printf("* 2 - les francs en
euros
*\n");

printf("* 3 - les francs en ecus martiens *\n");

printf("* 4 -
quitter
*\n");

printf("****************************************\n");

printf("\n\t Choix:\t");



c'est le plus simple si tu veu pas te faire chi**
Messages postés
28
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
19 février 2006

Merci pour ta reponse c'est deja mieux.

Je voudrais juste savoir si il etait prématuré pour moi de faire des graphisme
Messages postés
28
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
19 février 2006

avec la librairie wxWidgets ou avec d'autres librairie graphique?

Merci d'avance

p.s:désoler pour la reponse en deux parties j'ai appuyé sur entrer sans faire expret lol.
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Les widgets et les trucs qui clignotent, c'est pour faire beau, c'est du cosmétique...

Un programme est utile s'il fonctionne avec le moins d'erreurs
possibles. S'il est beau ton programme mais qu'il convertit les euros
en dollar quand tu lui demande des francs, les widgets ça ne sert à
rien...

Le mieux c'est de bien commencer par comprendre la puissance du langage
C et des mécanismes qu'il permet de mettre en oeuvre. Le graphisme
c'est la cerise sur le gateau.
Messages postés
28
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
19 février 2006

Merci pour ta reponse.C'est vrai que je prefere mieux, avant de me lancer dans dans les graphismes, comprendre et bien maitriser le c++(il y a de quoi faire).Je vais encore etre embetant mais avez-vous des idées pour que je puisse m'excercer sur des chapitres tel que les surcharges, les pointeurs ou encore des constructeurs?
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Le langage C++ est un sur ensemble du langage C. Il est né de la mode
des langages objet, mais ce n'en est pas vraiment un. Si tu veux
maitriser le C++, tu dois d'abord maitriser le langage C, qui lui est
un langage procédural. Le meilleur livre que je connaisse sur le
langage C est à mon avis encore un des plus lus, c'est le livre écrit
par ses concepteurs. "Introduction au langage C" de D. Ritchie et BW
Kernighan. Il est un peu dur à la lecture, mais la richesse des ses
exercices font vraiment aller au fond du langage (expressions,
fonctions, pointeurs...). Si tu lis ce livre, et que tu réalises une
bonne partie de ses exercices, tu pourras réellement entamer le C++
(Classes, méthodes, surcharges...). Parce que pour l'instant, ce que
nous avons fait sur ce fil c'est juste un programme en C. Il n'y a pas
de C++ dedans... Pour le C++ je ne connais aucun livre bien, je te
déconseille celui de son concepteur (B. Stroustrup), sauf si tu sens
l'âme d'un théoricien en informatique.
Messages postés
28
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
19 février 2006

j'ai appri les base du c++ avec un livre qui s'appele le c++ pour le nul(comme moi lol)qui est vraiment pas mal pour les debutant avec des exemples telechargeables.Sinon on m'a preté plusieurs bouquin que se soit sur le c++ ou le c.Je vais te citer les noms.Mode d'emploie c(bruce hunter), le language c 2eme edition(de b.w kernighan et de d.m ritchie) et atelier visual c++(david kruglinski).Pour l'instant je n'ai lu que le c++ pour les nuls.Les autres livres qu'on ma passer vienne d'une amie qui a fait un dut info mais qui sont a mon avis reservé un peut plus pour les pro.Je sais pas si sa vaut le coup de lire si c'est pour me perdre dans une masse d'information.Et ont m'a dit que si on apprenait le c avant le c++ on pouvait acquerir de mauvaises habitudes donc c'est pour cela que j'ai direct commencer par le c++.

Je sais pas ce que t'en pense.A toi de me guider dans le droit chemin de la programmation lol.
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Le language c 2eme edition(de b.w kernighan et de d.m ritchie). Le seul à lire mais surtout à comprendre.



Quand à ceux qui te disent que comprendre le C c'est une mauvaise
habitude, il faut que tu saches que la plupart des programmeurs C++
font du procedural en croyant faire de l'objet (ils font du c dans un
environnement de travail c++, ou encore ils font du c en mettant
"class" devant).

Dans un programme C++, tout ce qui fait la puissance d'expression,
appartient au langage C (expressions ternaire, expressions régulières,
raccourcis de langage, pointeurs, chaines de format...).

Bien sur tu peux apprendre la langage c++ sans vraiment comprendre le
langage c. Le C++ apporte les notions de classes et de methodes. Mais
les tournures de langages principales du C++ sont en fait du C. A mon
avis sauter des étapes, c'est moyen.



A toi de voir.
Messages postés
28
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
19 février 2006

je pense que je vais le lire si il est si bien que ça.De toute façon sa peut que me faire du bien.Et pour les autre livres t'en pense quoi?
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
connais pas...

Juste pour la petite histoire, le langage c est né du langage b... On
peut dire que, côté littérature, les informaticiens n'ont pas beaucoup
d'imagination...
Messages postés
28
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
19 février 2006

language b?? connai pas celui la lol.Apres sa serait peut etre le language d lol.

Merci en tout cas pour tes conseils AlexN.