Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : comment verifier qu'on a bien un entier en entree? [ Divers / Général ] (filsdugrand)

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é 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 reseau de hopfield [ par amira22 ] Salut J?ai vu le programme de hopfield programmé en c++ et l?exemple traité de « code postaux » sur :http://www.cppfrance.com/code.aspx?ID=19075je sui visual basic à c++ [ par cricri_b34 ] Depuis 2 mois, je programme en visual basic, mais à cause de certain avantage du c++(seulement besoin de l'exe pour exécuter le programme et la rapidi opérations matrice /temps exécution prg [ par 0wil0 ] Bonjour, J'effectue dans mon programme des opérations relativement simples sur des matrices (additions, soustractions, moyenne des éléments de matrice appeler un programme java à partir d'un programme C [ par fabrice_pi ] Salut,Tout est dans le titre ! Ou presque... Je suis sous windows et je cherche à lancer un programme java (graphique) à partir d'un exécutable (C com (X == E T S) ??? [ par cricri_b34 ] j'ai créer un petit programme qui permet de pratiquer ses math...donc mon programme doit vérifier si le nombre entré par l'utilisateur, ets égal la so


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 17,503 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.