2017-03-08 1 views
-3

Je souhaite donc créer le programme qui peut entrer des données plusieurs fois, par exemple, je choisis de nouveau le cas 1 après avoir utilisé le cas 1 pour entrer des données. Ou je choisis le cas 2 plusieurs fois pour voir toutes les données que je veux. Généralement, ladite déclaration de rupture apporte la solution. Mais, lorsque j'utilise l'instruction break après cas, le programme a été arrêté. Alors, comment puis-je répéter l'instruction switch sans faire de programme de fin? Si je fais cela, le boîtier du commutateur se produit séquentiellement. Par exemple, je peux entrer le cas 1 normalement, mais quand je saisis à nouveau le cas 1, il ira au cas suivant au lieu du cas 1 et vice versa jusqu'à la casse de sortie. Ceci est mon code source:Répétition de l'instruction pour le commutateur

#include <iostream> 
#pragma hdrstop 

using namespace std; 

struct ig 
{ 
int id; 
string name; 
ig *next; 
ig *prev; 
}; 
ig *head= NULL; 
ig *tail= NULL; 

//--------------------------------------------------------------------------- 

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

cout<<"+---------------------------------------+"<<endl; 
cout<<"| Instagram User Data |"<<endl; 
cout<<"+---------------------------------------+"<<endl; 
cout<<"|1. Add Instagram ID  |"<<endl; 
cout<<"|2. Look All Data   |"<<endl; 
cout<<"|3. Look Previous Data  |"<<endl; 
cout<<"|4. Look Next Data  |"<<endl; 
cout<<"|5. Exit    |"<<endl; 
cout<<"+---------------------------------------+"<<endl; 
int choose,l; 
cout<<"your choices (1/2/3/4/5): ";cin>>choose; 
switch(choose) 
{ 
    case 1: 
     { 
      cout<<"Input limit : ";cin>>l; 

      for(int a=1;a<=l;a++) 
      { 
       ig *new= new ig; 
       new->next=NULL; 
       new->prev=NULL; 
       cout<<"Entry Number : ";cin>>new->id; 
       cout<<"Instagram ID : ";cin>>new->name; 
       cout<<"===================="<<endl; 

       if(head== NULL) 
       { 
        head=new; 
        tail=new; 
       } 
       else 
       { 
        new->prev=tail; 
        tail->next=new; 
        tail=new; 
       } 
      } 
     } 

    cout<<"your choices (1/2/3/4/5)";cin>>choose; 
    case 2: 
     { 
      while(head!= NULL) 
      { 
       cout<<head->id<<endl; 
       cout<<head->name<<endl; 
       head=head->next; 
      } 
     } 
    cout<<"your choices (1/2/3/4/5)";cin>>choose; 
    case 3: 
     { 
      if(tail=NULL) 
      { 
      ig *show; 
      show=head; 
      while(show!= NULL) 
       { 
        cout<<head->id<<endl; 
        cout<<head->name<<endl; 
        head=head->prev; 
       } 
      } 
      else 
      { 
       cout<<"Data belum terisi"<<endl; 
      } 
     } 
    cout<<"your choices (1/2/3/4/5)";cin>>choose; 
    case 4: 
     { 
      ig *show; 
      show=tail; 
      while(show!= NULL) 
      { 
       cout<<tail->id<<endl; 
       cout<<tail->name<<endl; 
       tail=tail->next; 
      } 
     } 
    cout<<"your choices (1/2/3/4/5)";cin>>choose; 
    case 5: 
     { 
      return 0; 
     } 
} 
} 

J'ai essayé d'apprendre la logique de la déclaration et la solution à plusieurs reprises, mais toujours sans succès. Alors je besoin d'aide ici, merci

+2

Vous devriez obtenir un bon C++ livre. Presque tout ce que vous ramasser couvrira les commutateurs et les boucles. – JGroven

Répondre

2

Mettez un while autour du switch:

while (true) { 
    int choose = askChoice(); 
    switch (choose) 
    { 
     case 1: AddInstagramID(); break; 
     case 2: LookAllData(); break; 
     case 3: LookPreviousData(); break; 
     case 4: LookNextData(); break; 
     case 5: return 0; 
    } 
} 
+2

Trois de vos affaires ne seront pas traitées. –

+1

@LightnessRacesinOrbit: Typo corrigé grâce à Amit Kumar. – Jarod42