Accueil > Forum > > > > probleme avec switch
probleme avec switch
dimanche 19 février 2006 à 00:55:42 |
probleme avec switch

Oruk
|
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 <iostream> 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.
|
|
dimanche 19 février 2006 à 01:25:15 |
Re : probleme avec switch

Guillemouze
|
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; } }
|
|
dimanche 19 février 2006 à 01:26:45 |
Re : probleme avec switch

vincemail
|
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 :)
|
|
dimanche 19 février 2006 à 01:53:42 |
Re : probleme avec switch

AlexN
|
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.
|
|
dimanche 19 février 2006 à 12:28:31 |
Re : probleme avec switch

Oruk
|
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?
|
|
dimanche 19 février 2006 à 14:28:02 |
Re : probleme avec switch

AlexN
|
Réponse acceptée !
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; } } }
|
|
dimanche 19 février 2006 à 16:36:48 |
Re : probleme avec switch

Oruk
|
ok merci beaucoup pour l'aide.
|
|
dimanche 19 février 2006 à 19:51:32 |
Re : probleme avec switch

Oruk
|
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.
|
|
dimanche 19 février 2006 à 19:58:32 |
Re : probleme avec switch

Guillemouze
|
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** 
|
|
dimanche 19 février 2006 à 20:20:33 |
Re : probleme avec switch

Oruk
|
Merci pour ta reponse c'est deja mieux.
Je voudrais juste savoir si il etait prématuré pour moi de faire des graphisme
|
|
Cette discussion est classée dans : printf, main, switch, francs, euros
Répondre à ce message
Sujets en rapport avec ce message
convertisseur euros / francs [ par jultoys ]
Salut,je début en programmation C, j'aimerais réaliser un convertisseur Euros / francs mais j'ai un soucis...En fait ca fonctionne mais quand j'ecris
executer un progrmme avec en arguments des int ? [ par cool2source ]
Bonjour, J'ai réalisé un programme qui trace des rectangles. Aucun problème les rectangles sont bien rectangles lorsqu'ils apparaissent. Au lancement
switch case et gets [ par fab30 ]
Bonjour, je travaille avec Dev c++ et lorsque que fait un prog contenant un gets dans un switch case ou dans une fonction appelée depuis un switch cas
Debut pas tres facile [ par Oruk ]
Salut à tous je suis nouveau sur le forum.Je suis nouveau dans le monde de la programmation, je viens de fnir un livre sur le c++.Pour mettre en prat
Probleme avec Dev c++ (débutant) [ par MATHIS49 ]
Bonjour à tous ! Bon voila j'expose mon problème, j'ai acheté un bouquin pour apprendre le C ( le langage C par Peter Aitken et Bradley L.Lones éditi
mais c'est quoi ce sirque!!!! [ par namgalsipsclar ]
salut! bon, je débute en C , mais là j'ai qqs problèmes a la con : 1_ au moment ou je compile ceci: #include main() { int a; pr
Probléme avec les chaines de caractére [ par Mareck666 ]
Salut, Voila j'ai un gros probléme, en faite je voudrais réaliser un chatterbot en c, du genre on rentre une question dans la console et le bot nous r
Suite de petits calcul (rendue de monaie) [ par nem02004 ]
Alors voila, je désire faire un petit programme qui m'indique la monaie à rendre aux clients,pour cela j'entre lr prix de l'article, j'entre le montan
Problème avec un switch en C [ par alexis69 ]
Alors voilà. J'ai coder un petit code avec un menu. À la fin de mon switch j'ai ajouté l'option default comme ça si une personne tape autre chose que
Langage C, Structure. [ par Aberad ]
Bonjour,Je suis un débutant du langage C, je cherche à faire un programme simple qui consiste juste à afficher la partie Réelle d'un nombre complexe q
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|