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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Hola necesito ayuda con codigo en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hola necesito ayuda con codigo en C  (Leído 3,213 veces)
heomp

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Hola necesito ayuda con codigo en C
« en: 3 Mayo 2014, 04:26 am »

Hola que tal, veran soy nuevo en esto de la programacion y tengo unas dudas, loque trato de hacer es un test de capitales, lo que no se hacer es como imprimir mis preguntas una por una y a la vez con su respuesta, he aqui mi codigo:
Código
  1.  
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <time.h>
  5. #include <stdlib.h>
  6. void capitalesmundo();
  7. int main ()
  8. {
  9.    int r;
  10.    printf("\n\n\t\tBIENVENIDO AL TEST DEDICADO A LA GEOGRAFIA\n\n");
  11.    system("pause");
  12.    system("cls");
  13.    printf("Que desea hacer:\n");
  14.    printf("1.-TEST Capitales del Mundo\n");
  15.    printf("2.-SALIR\n");
  16.    printf("R.- ");
  17.    scanf("%d",&r);
  18.    switch(r)
  19.    {
  20.        case 1: capitalesmundo(); break;
  21.        default: printf("Gracias por usar este juego, hasta la proxima");
  22.    }
  23. }
  24.  
  25. void capitalesmundo()
  26. {
  27.    char preguntas[15][50]={"¿Cual es la capital de Mexico?",
  28.                             "¿Cual es la capital de Canada?",
  29.                             "¿Cual es la capital de Estados Unidos Americanos?",
  30.                             "¿Cual es la capital de España?",
  31.                             "¿Cual es la capital de Reino Unido?",
  32.                             "¿Cual es la capital de Italia?",
  33.                             "¿Cual es la capital de China?",
  34.                             "¿Cual es la capital de Japon?",
  35.                             "¿Cual es la capital de Brasil?",
  36.                             "¿Cual es la capital de Argentina?",
  37.                             "¿Cual es la capital de Francia?",
  38.                             "¿Cual es la capital de Chile?",
  39.                             "¿Cual es la capital de Peru?",
  40.                             "¿Cual es la capital de Venezuela?",
  41.                             "¿Cual es la capital de Alemania?",};
  42.  
  43.      char respuestas[15][3][50]={  {"Ciudad de México","Buenos Aires","Tokio"},
  44.                                    {"Mexico","Otawa","Brasilia"},
  45.                                    {"Washington ","Paris","Tokio"},
  46.                                    {"Madrid","Roma","Oslo"},
  47.                                    {"Barcelona","Londres","Berna"},
  48.                                    {"Varsovia","Berlin","Roma"},
  49.                                    {"Kabul","Pekin","Tokio"},
  50.                                    {"Tokio","Doha","Damasco"},
  51.                                    {"Lima","Brasilia","Bogota"},
  52.                                    {"Buenos Aires","Quito","La Habana"},
  53.                                    {"Estocolmo","Monaco","Paris"},
  54.                                    {"Kingston","Santiago de Chile","San Salvador"},
  55.                                    {"Montevideo","San Juan","Lima"},
  56.                                    {"Managua","Puerto Principe","Caracas"},
  57.                                    {"Berlin","Tirana","Viena"},    };
  58.    int buenas[15]={0,1,0,0,1,2,1,0,1,0,2,1,2,2,1};
  59.    int i,j;
  60.    printf("\n\n\t\tHola escojiste CAPITALES DEL MUNDO\n\n");
  61.    printf("En este juego podras ver cuanto sabes de geografia, SUERTE.\n\n");
  62.    system("pause");
  63.    system("cls");
  64.    for (i=0; i<14; i++)
  65.    {
  66.        for (j=0; j<50; j++)
  67.        printf("%c",preguntas[i][j]);
  68.        printf("\n");
  69.    }
  70.    printf("\n");
  71. }
  72.  

mi codigo imprime todas las respuestas pero no quiero eso les agradeceria si me ayudan gracias :)


« Última modificación: 3 Mayo 2014, 05:28 am por simorg » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Hola necesito ayuda con cogigo en C
« Respuesta #1 en: 3 Mayo 2014, 05:03 am »

Cuando publiques código fuente por favor utiliza las etiquetas de código. Estas se agregan mediante el cuadro desplegable con el texto "GeSHi" en la pagina de composición de mensajes, solo tienes que seleccionar ahí el lenguaje (C, C++, etc.).

Y deberías evitar el uso de la biblioteca conio de Borland, mas informacion en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

----

lo que no se hacer es como imprimir mis preguntas una por una y a la vez con su respuesta
Primero hay que reducir las cadenas del array "preguntas" quitando el texto duplicado "¿Cual es la capital de ", de esta forma:
Código
  1. char preguntas[15][50] = {
  2.   "Mexico",
  3.   "Canada",
  4.   "Estados Unidos Americanos",
  5. ...
  6. };
Para evitar el desperdicio de memoria lo mejor es utilizar un array de punteros pero como comentas que eres un principiante habrá que dejarlo para después.

A continuación modificas el bucle para que imprima la pregunta y pida la respuesta al usuario:
Código
  1. for (i = 0; i < 14; i++){
  2.   /* 1) Imprimir la pregunta */
  3.   printf("Cual es la capital de %s?\n", preguntas[i]);
  4.  
  5.   /* 2) Obtener la respuesta del usuario (scanf o fgets) */
  6.  
  7.   /* 3) Comparar la respuesta del usuario con la correcta (strcmp) y notificar */
  8. }

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
heomp

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Hola necesito ayuda con cogigo en C
« Respuesta #2 en: 3 Mayo 2014, 19:23 pm »

Cuando publiques código fuente por favor utiliza las etiquetas de código. Estas se agregan mediante el cuadro desplegable con el texto "GeSHi" en la pagina de composición de mensajes, solo tienes que seleccionar ahí el lenguaje (C, C++, etc.).

Y deberías evitar el uso de la biblioteca conio de Borland, mas informacion en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

----
Primero hay que reducir las cadenas del array "preguntas" quitando el texto duplicado "¿Cual es la capital de ", de esta forma:
Código
  1. char preguntas[15][50] = {
  2.   "Mexico",
  3.   "Canada",
  4.   "Estados Unidos Americanos",
  5. ...
  6. };
Para evitar el desperdicio de memoria lo mejor es utilizar un array de punteros pero como comentas que eres un principiante habrá que dejarlo para después.

A continuación modificas el bucle para que imprima la pregunta y pida la respuesta al usuario:
Código
  1. for (i = 0; i < 14; i++){
  2.   /* 1) Imprimir la pregunta */
  3.   printf("Cual es la capital de %s?\n", preguntas[i]);
  4.  
  5.   /* 2) Obtener la respuesta del usuario (scanf o fgets) */
  6.  
  7.   /* 3) Comparar la respuesta del usuario con la correcta (strcmp) y notificar */
  8. }

Un saludo



Gracias por a haberme ayudado me sirvió demasiado, solo un pequeño inconveniente se que (strcmp) se utiliza para comparar cadenas el problema es que no se como utilizarlo, ya que en mi código tengo que comparar mis respuestas
Código
  1. char respuestas[15][3][50]={  {"Ciudad de México","Buenos Aires","Tokio"},
  2.                                             {"Mexico","Otawa","Brasilia"},
  3.                                             {"Washington ","Paris","Tokio"},
  4.                                              ...};

con mi arreglo donde tengo guardado mis respuestas correctas
Código
  1. int buenas[15]={0,1,0,0,1,2,1,0,1,0,2,1,2,2,1};
he visto ejemplos en Internet pero la mayoría utiliza apuntadores, y pues no he visto ese tema, si no es mucha molestia te agradeciera si me explicas como hacerlo gracias.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Hola necesito ayuda con codigo en C
« Respuesta #3 en: 4 Mayo 2014, 06:20 am »

Si buscas en Google sobre strcmp, veras que es muy simple, se le pasan las 2 cadenas y devuelve un valor entero, si el valor es 0 son iguales, no tiene demasiada dificultad
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.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Hola necesito ayuda con cogigo en C
« Respuesta #4 en: 4 Mayo 2014, 07:44 am »

solo un pequeño inconveniente se que (strcmp) se utiliza para comparar cadenas el problema es que no se como utilizarlo, ya que en mi código tengo que comparar mis respuestas [...] con mi arreglo donde tengo guardado mis respuestas correctas
Código
  1. int buenas[15]={0,1,0,0,1,2,1,0,1,0,2,1,2,2,1};
No se que estaba pensando (un lapsus) ya que no es necesario pedir la respuesta al usuario como una cadena. En su lugar cada pregunta la imprimes junto con las respuestas a elegir:
Código:
Cual es la capital de Mexico?
1) Ciudad de México
2) Buenos Aires
3) Tokio
Y la respuesta elegida por el usuario se lee como un entero (1, 2 o 3), a este le restas uno y lo comparas con la respuesta correcta almacenada en el array "buenas", de esta forma:
Código
  1. for (i = 0; i < 15; i++){
  2.   /* 1) Se presenta cada pregunta al usuario */
  3.   printf("Cual es la capital de %s?\n", preguntas[i]);
  4.   for (j = 0; j < 3; j++)
  5.      printf("%d) %s\n", j + 1, respuestas[i][j]);
  6.  
  7.   /* 2) Se obtiene la respuesta elegida (1 a 3) */
  8.   scanf("%d", &j);
  9.  
  10.   /* 3) Se verifica si es la respuesta correcta */
  11.   if (buenas[i] == j - 1){
  12.      puts("Correcta");
  13.   }else {
  14.      puts("Incorrecta");
  15.   }
  16. }

Solo falta validar que el numero ingresado por el usuario este en el rango valido (mayor o igual a uno y menor o igual a tres).

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
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Hola necesito ayuda con cogigo en C
« Respuesta #5 en: 4 Mayo 2014, 19:04 pm »

Gracias por a haberme ayudado me sirvió demasiado, solo un pequeño inconveniente se que (strcmp) se utiliza para comparar cadenas el problema es que no se como utilizarlo, ya que en mi código tengo que comparar mis respuestas con mi arreglo donde tengo guardado mis respuestas correctas

Yo te propongo que guardes el pais con sus respectivas capitales en una matriz de punteros, de esta manera

Código
  1. char *pregunta[][2] = { "Mexico", "Cuidad de Mexico",
  2.                        "Argentina", "Buenos Aires",
  3.                        "Francia", "Paris" };

Y luego que vayas preguntando y verificando las respuestas de esta manera

Código
  1. for( i = 0; i < 3; i++ ){
  2.   printf("Cual es la capital de %s?\n", pregunta[i][0]);
  3.   scanf(" %[^\n]", respuesta);
  4.  
  5.   if (!strcmp(respuesta, pregunta[i][1]))
  6.      puts("Correcta");
  7.   else
  8.      puts("Incorecta");
  9. }
« Última modificación: 4 Mayo 2014, 19:09 pm por Blaster » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hola necesito ayuda
.NET (C#, VB.NET, ASP)
FeRn4nDo115 0 2,316 Último mensaje 6 Abril 2009, 03:20 am
por FeRn4nDo115
hola necesito ayuda
Software
kevin360 0 2,828 Último mensaje 9 Septiembre 2011, 02:36 am
por kevin360
Hola, necesito ayuda
PHP
kevinava 4 2,391 Último mensaje 5 Febrero 2012, 17:45 pm
por 2Fac3R
Hola! necesito ayuda
Windows
Horaciojgg 1 2,136 Último mensaje 21 Marzo 2012, 19:48 pm
por FrankBlack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines