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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pregunta basica de c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pregunta basica de c++  (Leído 2,483 veces)
JuanitoPerez999999

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Pregunta basica de c++
« en: 11 Julio 2016, 02:01 am »

Hola tengo una consulta.

Estoy haciendo un juego de preguntas en c++ para el instituto y tengo un problema.

No se como hacer para que cuando responda incorrectamente se quede en esa pregunta hasta que responda bien, me pasa que responde incorrectamente y la consola se cierra

Asi tengo el codigo si tengo algo mal que es lo mas probable diganme asi lo puedo arreglar porfavor
Código
  1. int main () {
  2.  
  3. int num;
  4. char pos,j1,j2;
  5. {
  6.  
  7. partida: j1,j2;
  8. pos1: ;
  9. pos2: ;
  10. pos3: ;
  11. pos4: ;
  12. pos5: ;
  13. }
  14. printf("JUGADOR 1 RESPONDA.\n");
  15. printf("Pregunta Numero 1:  Cual es la capital de chile:\n\n 1) Valparaiso        2) Santiago\n");
  16. scanf("%d",&num);
  17. while(num!=2) {printf ("Jugador 1 se mantiene en la posicion\n"); return 0;
  18.      }
  19. {if(num=2) printf("Jugador 1 avanza a la posicion Numero 2\n\n");
  20. }
  21.  
  22. printf("JUGADOR 2 RESPONDA\n");
  23. printf("Pregunta Numero 1:   Cual es la capital de brasil:\n\n 1) Brasilia         2) Rio de Janeiro\n");
  24. scanf("%d",&num);
  25. while(num!=1) { printf("Jugador 2 se mantiene en la posicion\n\n"); return 0;
  26. }
  27. {if(num=1) printf("Jugador 2 avanza a la posicion Numero 2 \n\n");
  28.  
  29. }
  30.  
  31. printf("JUGADOR 1 RESPONDA\n");
  32. printf("Pregunta Numero 2:  Cual es la capital de Argentina:\n\n 1) Mendoza        2) Buenos aires\n");
  33. scanf("%d",&num);
  34. while(num!=2) {printf("Jugador 1 se mantiene en la posicion Numero 2");
  35.  }
  36. {if(num=2) printf("Jugador 1 avanza a la posicion Numero 3\n\n");
  37. }
  38.  
  39. printf("JUGADOR 2 RESPONDA\n");
  40. printf("Pregunta Numero 2:  Cual es la capital de Peru:\n\n 1) Lima              2) Cuzco\n");
  41. scanf("%d",&num);
  42. while(num!=1)  {printf("Jugador 2 se mantiene en la posicion Numero 2"); return 0;
  43.   }
  44. {if(num=1) printf("Jugador 2 Avanza a la posicion Numero 3\n\n");
  45. }
  46.  
  47.  

[MOD] Al publicar codigo usar etiquetas geSHi.


« Última modificación: 11 Julio 2016, 03:17 am por simorg » En línea

+ 1 Oculto(s)

Desconectado Desconectado

Mensajes: 298


un defecto se puede convertir en una virtud


Ver Perfil WWW
Re: Pregunta basica de c++
« Respuesta #1 en: 11 Julio 2016, 02:29 am »

bueno la idea seria poner un while infinito asi while(true)

y tener una variable bandera que avise si la palabra coincide y cambias el valor de la variable a false, de esa forma se sale del ciclo infinito



En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Pregunta basica de c++
« Respuesta #2 en: 11 Julio 2016, 02:53 am »

Lo ideal es un do-while

Para que al menos entre una sola vez y solo salga si una variable esta en false.

Código
  1. bool entrar = true;
  2. //...
  3. do{
  4.   printf("Pregunta aqui");
  5.   scanf("%d",&variable); //recomiendo NO usar scanf
  6.   if(variable == X) {//X tiene tu respuesta correcta
  7.      entrar = false;
  8.   }
  9. }while(entrar);
  10.  

Saludos!
« Última modificación: 11 Julio 2016, 02:56 am por AlbertoBSD » En línea

+ 1 Oculto(s)

Desconectado Desconectado

Mensajes: 298


un defecto se puede convertir en una virtud


Ver Perfil WWW
Re: Pregunta basica de c++
« Respuesta #3 en: 11 Julio 2016, 03:26 am »

Citar
scanf("%d",&variable); //recomiendo NO usar scanf


por que no usar scanf???


saludos... AlbertoBSD
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Pregunta basica de c++
« Respuesta #4 en: 11 Julio 2016, 03:51 am »

Detalles del input ya que muchas veces combinan esos programas con otros código que leen cadenas y el scanf no procesa el retorno de linea y cuando leen cadena en otra función lee el enter que no proceso el scanf y luego llegan aqui preguntando por que no les funciona el programa.

Mejor que procesen las cadenas manualmente y pero en fin es solo una recomendacion.

Volviendo al tema este codigo solo sale cuando el numero leido es 10.

Código
  1. #include<stdio.h>
  2. #include<stdbool.h>
  3.  
  4.  
  5. int main() {
  6. bool entrar = true;
  7. int variable;
  8. do{
  9. printf("10 para salir : ");
  10. scanf("%d",&variable);
  11. if(variable == 10) {
  12. entrar = false;
  13. }
  14. }while(entrar);
  15. return 0;
  16. }

Saludos!
En línea

JuanitoPerez999999

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Pregunta basica de c++
« Respuesta #5 en: 11 Julio 2016, 03:57 am »

aun no logro hacer que pase lo que pide el maestro


no se como hacer para que Cuando el jugador 1 responda incorrectamente le muestre que su respuesta fue incorrecta y que pase a la pregunta del siguiente jugador 2 si el jugador 2 responde correctamente pase a la pregunta N°2 y que nuevamente le muestre la pregunta al jugador 1 hasta que responda correctamente

si pudieran ayudarme con esa estructura estoy seguro que puedo hacer todo lo demas del codigo solo me falta eso
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Pregunta basica de c++
« Respuesta #6 en: 11 Julio 2016, 04:24 am »

Creo que seria algo asi  :rolleyes: :silbar: solo que tiene un error y no lo localizo pero el programa despues de ese error ya esta completo  ;-) ;-) ;-)

Código
  1. #include<stdio.h>
  2. #include<stdbool.h>
  3.  
  4. #define TOTAL_PREGUNTAS 10
  5. #define OPCIONES 3
  6. #define NUM_JUGADORES 2
  7.  
  8.  
  9. int main() {
  10. char *preguntas[TOTAL_PREGUNTAS] = {"pregunta 1","pregunta 2","pregunta 3","pregunta 4","pregunta 5","pregunta 6","pregunta 7","pregunta 8","pregunta 9","pregunta 10"};
  11. char *opciones[TOTAL_PREGUNTAS][OPCIONES] =  {
  12. {"P1 Opciona A","P1 Opciona B","P1 Opciona C"},
  13. {"P2 Opciona A","P2 Opciona B","P2 Opciona C"},
  14. {"P3 Opciona A","P3 Opciona B","P3 Opciona C"},
  15. {"P4 Opciona A","P4 Opciona B","P4 Opciona C"},
  16. {"P5 Opciona A","P5 Opciona B","P5 Opciona C"},
  17. {"P6 Opciona A","P6 Opciona B","P6 Opciona C"},
  18. {"P7 Opciona A","P7 Opciona B","P7 Opciona C"},
  19. {"P8 Opciona A","P8 Opciona B","P8 Opciona C"},
  20. {"P9 Opciona A","P9 Opciona B","P9 Opciona C"},
  21. {"P10 Opciona A","P10 Opciona B","P10 Opciona C"}};
  22. int correctas[TOTAL_PREGUNTAS] = {2,3,1,2,3,1,2,3,1,3}; //Repuestas correctas de cada pregunta
  23. int jugadores[NUM_JUGADORES] = {0,0}; //Posicion inicial de los jugadores
  24. int pregunta = 0,i = 0,j = 0;
  25. bool entrar = true;
  26. int variable = 0;
  27. while(jugadores[0] < TOTAL_PREGUNTAS || jugadores[1] < TOTAL_PREGUNTAS ) {
  28. i = 0;
  29. while(i < NUM_JUGADORES){
  30. pregunta = jugadores[i];
  31. entrar = true;
  32. do{
  33. printf("Jugador %i\n",i+1);
  34. printf("%s\n",preguntas[pregunta]);
  35. j = 0;
  36. while(j < OPCIONES) {
  37. printf("%i) %s\n",j+1,opciones[pregunta][j]);
  38. j++;
  39. }
  40. printf("Elija su opcion:");
  41. scanf("%d",&variable);
  42. if(variable == correctas[pregunta]) {
  43. jugadores[i]++;
  44. entrar = false;
  45. }
  46. else {
  47. printf("Opcion incorrecta.\n");
  48. }
  49. }while(entrar);
  50. i++;
  51. }
  52. }
  53. return 0;
  54. }

Saludos!
« Última modificación: 11 Julio 2016, 04:47 am por AlbertoBSD » En línea

JuanitoPerez999999

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Pregunta basica de c++
« Respuesta #7 en: 11 Julio 2016, 05:03 am »

gracias amigo me has despejado algunas dudas de verdad muchas gracias
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Pregunta 'basica'] Que es Melt?
Análisis y Diseño de Malware
CAR3S? 3 3,387 Último mensaje 15 Abril 2011, 22:34 pm
por CAR3S?
Pregunta muy basica
Java
Xedrox 3 2,317 Último mensaje 7 Julio 2011, 03:39 am
por Xedrox
pregunta basica sobre Backtrack
Hacking Wireless
gragus 1 1,983 Último mensaje 4 Octubre 2011, 12:40 pm
por pianista
una pregunta muy basica
.NET (C#, VB.NET, ASP)
taul 2 1,665 Último mensaje 7 Julio 2013, 17:59 pm
por taul
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines