[C con Clase] De vueltas con if
Steven Davidson
srd4121 en njit.edu
Mar Ago 12 01:02:31 CEST 2008
Hola Rubén,
Rubén wrote:
> Buenas a todos,
>
> Llevo mas de una hora intentando solucionar un problema con if al
> hacer un juego muy simplón:
>
Veamos el código.
> #include<iostream>
> using namespace std;
>
> int main()
>
> {
> char palabra;
> char platano;
> cout<<"Oro parece plata no es, quien no lo adivine muy tonto es... "<<endl;
> cout<<"Escribe la respuesta:"<<endl;
> cin>>palabra;
Esto es gramaticalmente correcto, pero seguramente no es lo que quieres.
Debes prestar atención a los tipos de las variables. Recuerda que C++ es
un lenguaje fuertemente tipificado.
Si quieres guardar una palabra, necesitas una cadena de caracteres. El
tipo que requieres para una cadena de caracteres es un array de 'char'.
Esto es,
char palabra[32];
Hemos creado un array de 32 elementos de tipo 'char' cada uno.
> cout<<" "<<endl;
>
>
> if (palabra==platano)
Aquí estás comparando el contenido en 'palabra' con el contenido en
'platano'. En otras palabras, estás comparando un carácter con otro; en
lugar de una cadena con otra.
Sin embargo, no podemos comparar cadenas de caracteres directamente.
Necesitarás usar la función estándar 'strcmp()' declarada en <cstring>.
Esto es,
if( strcmp( palabra, "platano" ) == 0 )
> cout<<"bravo"<<endl;
> else
> if (palabra!=platano)
> cout<<"muy mal"<<endl;
>
> };
>
>
> //Cuando lo ejecuto, escriba "platano" o manzana, siempre me dice muy
> mal. Si en vez de if (palabra==platano) pongo if (palabra=platano) con
> un sólo igual, me dice que bravo, escriba lo que escriba.
>
> He mirado en el curso, en internet y en un libro, pero no saco donde
> está el problema.
>
Sugiero que repases los capítulos 8 y 10 de nuestro curso de C++. Los
enlaces son:
http://c.conclase.net/curso/index.php?cap=008
http://c.conclase.net/curso/index.php?cap=010
También puedes consultar las bibliotecas de ANSI C:
http://c.conclase.net/librerias/index.php
Espero que esto te oriente.
Steven
Más información sobre la lista de distribución Cconclase