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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema en ejercicio Ayuda please
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema en ejercicio Ayuda please  (Leído 9,773 veces)
mimel

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Problema en ejercicio Ayuda please
« en: 19 Marzo 2015, 19:53 pm »

Hola a la comunidad soy nuevo en el foro, y tengo una duda con un ejercicion en C, es el siguiente:
 En un juego de preguntas a las que se responde “Si” o “No” gana quien responda correctamente las tres preguntas. Si se responde mal a cualquiera de ellas ya no se pregunta la siguiente y termina el juego. Las preguntas son:
   1. Colon descubrió América?
   2. La independencia de México fue en el año 1810?
   3. The Doors fue un grupo de rock Americano?

sencillo, pero al hacer la comparacion no me toma la decicion del if(pregunta1 == "si") se va al else
aca muestro las capturas, nose en que estoy mal pero si pueden ayudarme les agradeceria:


Código:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {

char pregunta1[2],pregunta2[2],pregunta3[2];

printf("-------------------------------------------------------------\n");
printf("En este juego de preguntas se responde con 'si' o 'no'\ngana quien responda correctamente las tres preguntas.\nSi se responde mal a cualquiera de ellas pierde.");
printf("\n-------------------------------------------------------------\n");
printf("¿Colon descubrio America?\n");
scanf("%s",&pregunta1);
printf("%s\n",pregunta1);

if(pregunta1 == "si")
{
printf("BIEN!\n¿La independencia de Mexico fue en el año 1810?\n");
scanf("%s",&pregunta2);
if(pregunta2 == "si")
{
printf("BIEN!\n¿The Doors fue un grupo de rock Americano?\n");
scanf("%s",&pregunta3);
if(pregunta3=="si")
{
printf("GANASTEE");
}
else{
printf("ERROR, perdiste");
}
}
else{
printf("ERROR, perdiste");
}
}
else{
printf("ERROR, perdiste");

}


return 0;
}



En línea

mimel
implementador de software libre
Estudiante de Desarrollo de Software
Colombia-Huila-Neiva
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Problema en ejercicio Ayuda please
« Respuesta #1 en: 19 Marzo 2015, 20:06 pm »

pregunta1, pregunta2 y pregunta3, al igual que "si", son direcciones de memoria. Son punteros a char, como bien los has definido. Un puntero no será igual a otro. Lo que hay que hacer es comparar letra a letra, y para ello tienes strcmp() de la librería string.


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Problema en ejercicio Ayuda please
« Respuesta #2 en: 20 Marzo 2015, 02:53 am »

tengo una duda con un ejercicion en C
Otra parte que se debe cambiar en el programa son las declaraciones de los arrays y las llamadas a scanf:

* Al llamar a scanf utilizas el operador "dirección de" (el '&'):
Código
  1. scanf("%s", &pregunta1);
No es necesario utilizar ese operador cuando el argumento sea un array.

* Los tres arrays tienen una capacidad para dos elementos pero, en un caso ideal, scanf almacenara tres caracteres (los dos de la cadena "si" o "no" mas el '\0' para indicar el final de la cadena). Hay que cambiar el numero de elementos de los benditos arrays como mínimo a tres.

* Para evitar el desbordamiento en la llamada a scanf debes utilizar la cadena de formato "%2s", en ella el '2' indica que se debe leer una palabra de máximo dos caracteres.

* Para evitar errores en el caso de palabras demasiado largas (mas de dos caracteres) debes eliminar el resto de la linea de texto. Ejemplos sobre ello hay a montones en la base de datos de los foros, solo es cuestión de utilizar el motor de búsqueda (busca los temas relacionados con el bufer de la entrada estándar).

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
mimel

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Problema en ejercicio Ayuda please
« Respuesta #3 en: 24 Marzo 2015, 19:11 pm »

muchas gracias a la comunidad me ayudaron mucho, ya modifique y arregle el código para que funcionara, si alguien cree que debe ir de otra forma mas eficiente le agradecería, gracias a todos y feliz tarde  ;-)  :silbar:

Código:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {

char pregunta1[3],pregunta2[3],pregunta3[3];

printf("-------------------------------------------------------------\n");
printf("En este juego de preguntas se responde con 'si' o 'no'\ngana quien responda correctamente las tres preguntas.\nSi se responde mal a cualquiera de ellas pierde.");
printf("\n-------------------------------------------------------------\n");
printf("¿Colon descubrio America?\n");
scanf("%s",pregunta1);

if( strcmp(pregunta1,"si") == 0)
{
printf("BIEN!\n¿La independencia de Mexico fue en el año 1810?\n");
scanf("%s",pregunta2);
if(strcmp(pregunta2,"si") == 0)
{
printf("BIEN!\n¿The Doors fue un grupo de rock Americano?\n");
scanf("%s",pregunta3);
if(strcmp(pregunta3,"si") == 0)
{
printf("GANASTEE");
}
else{
printf("ERROR, perdiste");
}
}
else{
printf("ERROR, perdiste");
}
}
else{
printf("ERROR, perdiste");

}


return 0;
}
En línea

mimel
implementador de software libre
Estudiante de Desarrollo de Software
Colombia-Huila-Neiva
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema en ejercicio Ayuda please
« Respuesta #4 en: 25 Marzo 2015, 06:47 am »

Citar
The Doors fue un grupo de rock Americano

creo que quisiste decir "Estadounidense"
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Problema en ejercicio Ayuda please
« Respuesta #5 en: 25 Marzo 2015, 08:23 am »

creo que quisiste decir "Estadounidense"

O "Norteamericano" en su defecto...  :P
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[ problema ] ejercicio 100
Ejercicios
_mÙëK§™_ 2 4,967 Último mensaje 1 Diciembre 2007, 01:31 am
por Iñaki Viggers
problema con ejercicio en C ayuda!!!
Programación C/C++
hugg 3 3,308 Último mensaje 15 Enero 2011, 03:32 am
por leogtz
problema con un ejercicio
Java
shing18 3 3,939 Último mensaje 3 Junio 2011, 22:14 pm
por sapito169
Problema ejercicio
Programación C/C++
overxfl0w13 4 3,308 Último mensaje 30 Junio 2012, 11:43 am
por overxfl0w13
Ayuda: Problema con ejercicio en C#
.NET (C#, VB.NET, ASP)
ODAC333 5 3,329 Último mensaje 8 Julio 2013, 18:50 pm
por El Benjo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines