begin process at 2012 05 30 04:47:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

switch case : utilisation de * / + -


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

switch case : utilisation de * / + -

samedi 25 octobre 2003 à 14:32:20 | switch case : utilisation de * / + -

did2604

Bonjour,

Je suis débutant et j'ai un problème sur un programme utilisant l'alternative switch case. En fait, je dois utiliser mon case sur des signes tels que "*" "/" "+" "-", mais je n'y arrive pas. En général, moi je me sers de la structure suivante :
switch (choix)
{
case 1 : instruction;
break;
case 2 : instruction2;
break;
}

donc en toute logique j'essaie qqchose du style :

switch (choix)
{
case * : instruction;
break;
case / : instruction2;
break;
}

mais ça ne fonctionne pas... j'ai bien essayé de mettre les * / + - entre ' ' du style '*' '/'... mais ça ne fonctionne pas

Quelqu'un aurait-il la solution pour moi ? Merci d'avance.

samedi 25 octobre 2003 à 14:51:32 | Re : switch case : utilisation de * / + -

djl




switch (choix)
{
case '*' : instruction;
break;
case '/' : instruction2;
break;
}

vu que c'est des caracteres
samedi 25 octobre 2003 à 14:54:52 | Re : switch case : utilisation de * / + -

Chouchou182


Salut

Tout dépend du type de la variable choix mais ça sera en aucun cas case *: instruction

Si choix est un char, case '*': devrait marcher
Si choix est un char*, if ( !strcmp(choix, "*") ) me semble plus approprié.

Met un peu plus de code pour qu'on puisse t'aider plus facilement.

A +

Chouchou
samedi 25 octobre 2003 à 15:04:40 | Re : switch case : utilisation de * / + -

did2604

Voici en réponse pour Chouchou (merci de m'avoir répondu :)) le programme en entier qui fonctionne parfaitement si j'attribue des chiffres de 1 à 4 pour les opérations math et que je fais un case 1, case 2, case 3 et case 4.
___________________________________________________________
#include <stdio.h>
void main (void)
{
/* déclaration des variables */
int a,b,op,add,sub,multi,div;
float DIV,A,B;
/* entrée des données */
printf ("\nEntrer un entier pour 'a' : ");
scanf ("%d",&a);
printf ("\nEntrer un entier pour 'b' : ");
scanf ("%d",&b);
printf ("\nEntrer un caractère pour 'op' [ + | - | * | / ]' : ");
scanf ("%d",&op);
DIV=(float)div;
A=(float)a;
B=(float)b;
/* traitement des données et affichage des résultats */
switch (op)
{
case '+' : add=a+b;
printf ("\na + b = %d\n",add);
break;
case '-' : sub=a-b;
printf ("\na - b = %d\n",sub);
break;
case '*' : multi=a*b;
printf ("\na * b = %d\n",multi);
break;
case '/' : if (b!=0)
{
DIV=A/B;
printf ("\na / b = %f\n", DIV);
}
else
{
printf ("\nErreur, vous avez entre 0 pour 'b' !!\n");
}
}

}
___________________________________________________________
samedi 25 octobre 2003 à 15:22:35 | Re : switch case : utilisation de * / + -

Anacr0x


scanf ("%d",&op);

Tu entre ton caractère (une lettre) dans un int (un nombre) ! pas étonnant que ca ne marche pas...

déclare ta variable comme ca
char op;
tu verras, c tout de suite beaucoup plus facile pour la comparer ;)
dimanche 26 octobre 2003 à 11:29:32 | Re : switch case : utilisation de * / + -

did2604


Merci de la réponse Anacrox, j'ai effectué le changement comme suit, mais j'ai toujours un problème : lorsque le programme me demande d'entrer le signe de l'opération, il saute les "case" et va direct à la fin, j'avoue ne pas comprendre...
___________________________________________________________
#include <stdio.h>
void main (void)
{
/* déclaration des variables */
int a,b,sub,multi,div,add;
char op;
/* entrée des données */
printf ("\nEntrer un entier pour 'a' : ");
scanf ("%d",&a);
printf ("\nEntrer un entier pour 'b' : ");
scanf ("%d",&b);
printf ("\nEntrer un caractère pour 'op' [ + | - | * | / ]' : ");
scanf ("%c",&op);
/* traitement des données et affichage des résultats */
switch (op)
{
case '+' : add=a+b;
printf ("\na + b = %d\n",add);
break;
case '-' : sub=a-b;
printf ("\na - b = %d\n",sub);
break;
case '*' : multi=a*b;
printf ("\na * b = %d\n",multi);
break;
case '/' : if (b!=0)
{
div=a/b;
printf ("\na / b = %d\n", div);
}
else
{
printf ("\nErreur, vous avez entre 0 pour 'b' !!\n");
}

}

}

_________________________________________________________
dimanche 26 octobre 2003 à 12:57:57 | Re : switch case : utilisation de * / + -

Chouchou182


Salut

printf ("\nEntrer un caractère pour op [ + | - | * | / ] : ");
fflush(stdin) ;
scanf ("%c",&op);

fflush vide le fux spécifié

Chez moi ça marche

A bientôt

Chouchou
dimanche 26 octobre 2003 à 14:29:49 | Re : switch case : utilisation de * / + -

did2604


Hello Chouchou,

Merci pour ton message, cela fonctionne parfaitement :) Je ne risque plus de l'oublier celui-là, mais on ne m'avait jamais réellement expliqué l'utilité exacte du "fflush", maintenant je le sais :)

Merci également aux autres & à l'exceptionnelle sympathie des gens du forum envers les débutants :)
@+


Cette discussion est classée dans : case, utilisation, break, choix, switch


Répondre à ce message

Sujets en rapport avec ce message

switch ... case [ par didrocks ] J'ai un problème est mon case:int n=App->run; // dépendant de la partie du programme en cours switch(n); { case 1: // intro { App->BmpDeFond = App-> Petit problem avec switch [ par Darkneon ] Salut, Mon but est de faire bouger le curseur a l'ecran avec les fleches et d'afficher une lettre a cette position.J'ai le codde suivant.#include &l Problème de SWITCH [ par EMSIEN ] Bonjour Voilà J'ai rencontré un problème Lors de l'utilisation d'une instruction switch,D'abord je veux réaliser une fonction permettant de retourner CASE [ par CHKDSK2K ] Bonjour, j'ai une variable de type char "choix";  je voudrais utiliser cette variable dans un switch mais il ne veut passwitch(choix){    case 'maison switch & case [ par DeadStarXt ] Bonjour,Nous souhaiterions compacter la syntaxe suivante SANS PASSER PAR default :case 'a' : Instructions;break;case 'b' : Instructions;break;case 'c' Problème switch [ par seleccao ] Bonjours à tous Pour mon application en c++ je travaille avec de l'hexadecimal et j'utilise un switch switch(n1) { case '0000': hexa1 = "0";break; ca 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 fonction switch et équivalent [ par gromhouleux ] Bonjour, en fait je cherche un équivalent à la fonction switch en C++. Je m'explique,Switch permet de faire une action en fonction d'une valeur entiè menu en c [ par sebz10 ] bonjour, je voudrais créer un menu en c de façon a ce que quand je selectione un proposition (ex: addition) je puisse en suite additions ou tonber dan [C] Retour au début du programme [ par thekid06 ] Bonsoir, Je cherche après chaque execution revenir au début du programme. Comment je peut faire s'il vous plaît ? Voilà ma source : [code=cpp]#includ


Nos sponsors


Sondage...

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,686 sec (3)

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