elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Por qué se duplica el cout?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Por qué se duplica el cout?  (Leído 1,667 veces)
asa5

Desconectado Desconectado

Mensajes: 11


Ver Perfil
¿Por qué se duplica el cout?
« en: 12 Diciembre 2017, 01:35 am »

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.


« Última modificación: 14 Diciembre 2017, 18:40 pm por asa5 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[?][c++]cout << fu1(5); se cierra el programa
Programación C/C++
anonimo12121 5 5,536 Último mensaje 19 Febrero 2011, 14:01 pm
por anonimo12121
Duda con cin y cout
Programación C/C++
Neptune_one 3 3,396 Último mensaje 4 Septiembre 2012, 08:33 am
por Stakewinner00
problema cout's
Programación C/C++
pMV2ere 3 2,807 Último mensaje 4 Diciembre 2012, 17:15 pm
por rir3760
C++ , ayuda con cout
Programación C/C++
Azdepredador 2 2,189 Último mensaje 31 Enero 2016, 00:08 am
por ivancea96
Leer cout con .exe
Programación C/C++
coyoteazul2 3 1,955 Último mensaje 8 Noviembre 2016, 18:49 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines