[EDIT après avoir bossé un peu] Retour sur le menu principal

Retour sur le menu principal [EDIT après avoir bossé un peu] - C++ - Programmation

Marsh Posté le 30-11-2008 à 16:41:24    

Salut tout le monde,
bon d'avord merci de m'avoir répondu, même si à mon niveau j'ai pas tout suivi. Je me suis mis sur mon programme, utilisé Google pour les fonctions etc, et sa marche maintenant.
Mais il me reste un point qu'il me reste à éclaircir, comment revenir au menu principal lorsque l'on est dans un sous menu ??
 
je vous met mon code si sa peux aider certains, et si certain ont quelques remarques, je suis preneur, mais il ne faudra pas oublier ma question principal  :na:  
A noter également que le code n'est pas complet, mais comme la suite est identique au début, j'ai abrégé pour ne pas faire 1000pages.
 

Code :
  1. #include <fstream>
  2. #include <iostream>
  3. using namespace std;
  4. int main() {
  5.     ifstream stock ("Stock.txt",ios::in);
  6.     ofstream Nstock ("Stock3.txt",ios::out);
  7.     string tab1[3]; // Tableau des pieces;
  8. int tab2[3]; // tableau des quantites;
  9.     int n=0; //Choix menu principal;
  10. int m=0; //choix menu secondaire;
  11. int x=0; // Quantite a ajouter;
  12. int p;
  13. int c;
  14. int v;
  15.  
  16.    for(int i=0;i<=3;i++){
  17.         stock>>tab1[i];
  18.         stock>>tab2[i]; }     
  19.  
  20. v=tab2[0]; //on lit le nombre de pieces actuelles;
  21. c=tab2[1];
  22. p=tab2[2];
  23. cout<<"Choisissez une operation"<<endl; // Menu principal;
  24. cout<<"1. Ajouter un article"<<endl;
  25. cout<<"2. Verifier la quantite"<<endl;
  26. cout<<"3. Afficher l'etat du stock"<<endl;
  27. cout<<"4. Quitter"<<endl;
  28.    
  29.            cin>>n; // Choix principal;   
  30. while (n<=4){
  31.  switch(n){
  32.   case 1:{
  33.             cout<<"Ajouter un article"<<endl;
  34.   cout<<"1. Vis"<<endl;
  35.   cout<<"2. Cheville"<<endl;
  36.   cout<<"3. Prises"<<endl;
  37.   cin>>m; //Choix sous-menu;
  38.             while (m<=4){
  39.    switch(m){
  40.     case 1:{
  41.      cout<<"Taper le nombre de vis a ajouter"<<endl;
  42.      cin>>x;
  43.      tab2[0]=tab2[0]+x; // on additione le nombre de vis et la qtt a ajouter;
  44.      Nstock<<tab1[0]<<"    "<<tab2[0]<<endl;                             
  45.         break;}
  46.     case 2:{
  47.      cout<<"Taper le nombre de chevilles a ajouter"<<endl;
  48.      cin>>x;
  49.      tab2[1]=tab2[1]+x; // on additione le nombre de vis et la qtt a ajouter;
  50.      Nstock<<tab1[1]<<"    "<<tab2[1]<<endl;                             
  51.         break;}
  52.     case 3:{
  53.      cout<<"Taper le nombre de vis a  ajouter"<<endl;
  54.      cin>>x;
  55.      tab2[2]=tab2[2]+x; // on additione le nombre de vis et la qtt a ajouter;
  56.      Nstock<<tab1[2]<<"    "<<tab2[2]<<endl;                             
  57.         break;}
  58.                    case 4:{
  59.      cout<<"Pour quitter taper 4"<<endl;
  60.      cin>>x;
  61.      tab2[2]=tab2[2]+x; // on additione le nombre de vis et la qtt a ajouter;
  62.      Nstock<<tab1[2]<<"    "<<tab2[2]<<endl;                             
  63.         break;}
  64.                     default :{cout<<"Retapez votre choix"<<endl;
  65.                     break;}
  66.                        
  67.    }
  68.   }
  69.   cout<<"Retape ton choix"<<endl;
  70.   break;
  71.  }
  72. }
  73. }
  74. for(int i=0;i<=3;i++){
  75.         Nstock<<tab1[i];
  76.         Nstock<<tab2[i];       
  77. } }

     
     
   
   
   
   

Message cité 1 fois
Message édité par Dadoo06_fzd le 02-12-2008 à 21:33:26
Reply

Marsh Posté le 30-11-2008 à 16:41:24   

Reply

Marsh Posté le 30-11-2008 à 17:31:55    

Balises [cpp][/cpp], merci. Et sur les tableaux 2D, il doit y avoir une douzaine de topics, fais une recherche.


Message édité par el muchacho le 30-11-2008 à 17:32:51

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 30-11-2008 à 17:58:23    

t'as le choix: soit tu apprends à utiliser les char*, soit tu utilises les std::string <string> soit tu utilises les string, soit tu utilises les string.

Reply

Marsh Posté le 30-11-2008 à 18:00:31    

et attention à ton switch(m) : m est un entier, donc c'est "case 2" et pas "case '2'"

Reply

Marsh Posté le 30-11-2008 à 18:02:49    

Comme je viens tout juste de commencer les cours en info (je suis en méca moi), je préfère utiliser ce que j'ai déjà vu, à savoir char* (mais ce n'est pas juste pour déclarer que c'est une chaine de caractère?)
 
et le problème c'est que sa bloque dès le début .... je n'arrive pas à lui dire que dans le premier tableau ce ne sont que des caractère, et que dans le second tableau se ne sont que des chiffres....

Reply

Marsh Posté le 30-11-2008 à 18:44:19    

std::vector : http://www.sgi.com/tech/stl/Vector.html
std::string : http://www.sgi.com/tech/stl/basic_string.html
 
Si t'as pas vu ça en cours, c'ets que tu susi un cours de C et tu n'es pas dans la bonne cat.
 

Reply

Marsh Posté le 30-11-2008 à 19:32:30    

lol, les balises, c'est au début et à la fin de ton code (pour le rendre lisible), qu'il faut les mettre, pas dans le nom du topic.
Regarde comment c'est fait dans d'autres topics.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 30-11-2008 à 20:28:18    

Dadoo06_fzd a écrit :

Comme je viens tout juste de commencer les cours en info (je suis en méca moi), je préfère utiliser ce que j'ai déjà vu, à savoir char* (mais ce n'est pas juste pour déclarer que c'est une chaine de caractère?)
 
et le problème c'est que sa bloque dès le début .... je n'arrive pas à lui dire que dans le premier tableau ce ne sont que des caractère, et que dans le second tableau se ne sont que des chiffres....


Vu ce que t'es fait de tes char*, ça peut vouloir dire plusieurs choses:
- tu dormais à côté du radiateur (je peux comprendre)
- ton prof a 10ans de retard
- ton prof est un détraqué
 
Ne te prives pas d'utiliser string, ça se comportera exactement comme tu t'y attends

Reply

Marsh Posté le 30-11-2008 à 21:38:47    

Dadoo06_fzd a écrit :


v>>tab2[0]; //on lit le nombre de pieces actuelles;  


Ca, je ne comprends pas.
En tout cas, vu que v=0 à l'initialisation et que tu ne le modifies pas, c'est normal qu'il soit toujours égal à 0.


---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 03-12-2008 à 13:05:41    

Pour le menu je ferais quelque chose comme ça:

 
Code :
  1. while (!quitter)
  2. {
  3.        affichage menu
  4.        while (reponseInvalide)
  5.            demander réponse
  6.      
  7.        switch (reponse)
  8.        {
  9.             case 1:
  10.                 affichage sous menu
  11.                 while (reponseInvalide)
  12.                      demander réponse
  13.                 switch() {...}
  14.                 break;
  15.             case 2:
  16.                 ...
  17.             case 3:
  18.             ...
  19.             case valeurQuit:
  20.                 quitter=true;
  21.        }
  22. }


Et sinon j'utiliserais std::pair<std::string,int> au lieu de deux tableaux.


Message édité par ptitchep le 03-12-2008 à 13:06:27

---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 03-12-2008 à 13:05:41   

Reply

Marsh Posté le 03-12-2008 à 19:14:35    

Salut,
merci ptitchep d'avoir pris le temps d'étudier mon problème. Je vais revoir mon code et j'en donnerai quelques nouvelles.
Concernant le fait d'utiliser deux tableaux, c'est un exercice que je suis en train de faire, donc les tableaux sont imposés :p
 
V++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed