begin process at 2012 05 29 20:41:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

probleme avec switch


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales