Besoin d'aide, problème avec une boucle en analyse lexicale
ilyesilou
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Dalfab Messages postés 638 Date d'inscription Statut Membre Dernière intervention -
Dalfab Messages postés 638 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde, voici le code (c'est l'analyse lexical d'un langage qui contiens 4 caractère (a,b,c,d) )
je ne sais pas pourquoi sa ne marche pas, aidez moi svp
#include<stdio.h>
#include<string>
#include<string.h>
#include<iostream>
using namespace std;
int main (void) {
string a;
cout << "entrer le mot: ";
cin>>(a);
int i=0;
bool t=true;
while ( (t=true) && (i<a.size()) ) {
if ( a[i] == 'a' )
{
t=true;
i++;
getchar();
} else {
if (a[i]=='b'){
t=true;
i++;
getchar();
} else {
if (a[i]=='c'){
t=true;
i++;
getchar();
} else {
if (a[i]='d'){
t=true;
i++;
getchar();
} else{
t=false;
i= a.size();
getchar();
}
}
}
}
}
if (t=true) {
cout<< "lexicale est juste";
} else {
cout<< "lexicale est faux";
}
getchar();
}
je ne sais pas pourquoi sa ne marche pas, aidez moi svp
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
2 réponses
-
Ton code peut être simplifié pour être plus lisible :
#include <stdio.h> #include <string.h> char allowed[4] = "abcd" ; int in_array( char c ){ int i = 0; for( i = 0; i < 4 ; i++ ){ if(allowed[i] == c) return 1; } return 0; } int main(void){ char *mot1 = "abddbdbdccd" ; int i; for( i = 0; (i < strlen(mot1)) && (in_array(mot1[i]));i++); if(i<strlen(mot1)) printf("FAUX"); if(i==strlen(mot1)) printf("OK"); } -
Bonjour,
A deux reprises tu crois tester 't' en faisant if ( t=true ), le compilateur a certainement indiqué un warning indiquant ton erreur.