[C con Clase] De vueltas con if

Rubén parraymartinez en terra.es
Mar Ago 12 19:59:48 CEST 2008


Hola David.

Me ha ido perfecto!!! Muchas gracias, aunque no tenga ni idea de
programación, me estoy enviciando. 

El código me ha quedado así:

#include<iostream>
#include<cstring>
using namespace std;

int main()

{
char palabra[32];
char platano[32]; 
	cout<<"Oro parece plata no es, quien no lo adivine muy tonto es...
"<<endl;
	cout<<"Escribe la respuesta:"<<endl;
	cin>>palabra;	
	cout<<" "<<endl;
	
    if( strcmp( palabra, "platano" ) == 0 )
		cout<<"bravo. Acertaste."<<endl;
	if( strcmp( palabra, "platano" ) != 0 )
		cout<<"La respuesta es incorrecta"<<endl;
		
};

Gracias de nuevo. Ahora reviso a fondo los capítulos 8 y 10.

Un saludo,

Rubén. 

-----Mensaje original-----
De: Steven Davidson <srd4121 en njit.edu>
Responder a: Lista de correo sobre C y C++
<cconclase en listas.conclase.net>
Para: Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
Asunto: Re: [C con Clase] De vueltas con if
Fecha: Mon, 11 Aug 2008 19:02:31 -0400


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



_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080812/79531423/attachment.html>


Más información sobre la lista de distribución Cconclase