Autor
|
Tema: Hola necesito ayuda con codigo en C (Leído 3,213 veces)
|
heomp
Desconectado
Mensajes: 2
|
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: #include <stdio.h> #include <conio.h> #include <time.h> #include <stdlib.h> void capitalesmundo(); int main () { int r; printf("\n\n\t\tBIENVENIDO AL TEST DEDICADO A LA GEOGRAFIA\n\n"); printf("1.-TEST Capitales del Mundo\n"); switch(r) { case 1: capitalesmundo(); break; default: printf("Gracias por usar este juego, hasta la proxima"); } } void capitalesmundo() { char preguntas[15][50]={"¿Cual es la capital de Mexico?", "¿Cual es la capital de Canada?", "¿Cual es la capital de Estados Unidos Americanos?", "¿Cual es la capital de España?", "¿Cual es la capital de Reino Unido?", "¿Cual es la capital de Italia?", "¿Cual es la capital de China?", "¿Cual es la capital de Japon?", "¿Cual es la capital de Brasil?", "¿Cual es la capital de Argentina?", "¿Cual es la capital de Francia?", "¿Cual es la capital de Chile?", "¿Cual es la capital de Peru?", "¿Cual es la capital de Venezuela?", "¿Cual es la capital de Alemania?",}; char respuestas[15][3][50]={ {"Ciudad de México","Buenos Aires","Tokio"}, {"Mexico","Otawa","Brasilia"}, {"Washington ","Paris","Tokio"}, {"Madrid","Roma","Oslo"}, {"Barcelona","Londres","Berna"}, {"Varsovia","Berlin","Roma"}, {"Kabul","Pekin","Tokio"}, {"Tokio","Doha","Damasco"}, {"Lima","Brasilia","Bogota"}, {"Buenos Aires","Quito","La Habana"}, {"Estocolmo","Monaco","Paris"}, {"Kingston","Santiago de Chile","San Salvador"}, {"Montevideo","San Juan","Lima"}, {"Managua","Puerto Principe","Caracas"}, {"Berlin","Tirana","Viena"}, }; int buenas[15]={0,1,0,0,1,2,1,0,1,0,2,1,2,2,1}; int i,j; printf("\n\n\t\tHola escojiste CAPITALES DEL MUNDO\n\n"); printf("En este juego podras ver cuanto sabes de geografia, SUERTE.\n\n"); for (i=0; i<14; i++) { for (j=0; j<50; j++) } }
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
Mensajes: 1.639
|
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: char preguntas[15][50] = { "Mexico", "Canada", "Estados Unidos Americanos", ... };
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: for (i = 0; i < 14; i++){ /* 1) Imprimir la pregunta */ printf("Cual es la capital de %s?\n", preguntas [i ]); /* 2) Obtener la respuesta del usuario (scanf o fgets) */ /* 3) Comparar la respuesta del usuario con la correcta (strcmp) y notificar */ }
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
Mensajes: 2
|
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: char preguntas[15][50] = { "Mexico", "Canada", "Estados Unidos Americanos", ... };
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: for (i = 0; i < 14; i++){ /* 1) Imprimir la pregunta */ printf("Cual es la capital de %s?\n", preguntas [i ]); /* 2) Obtener la respuesta del usuario (scanf o fgets) */ /* 3) Comparar la respuesta del usuario con la correcta (strcmp) y notificar */ }
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 char respuestas[15][3][50]={ {"Ciudad de México","Buenos Aires","Tokio"}, {"Mexico","Otawa","Brasilia"}, {"Washington ","Paris","Tokio"}, ...};
con mi arreglo donde tengo guardado mis respuestas correctas 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
|
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
Mensajes: 1.639
|
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 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: 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: for (i = 0; i < 15; i++){ /* 1) Se presenta cada pregunta al usuario */ printf("Cual es la capital de %s?\n", preguntas [i ]); for (j = 0; j < 3; j++) printf("%d) %s\n", j + 1, respuestas [i ][j ]); /* 2) Se obtiene la respuesta elegida (1 a 3) */ /* 3) Se verifica si es la respuesta correcta */ if (buenas[i] == j - 1){ }else { } }
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
Mensajes: 190
|
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 char *pregunta[][2] = { "Mexico", "Cuidad de Mexico", "Argentina", "Buenos Aires", "Francia", "Paris" };
Y luego que vayas preguntando y verificando las respuestas de esta manera for( i = 0; i < 3; i++ ){ printf("Cual es la capital de %s?\n", pregunta[i][0]); scanf(" %[^\n]", respuesta); if (!strcmp(respuesta, pregunta[i][1])) puts("Correcta"); else puts("Incorecta"); }
|
|
« Última modificación: 4 Mayo 2014, 19:09 pm por Blaster »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Hola necesito ayuda
.NET (C#, VB.NET, ASP)
|
FeRn4nDo115
|
0
|
2,316
|
6 Abril 2009, 03:20 am
por FeRn4nDo115
|
|
|
hola necesito ayuda
Software
|
kevin360
|
0
|
2,828
|
9 Septiembre 2011, 02:36 am
por kevin360
|
|
|
Hola, necesito ayuda
PHP
|
kevinava
|
4
|
2,391
|
5 Febrero 2012, 17:45 pm
por 2Fac3R
|
|
|
Hola! necesito ayuda
Windows
|
Horaciojgg
|
1
|
2,136
|
21 Marzo 2012, 19:48 pm
por FrankBlack
|
|