begin process at 2010 03 21 17:12:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

comment verifier qu'on a bien un entier en entree?


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

comment verifier qu'on a bien un entier en entree?

vendredi 8 décembre 2006 à 15:06:47 | comment verifier qu'on a bien un entier en entree?

filsdugrand

bojours,
voila je programme une petite calculette en ce moment pour mes etudes et je coince sur un petit probleme: comment verifier que ce qui a ete donné en entrée c'est bien des entiers????
exemple:

[CODE]
int a;
cout << "veillez entrer un ENTIER svp (priere de ne pas entrer de cochoneries a la place pasque ca va bugger, je vous previns je n'ai pas gerer ce type de problemes!!!!!!!!)"
cin >> a;
[/CODE]

comment faire en sorte de (au moins) quitter le programme proprement si qqun (le prof...^^) s'ammuse a rentrer "blabla" a la place d'un entier???
le programme quitte avant que je puisse verifier ce qui a ete entré comme valeur.
j'imagine que ca doit se gerer par des exception deja definie dans windows (je sais definir mes propres exception mais la je ne vois pas trop) a savoir que j'ai deja une classe erreur ou plusieurs exceptions sont deja definie, si je pouvais juste en rajouter une...

merci d'avance pour votre aide
vendredi 8 décembre 2006 à 15:42:20 | Re : comment verifier qu'on a bien un entier en entree?

Joky

Membre Club
C'est évident que c'est à toi de gérer et pas à l'utilisateur

char c[255];
cout << "Entrer un entier : ";
cin >> c;

char *d = c;
while (*d)
{
    if ((*d < '0') ||  (*d > '9'))
       return;      //ce n'est pas un entier
    d++;
}

ULARGE_INTEGERJokyQi=QI("Joky"

vendredi 8 décembre 2006 à 16:05:27 | Re : comment verifier qu'on a bien un entier en entree?

meech

Membre Club
Salut,

Voici un exemple simple :

#include <stdio.h>
#include <string.h>

int isinteger(char *n)
{
        int i=0;
        int a=0;

        for(i = 0; n[i] != 0; i++)
        {
                if(isdigit(n[i]))
                {
                        a += 1;
                }
        }
         return a / strlen(n);
}

int main(int argc, char** argv)
{
  char* n;
  fflush(stdin);
  printf("saisir un entier : ");
  scanf("%s",&n);
  while (!isinteger(&n)) {
    fprintf(stderr, "ceci n'est pas un entier\n");
    printf("saisir un entier : ");
    scanf("%s",&n);
  }
  return(0);
}


En espérant t'avoir aidé,
Ciao.

vendredi 8 décembre 2006 à 16:08:06 | Re : comment verifier qu'on a bien un entier en entree?

vecchio56

Administrateur CodeS-SourceS
le mieux est d'utiliser fgets, ou cin.getline (mais surtout pas scanf qui ne permet pas de spécifier la taille du tampon)

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 8 décembre 2006 à 16:11:43 | Re : comment verifier qu'on a bien un entier en entree?

Joky

Membre Club
Et surtout qu'apparemment il bosse en C++

ULARGE_INTEGERJokyQi=QI("Joky"

vendredi 8 décembre 2006 à 16:23:32 | Re : comment verifier qu'on a bien un entier en entree?

BruNews

Administrateur CodeS-SourceS
Le mieux c'est GetWindowText()...

ciao...
BruNews, MVP VC++
vendredi 8 décembre 2006 à 16:34:46 | Re : comment verifier qu'on a bien un entier en entree?

filsdugrand

bonjours et merci pour vos reponses,
maisj'ai du mal m'exprimer ce n'est pas les entiers mon principal soucis (meme pas du tour car dans l'absolu je veut des float c'etais juste pour simplifier la question mais bon tout le monde c'est concentré dessu^^) non mon soucis c'est lkes chaine de caractere type: "je rebtre une phrase a la place d'un numero rien que pour te faire chier" c'est ca mon probleme

donc si pour le moment je fait juste

float monNombre;
cin >> monNombre;

et il faudrai le remplacer par:
float monNombre = VerifierLeNombreEnEntreeEtLeRenvoyer();


float
VerifierLeNombreEnEntreeEtLeRenvoyer()
{
    char *input; //j'aurai preferer travailler avec des strig mais bon
    cin >> input; // je sais meme pas si ca marche
    if(input.VerifierQuIlNyAPasDeConneries())//cette fonction verifie qu'il n'y a pas de conneries en entree
    {
        return atof(& input);
    }
    else{
        lever une exception qui va envoyer balader l'utilasateur farceur();
        //ca c bon je sais faire^^
    }
}

donc le pb c'est surtout cette fonction dans l'absolue j'ai trouvé
strtod() une fonction qui ressemble a atof() mais qui en plus verifie que c'est bien un nombre qui a ete entrée mais en cas d'erreur elle revoi 0 donc les 0 sons considerée comme des erreur et ca pose probleme ca....
vendredi 8 décembre 2006 à 16:36:43 | Re : comment verifier qu'on a bien un entier en entree?

filsdugrand

ehhh je precise que le prog est en ligne de commandes... ^^
vendredi 8 décembre 2006 à 16:41:04 | Re : comment verifier qu'on a bien un entier en entree?

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
char *input; //j'aurai preferer travailler avec des strig mais bon
    cin >> input; // je sais meme pas si ca marche

Bravo, pointeur non initialisé

Voila ce que je propose sinon:

  int n;
  if(cin >> n) cout << "C'est un entier: " << n << endl;
  else cout << "Ce n'est pas un entier" << endl;

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 8 décembre 2006 à 16:41:44 | Re : comment verifier qu'on a bien un entier en entree?

Joky

Membre Club
Oui recommence tout à 0
Si tu nous dit entier, c'est normal qu'on fait pour des entiers...
Regarde ma solution elle est très bien pour ce que tu veux, vaut juste dire qu'il oublier les virgules ou les points

Enfin bref,  et en effet

char *input; //j'aurai preferer travailler avec des strig mais bon
    cin >> input; // je sais meme pas si ca marche

ça ne marche pas
On n'écrit pas n'importe où...

ULARGE_INTEGERJokyQi=QI("Joky"


1 2

Cette discussion est classée dans : programme, entier, verifier, deja, entree


Répondre à ce message

Sujets en rapport avec ce message

AIDE!!!!!!!!programme c++ [ par aslauque ] je dois ecrire un programme en c++:1) déclare un entier et l'initialise à la valeur 262)affiche la valeur de cet entier à l'écran3)affiche l'adresse d programme deja ouvert ? [ par barraq ] Salut,voila je developpe un programme, et j'aimerais empecher l'utilisateur de l'ouvrir plusieur foi...Genre quand il double clique sur l'icone du sof lire des caracteres ou entier sans appuier sur entree [ par zied86 ] bonjour,est ce que quelqu'un possede une fonction qui peut lire des entiers ou des caracteres sans appuier sur la touche entree. Ellouze Zied Verifier si la creation de fichier est possible... [ par brice0306 ] Tout est dans le titre, je voudrais savoir comment faire pour verifier si la creation d'un fichier est possible...En gros G un programme ou je dois ut Besoin de quelques renseignements en C++ [ par F_o_X ] Bonsoir a tousJe suis nouveau sur se forum, je tiens d'abord a félécité les webmasters du site pour la qualité de celui-ci. Je programme depuis enviro Redirection "<" en C [ par beno0ou ] Bonjour, j'ai dans un projet besoin de rediriger l'entree standard d'un programme qui sera execute par le contenu d'un fichier. Nous avous fait enorme programme résident [ par marydee ] bonjour à tous Mon prof de système m'a demandé de réaliser un programme espion qui intercepte le clavier et la souris . Le programme doit ètre réalise somme des diviseurs propres d'entier amis. [ par hazertyck ] Bonjour, je suis etudiant en première année d'informatique à la fac. J'ai ici un exercice de tp en C dont l'énoncé est le suivant et où mon code est b la methode de newton raphson [ par crippella ] Bonjour, svp est ce que vous pouvez m'indiquer comment faire un programme sur MATLAB ce programme doit demander à l'utilisateur d'entrer une fonction


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

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

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