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

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

un menu avec des controles d'erreur de saisie


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

un menu avec des controles d'erreur de saisie

mardi 11 mai 2010 à 13:05:47 | un menu avec des controles d'erreur de saisie

valveur

Bonjour,
Voila mon simple programme, le problème est sur la saisie du choix:
Si je tape une lettre mon programme ne s'arrête pas.
Est ce que mon exception est mal placé?

#include <iostream>
#include <string>
#include <vector>
//#include <stdexception>
#include <exception>
using namespace std;

int displayMenu()// fonction afichage menu avec retour du choix
{
int selection;
cout<<"[-------------------------Menu--------------------]"<<endl;
cout<<"1. Consultez vos rdv"<<endl;
cout<<"2. Inserez un rdv"<<endl;
cout<<"3. Supprimer un rdv"<<endl;
cout<<"4. Quitter"<<endl;
cout<<"Votre choix : "; cin >> selection;
return selection;
}

int main(){

//-------------------------------mon menu---------------------------------------------------------------
bool choix = false;
try{
while (!choix)
{
int selection = displayMenu();

switch(selection)
{
case 1: ;
break;
case 2: ;
break;
case 3: ;
break;
case 4: system("cls"); choix = true; cout<< "fin du programme" <<endl;
break;
default: throw
cout << "!!!!!! Veuillez faire un choix de 1 a 4 svp !!!!!!" << endl << endl;

}
}

}
catch(...){ cout<<"ERROR: fin du prog"<<endl; exit(0); }
system("pause");
return 0;
}
mardi 11 mai 2010 à 14:28:15 | Re : un menu avec des controles d'erreur de saisie

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
Attention "throw", qui veut dire "relancer la dernière exception catchée", n'est pas standard.
De plus, inclure <exception> n'est pas utile. Enfin, utiliser une exception juste pour ça, c'est un peu du gachis.
Autre remarque:
* Évite les "using namespace std", voir: [ Lien ]
* Évite les "system" (sauf quand tu debug). Tu perds la portabilité de ton programme pour une fonctionnalité très discutable.

Pour faire propre (Gestion des caractères invalides + gestion du nombre de choix):
Code C/C++ :
#include <iostream>
#include <limits>

/*!
** Permet de gerer tout type de menu.
** Gere les entrees invalides, en forcant l'utilisateur
** a entree une donnee valide.
**
** @param message Le message a affiche
** @param nbChoice Le nombre de choix que le menu aura
**
** @return Le choix de l'utilisateur
*/
int getChoice(const std::string& message, int nbChoice)
{
  int choix = 0;

  while (choix < 1 || choix > nbChoice)
  {
    std::cout << message;
    std::cin >> choix;
    if (std::cin.fail())
    {
      std::cin.clear();
      std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
  }
  return choix;
}

int main()
{
  int choice = getChoice("1. Consultez vos rdv\n"
			 "2. Inserez un rdv\n"
			 "3. Supprimer un rd\n"
			 "4. Quitter\n", 4);

  std::cout << "Votre choix: " << choice << std::endl;

  return 0;
}



_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
mardi 11 mai 2010 à 15:41:18 | Re : un menu avec des controles d'erreur de saisie

valveur

Salut CptPingu,
Merci pour ton programme. C'est exactement ça.
Sinon je ne connaissais pas <limits>. Je vais aller de suite l'étudier de plus près.
Et pour using namespace std aussi. Ceci dit les profs nous ont appris comme ça ( par paresse je pense ).

Et encore merci



Cette discussion est classée dans : menu, int, include, choix, selection


Répondre à ce message

Sujets en rapport avec ce message

0 + 1 = 6 ??? [ par Also know as ] Bonjour, J'ai à nouveau le même genre de poblème. Voici mon nouveau source : /* Exemple simple d'utilisation de l'instruction do-while */ #include probleme fonction [ par morgandetoi06 ] bonjour j ai essayé de passer cette source:http://www.cppfrance.com/code.aspx?ID=16930en une source qui se sert de fonctions mais j ai quelques proble Un petit logiciel pour débutant [ par Cyr62110 ] J'ai inventé un petit logiciel rigolo. Celui-ci fait une selection de nombre.Attention: Les fonction sont à faire ccar je ne l'ai pas vraiment fini.Co [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 Aide pour mastermind [ par Giuventine ] Bonjour à tous, Je débute en programmation et dans le cadre du cours je dois réaliser un projet qui est le Mastermind en C. Pour cela, j'ai conçu u Compilation : edition de liens [ par kenshin28 ] Bonjour à tous, Je travaille avec Qt et me suis fait un petit widget permettant la saisie d'une clé d'enregistrement. Etant donné que le code doit ê Correction code C [ par nicolas92c ] Bonjour, j'ai un code en C mais lors de la compilation/execution des erreurs s'affichent et je ne sais pas à quoi elles correspondent. Je suis débuta Dictionnaire de traduction [ par JSG19 ] Salut j'ai un dictionnaire a programmer a chaque fois que je programme soit j'ai le premier mot soit le dernier ou toute la liste de traduction donc & logique en C [ par mezzoben ] bonjour tout le monde , je débute en C et en linux , voila mon bout de code en C qui utilise l'operation & bit à bit mais le probléme qu'il ne marche


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,421 sec (4)

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