Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2740 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Débutant] Optimisation d'un menu

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Débutant] Optimisation d'un menu

n°910033
tibobao
Posté le 29-11-2004 à 09:52:50  profilanswer
 

bonjour,
 
je débute dans le c++ et j'ai un probleme avec un menu.
voici mon code:
 

Code :
  1. #include <iostream>
  2. #include <string>
  3. #include <map>
  4. using namespace std;
  5. int main()
  6. {
  7.   map<string, string> repertoire;
  8.   map<string, string>::iterator it;
  9.   string nom, num;
  10.   int choix;
  11.   do {
  12.     system("cls" );
  13.     cout << "------------------------------" << endl;
  14.     cout << "Répertoire telephonique" << endl;
  15.     cout << "------------------------------" << endl;
  16.     cout << " Nouvelle personne ..........1" << endl;
  17.     cout << " Enlever une personne .......2" << endl;
  18.     cout << " Rechercher un numéro .......3" << endl;
  19.     cout << " Rechercher une personne.....4" << endl;
  20.     cout << " Afficher le repertoire......5" << endl;
  21.     cout << " Quitter l'application ......0" << endl;
  22.     cout << "------------------------------" << endl;
  23.     cout << "Votre choix : ";
  24.     cin >> choix;
  25.     if (choix < 0 || choix > 5) {
  26.     cout << "Choix de la rubrique invalide !" << endl;
  27.     cout << "Saisir un numéro entre 0 et 5 !" << endl;
  28.     system ("pause" );
  29.     }else{
  30.     switch (choix)
  31.     {
  32.       case 1 : cout << "Saisissez le nom de la personne : ";
  33.                cin >> nom;
  34.                cout << "Numéro de téléphone : ";
  35.                cin >> num;
  36.                repertoire[nom] = num;
  37.                break;
  38.       case 2 : cout << "Saisissez le nom de la personne : ";
  39.                cin >> nom;
  40.                repertoire.erase(nom);
  41.                break;
  42.       case 3 : cout << "Saisissez le nom de la personne : ";
  43.                cin >> nom;
  44.                for (it = repertoire.begin(); it != repertoire.end(); it++)
  45.                if (it->first == nom) {
  46.                cout << it->first << " possède le numéro " << num << endl;}
  47.                else
  48.                cout << "cette personne n'existe pas !"<< endl;
  49.                system ("pause" );
  50.                break;
  51.       case 4 : cout << "Saisissez le numéro de téléphone : ";
  52.                cin >> num;
  53.                for (it = repertoire.begin(); it != repertoire.end(); it++)
  54.                if (it->second == num) {
  55.                cout << it->first << " possède le numéro " << num << endl;}
  56.                else
  57.                cout << "pas de personne a ce numero !"<< endl;
  58.                system("pause" );
  59.                break;
  60.       case 5 : cout << "Il y a " << repertoire.size() << " personnes dans le repertoire. " << endl;
  61.                   if (repertoire.size()!=0){
  62.                cout << "Liste des personnes : " << endl;
  63.                for (it = repertoire.begin(); it != repertoire.end(); it++)
  64.                cout << '|' << it->first << ", " << it->second << '|' << endl;
  65.                } else
  66.                cout << "Liste vide" << endl;
  67.                system ("pause" );
  68.       }
  69.     }
  70.   }
  71.   while (choix);
  72.   return 0;
  73. }


 
je voudrai optimiser mon menu.
j'aimerai bien faire en sorte que quand je tape des lettres pour choisir la rubrique, j'ai le message d'erreur comme dans mon code.
 
D'autre part, je voudrai pouvoir gerer les espaces car si par exemple je rajoute une personne de type NOM[espace]NOM, il mémorise le premier nom comme il faut mais le deuxieme nom en tant que numero. Supposons une mauvaise manip et je peux me retrouver dans mon repertoire avec (exemple) jean comme nom et pierre comme numero.
 
Comment gerer ce probleme.
 
Je vous remercie d'avance.

mood
Publicité
Posté le 29-11-2004 à 09:52:50  profilanswer
 

n°911467
elco
Posté le 30-11-2004 à 19:38:56  profilanswer
 

Salut !  :)  
 
Si tu veut afficher ton message d'erreur lorque tu tapes tout autre chose qu'un chiffre entre 0 et 5, remplace ta condition :
 
 if (choix < 0 || choix > 5) ----> if( !((choix <= 5) && (choix >= 0)) )
 
En faite, il faut prendre le problème dans l'autre sens. (n'oubli pas le "!" ).
 
En effet, je crois que cin ne gère pas les espaces. Utilise la fonction getline (par contre je crois quelle utilise des char donc il faudra réliser un transtypage par la suite).
 
Voilà.
 
@+.  :pt1cable:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Débutant] Optimisation d'un menu

 

Sujets relatifs
[openGL/debutant] Eclairage infini.question de débutant à propos des array
MDI : Lien entre JInternalFrame et menu documents[XHTML/CSS/JS] menu déroulant
[JAVA] (débutant) Copier un tableau à deux dimensionsListe menu (forumlaire), prob de transmission de valeur
Menu déroulantProbléme de menu en batch
Menu Contextuel dynamique (.Net)OPTIMISATION D'ALGO POUR LE TEMPS DE CALCUL
Plus de sujets relatifs à : [Débutant] Optimisation d'un menu


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR