Hola, tengo el siguiente problema:
Estoy haciendo un programa que me diga uno a uno si los caracteres introducidos (como una palabra completa) pueden ser identificadores, pero el problema es que cuando se topa con un carácter que no es letra o número me dice que sí puede ser identificador y acto seguido me dice que no puede ser identificador.
#include <iostream>
using namespace std;
bool EsLetra_Numero_OGuionBajo(char caracter) {
bool esletra_numero_oguionbajo;
if ((caracter >= 'a' && caracter <= 'z') ||
(caracter >= 'A' && caracter <= 'Z') ||
(caracter >= '0' && caracter <= '9' || caracter == '_')) {
esletra_numero_oguionbajo = true;
} else {
esletra_numero_oguionbajo = false;
}
return esletra_numero_oguionbajo;
}
int main() {
bool es=true;
char caracter, centinela = '.';
cout << "Introduzca palabras para saber si puede ser un identificador, "
"finalice con '.' cuando quiera cerrar el programa."
<< endl;
cin >> caracter;
if (EsLetra_Numero_OGuionBajo(caracter)) {
cout << caracter << " puede formar parte de un identificador." << endl;
} else {
cout << caracter << " no puede formar parte de un identificador." << endl;
}
while (es && caracter != centinela) {
if (EsLetra_Numero_OGuionBajo(caracter) == false) {
cout << caracter << " no puede formar parte de un identificador." << endl;
es = false;
} else if (EsLetra_Numero_OGuionBajo(caracter)) {
cin >> caracter;
cout << caracter << " puede formar parte de un identificador." << endl;
}
}
}
Gracias de antemano.
EDITO: Era el cout, debía ponerlo fuera del if.