[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