begin process at 2012 05 29 20:06:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

problème avec isdigit


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

problème avec isdigit

jeudi 29 septembre 2005 à 19:00:31 | problème avec isdigit

deck_bsd

Membre Club
Voila j'ai un petit problème je voudrai faire en sorte que lors d'une insertion de nombre on recommence le code jusqu'à ce que le nombre soit un nombre (autrement dit une vérification pour ne pas tapez des lettres ou une lettre).
do
{
     fflush(stdin); 
     printf("test entrer un nombre :);scanf("%d",&number);
}while(isdigit(number)!=0);

En français : jusqu'à ce que number soit un chiffre.

Mais voila cela ne fait aucun effet , et si l'on entre une lettre le programme continue sont petit bonhomme de chemin. juste pour voir j'ai changer en ==0 et la il trouve si j'ai introduit une lettre mais si j'introduit un chiffre pas après , la boucle recommence quand mm autrement dit pas moyen d'en sortir.

Quelq'un peut il m'aider svp?

merci d'avance


jeudi 29 septembre 2005 à 19:08:17 | Re : problème avec isdigit

Joky

Membre Club
Réponse acceptée !
bool Verif(char *c)
{
    char *d = c;
    while(*d != '\0')
    {
         if((*d > 57) || (*d < 48))
            return false;
    d++;
    }
    return true;
}

int main()
{
    char Buff[128];

    do
    {
    printf("\nEntrer un nombre : ");
    scanf("%s", Buff);
    }while(!Verif(Buff));
   
    system("PAUSE");
    return 0;
}

J'pense pas que c'est la meilleure façon mais bon

if(!Meilleur("Joky")) return ERREUR;<

jeudi 29 septembre 2005 à 19:11:58 | Re : problème avec isdigit

julienbj


do
{
printf(...)
scanf("%s", buf); //Pour lire la donnée tapée + le entree de validation
} while (buf[0] < '0' || buf[0] > '9');

Pour convertir ton caractère en chiffre, te reste plus qu'a faire:
chiffre = buf[0] - '0';

Vive le C
Tchao
Savon
jeudi 29 septembre 2005 à 19:18:43 | Re : problème avec isdigit

julienbj


Ah ouias, j'avais zappé si on lit un chiffre plus grand que 9!!!!
Petite remarque sur le code de Joky: la valeur numérique 57 correspond au caractère ASCII '9' et la valeur  48 au caractère '0'.

Vive le C
Tchao
Savon
jeudi 29 septembre 2005 à 19:19:36 | Re : problème avec isdigit

Joky

Membre Club
Oui mais si on tape 1r alors là ton code ne sert plus à rien :)
Tandis que le mien vérifie toute la chaine :)
Nanananère !

Par contre, le mien ne gère pas les virgules ou point,
Donc on le transforme comme ça :

bool Verif(char *c)
{
    char *d = c;
    while(*d != '\0')
    {
         if((*d-'1' < 0) || (*d-'9'>0))
         {
            if((*d == '.') || (*d == ','))
                   break;
                  
            return false;
         }
    d++;
    }
    return true;
}

if(!Meilleur("Joky")) return ERREUR;<

jeudi 29 septembre 2005 à 19:20:31 | Re : problème avec isdigit

Joky

Membre Club
Oups en lisant le post de Julien je me suis dit que j'avais oublier le 0 lol
if((*d-'1' < 0) || (*d-'9'>0))
devient
if((*d-'0' < 0) || (*d-'9'>0))

if(!Meilleur("Joky")) return ERREUR;<

jeudi 29 septembre 2005 à 19:24:34 | Re : problème avec isdigit

deck_bsd

Membre Club
Non cela ne marche pas car 1: problème de convertion de *char en int et si je fait sans pointeur cela passe mais cela fait la mm chose, pas moyen de sortir de la boucle :/



jeudi 29 septembre 2005 à 19:26:11 | Re : problème avec isdigit

julienbj

Utilise atoi ou atof.
Mais la fonction de Joky doit marcher. AU moins la premiere, pas encore lu la seconde.

Vive le C
Tchao
Savon
jeudi 29 septembre 2005 à 19:33:27 | Re : problème avec isdigit

deck_bsd

Membre Club
yop cela marche maintenant, enfin preske , pour sortir de la boucle il faut que j'introduise une valeur supérieur ou égale a 6000 :s comprend plus rien la.
jeudi 29 septembre 2005 à 19:39:10 | Re : problème avec isdigit

julienbj

Sinon, une autre idée, qui rejoint celle de joky

bool Verif(char *chaine)
{
    int i;
    int nbPoint = 0;
    for (i = 0; i < strlen(chaine), i++)
    {
       if (chaine[i] == '.')
       {
          nbPoint++;
          if (nbPoint > 1)
             return false;
       }
      else if (isdigit(chaine[i]) == 0)
          return false;
    }
    return true;
}


Vive le C
Tchao
Savon

1 2 3 4

Cette discussion est classée dans : problème, nombre, number, lettre, isdigit


Répondre à ce message

Sujets en rapport avec ce message

Probleme avec la librairie <conio.h> et avec le type "float" en c++ [ par Rigel Io ] Salut, j'aurai besoin de vos conseils éclairé en c++. Je suis débutant et j'apprends encore sur les tutorials possible de trouver sur Internet, je pro pointeur de classe [ par gbcha ] bonjour,J'ai un problème avec microsoft visual C++. J'avais crée un certain nombre de classe, avec un certain nombre de pointeurs sur ces classes. J'a [newbie] isdigit + double = :'( [ par CHKDSK2K ] Bonjour all, le probleme est que apres la verfication il ne m'affiche pas le nombre que j'ai entré .... :'( voici le cs#include #include void main(){ Problème de reconnaissance d'un type [ par max12 ] #include "main.h"#define _WIN32_WINNT 0x0400#include // Fonction de gestion du hook <font color="#0000 problème avec rand() [ par ganner ] BonsoirJ'utilise cette boucle dans mon programme pour pouvoir obtenir un nombre aléatoire:while (nbRand 400)    {        nbRand = dénombrement: nombre de boucle [ par Pierebean ] Bonjour à tous,Je suis nouveau sur ce forum j'espère que je respecter les rêgles(en fait je ne sais pas si je suis dans la bonne section).Voici mon pr Problème stockage données [ par romauto750 ] Bonjour à tous, Je me tourne vers vous car je bloque sur un point. Voici mon problème : J'ai plusieurs fichiers qui sont composé de plusieurs colo compteur de lettre [ par cobra176 ] Bonjour je sais qui exister sur ce site un programme qui compte le nombre de lettre de symbole en C mais voila 2 heures que je le recherche . quelqu' Chiffre ou lettre ? [ par ralebole ] Bonjour a tousJe voudrais savoir comment faire pour savoir si c'est un nombre ou une chaine des lettresExemple char petibuf[10];la personne rentre nor Besoin d'octets !! [ par Niwrad ] Bonjour à tous,Voici mon problème : je suis plutôt nouveau né dans l'univers de la programmation et j'essaye de faire un petit peu tout ce qu'il me pa


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 1,778 sec (3)

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