maha1987
Messages postés101Date d'inscriptionsamedi 4 juin 2011StatutMembreDernière intervention29 avril 2013
-
18 févr. 2012 à 10:32
mogwai93
Messages postés362Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention 4 novembre 2023
-
18 févr. 2012 à 16:39
Bonjour tout le monde,
j'ai ce programme C qui prend des caractères et doit afficher si la chaîne constituée par ces caractères est valide(constituée seulement par des chiffres), mais le résultat est inattendu
aidez moi svp
#include<stdio.h>
#include<conio.h>
#include<string.h>
int chiffre(char c)
{
if(c>='0' && c<='9')
return(1);
return(0);
}
int verif(char *c,char * s,int *i)
{
int etat=0;
*i=0;
while(etat!=5 && etat !=4)
{
switch(etat)
{
case0:if (chiffre(*c)) etat=1;
else if(*c!=' ') etat=5;
break ;
case1:if (*c=='.') etat=2;
else if(*c=='\0') etat=4;
else if(!chiffre(*c)) etat=5;
break ;
case2:if (chiffre(*c)) etat=3;
else etat=5;
break ;
case3: if (*c=='\0') etat=4;
else if(!chiffre(*c)) etat=5;
break ;
}
*i++;
s[*i]=*c;
}
if (etat==5)return(0);
else if (etat==4) return(1);
}
int main ()
{
int p=2,i,rep;
char c;
char s [100];
do
{
printf("donnez un caractere: ");
scanf("%c",&c);
}
while(p==2);
p=verif(&c,s,&i);
if(p==1)
printf("la chaine %s est valide",s);
if(p==0)
{
printf("la chaine %s est non valide",s);
printf("tapez 1 pour reproduire");
scanf("%d",&rep);
while(rep ==1)
{
s[i]=s[i+1];
p=2;
}
}
getch();
}