2009-11-10 8 views
0
int number; 
cin>>number; 

switch (number) 
{ 
    case 1: 
      cout<<"My Favourite Subject is"; 
      break; 
    case 2: 
      cout<<"Fundamentals of Programming"; 
      break; 
    case 3: 
      cout<<"Exit"; 
      break; 
    default: 
      cout<<"Invalid Data"; 
} 
+0

Est-ce un devoir? –

+0

Doit être, non? –

+0

devoirs tagués – minjang

Répondre

1

Vérifiez si number est égal à la première valeur du commutateur, si le texte égal alors sortie, sinon (autre) vérifier le numéro suivant.

if (number == /*put here value to check*/) 
    // print some text 
else 
    // do something else 
4

Vous remplacez l'instruction switch avec if-else

if (number == 1) 
{ 
} 
else if (number == 2) 
{ 
} 
... 
{ 
} 
else 
{ 
    // default here 
} 
+1

J'aime que vous avez fourni de l'aide, mais pas la réponse exacte ... – marcc

+3

J'ai essayé, je suis une personne agréable. J'essaie d'aider les nouveaux développeurs à obtenir le plus possible de copier/coller: moins ils utilisent leur tête, moins ils apprennent, moins ils apprennent moins la concurrence sur le marché ... Je pourrais même obtenir un emploi quand je suis vieux ... – stefanB

0

Remplacer la déclaration de cas avec une instruction if:

if (number == 1) { 
    cout<<"My Favourite Subject is"; 
} else if (number == 2) { 
    cout<<"Fundamentals of Programming"; 
} else if (number == 3) { 
    cout<<"Exit"; 
} else { 
    cout<<"Invalid Data"; 
} 
+2

-1 pour faire ses devoirs –

+0

vous ne savez pas si c'est devoirs, le développeur peut être vraiment codant stack son serveur twitter suivant et vraiment besoin de passer sur la partie de remplacer le commutateur avec if- sinon ... – stefanB

+2

+1 pour essayer d'aider – dalle

0

if (number == 1) {
cout << "blah1";
}
else if (number == 2) {
cout << "blah2";
}
else if (number == 3) {
cout << "blah3";
}
else { cout << "default";
}

+2

-1 pour faire ses devoirs –

+2

+1 pour essayer d'aider – dalle

1

Ceci est mon préféré, même si ce n'est pas ce que vous avez demandé:

string res = 
    number==1 ? "My Favourite Subject is" : 
    number==2 ? "Fundamentals of Programming" : 
    number==3 ? "Exit" : 
    number==4 ? "Invalid Data" : 
    ""; 

cout<<res; 

Le bon côté ici est que vous n'avez pas à vous contraindre à la comparaison entière. Au lieu de number == 1, vous pouvez utiliser n'importe quel type de complexeComparisonReturningBoolean (nombre).

+1

Utilisez 'const char *' à la place 'string' pour éviter la copie de chaîne. –

+1

J'ai vraiment du mal à en lire plus d'un? opérateur dans une seule expression. – asveikau

+0

Il est plus facile de comprendre si vous oubliez comment? -opérateur fonctionne normalement. Ici, il définit une table avec deux colonnes - colonne de conditions et colonne de valeurs. – AareP

0

Essayez:
if (number < 1 || number > 3) {
//
} else if (number == 1) {
//
} else if (number/2 == 1) {
//
} else if ((number - 1)/ 2 == 1) {
//
}
Cela vous aide à obtenir une plus grande expertise en mathématiques que de la vérification de l'égalité.

2
//Hey this is fun! 
int number; 
cin>>number; 

// ultra const! 
static const char const * const table[] = 
{ 
    "Invalid Data", 
    "My Favourite Subject is", 
    "Fundamentals of Programming", 
    "Exit" 
}; 

cout<<table[number&3]; 

//Who needs if statements!!? 
1

Aussi juste pour le plaisir: utiliser seulement des lettres majuscules et point-virgule au lieu du côlon. Ah, et ne pas oublier d'ajouter une macro mal :)

#define SWITCH(s) for(int switch_=s, b=1;b;b=0) { 
#define CASE(n) } if (switch_ == n) { 
#define DEFAULT } 

int number; 
cin>>number; 

SWITCH(number) 
{ 
    CASE(1); 
     cout << "My Favourite Subject is"; 
     break; 
    CASE(2); 
     cout << "Fundamentals of Programming"; 
     break; 
    CASE(3); 
     cout << "Exit"; 
     break; 
    DEFAULT; 
     cout << "Invalid Data"; 
} 

Cette tuer la boucle « switch » et si « pour » ne sont pas autorisés, il est également possible d'utiliser une macro BREAK, mais il est encore plus de mal.

+0

il pourrait être mieux si vous avez utilisé des gotos pour vos pauses/pauses. – tony

+1

mais avec une instruction switch normale en C, vous pouvez écrire: case 0: if (blah) case 1: {foo(); } Et puis cas 0 fera foo() si blah est vrai, alors que case 1 fera toujours foo(). Cela ne fonctionne pas avec vos macros. – asveikau

+0

@tony: Oui, j'ai pensé à ça aussi, mais où mets-tu l'étiquette de sortie? En outre, je voulais éviter les tracas de générer une étiquette unique et la passer entre les macros. – Alink

Questions connexes