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
int main () {
int num;
char pos,j1,j2;
{
partida: j1,j2;
pos1: ;
pos2: ;
pos3: ;
pos4: ;
pos5: ;
}
printf("JUGADOR 1 RESPONDA.\n");
printf("Pregunta Numero 1: Cual es la capital de chile:\n\n 1) Valparaiso 2) Santiago\n");
scanf("%d",&num);
while(num!=2) {printf ("Jugador 1 se mantiene en la posicion\n"); return 0;
}
{if(num=2) printf("Jugador 1 avanza a la posicion Numero 2\n\n");
}
printf("JUGADOR 2 RESPONDA\n");
printf("Pregunta Numero 1: Cual es la capital de brasil:\n\n 1) Brasilia 2) Rio de Janeiro\n");
scanf("%d",&num);
while(num!=1) { printf("Jugador 2 se mantiene en la posicion\n\n"); return 0;
}
{if(num=1) printf("Jugador 2 avanza a la posicion Numero 2 \n\n");
}
printf("JUGADOR 1 RESPONDA\n");
printf("Pregunta Numero 2: Cual es la capital de Argentina:\n\n 1) Mendoza 2) Buenos aires\n");
scanf("%d",&num);
while(num!=2) {printf("Jugador 1 se mantiene en la posicion Numero 2");
}
{if(num=2) printf("Jugador 1 avanza a la posicion Numero 3\n\n");
}
printf("JUGADOR 2 RESPONDA\n");
printf("Pregunta Numero 2: Cual es la capital de Peru:\n\n 1) Lima 2) Cuzco\n");
scanf("%d",&num);
while(num!=1) {printf("Jugador 2 se mantiene en la posicion Numero 2"); return 0;
}
{if(num=1) printf("Jugador 2 Avanza a la posicion Numero 3\n\n");
}
[MOD] Al publicar codigo usar etiquetas geSHi.
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
Lo ideal es un do-while
Para que al menos entre una sola vez y solo salga si una variable esta en false.
bool entrar = true;
//...
do{
printf("Pregunta aqui");
scanf("%d",&variable); //recomiendo NO usar scanf
if(variable == X) {//X tiene tu respuesta correcta
entrar = false;
}
}while(entrar);
Saludos!
Citarscanf("%d",&variable); //recomiendo NO usar scanf
por que no usar scanf???
saludos... AlbertoBSD
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.
#include<stdio.h>
#include<stdbool.h>
int main() {
bool entrar = true;
int variable;
do{
printf("10 para salir : ");
scanf("%d",&variable);
if(variable == 10) {
entrar = false;
}
}while(entrar);
return 0;
}
Saludos!
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
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 ;-) ;-) ;-)
#include<stdio.h>
#include<stdbool.h>
#define TOTAL_PREGUNTAS 10
#define OPCIONES 3
#define NUM_JUGADORES 2
int main() {
char *preguntas[TOTAL_PREGUNTAS] = {"pregunta 1","pregunta 2","pregunta 3","pregunta 4","pregunta 5","pregunta 6","pregunta 7","pregunta 8","pregunta 9","pregunta 10"};
char *opciones[TOTAL_PREGUNTAS][OPCIONES] = {
{"P1 Opciona A","P1 Opciona B","P1 Opciona C"},
{"P2 Opciona A","P2 Opciona B","P2 Opciona C"},
{"P3 Opciona A","P3 Opciona B","P3 Opciona C"},
{"P4 Opciona A","P4 Opciona B","P4 Opciona C"},
{"P5 Opciona A","P5 Opciona B","P5 Opciona C"},
{"P6 Opciona A","P6 Opciona B","P6 Opciona C"},
{"P7 Opciona A","P7 Opciona B","P7 Opciona C"},
{"P8 Opciona A","P8 Opciona B","P8 Opciona C"},
{"P9 Opciona A","P9 Opciona B","P9 Opciona C"},
{"P10 Opciona A","P10 Opciona B","P10 Opciona C"}};
int correctas[TOTAL_PREGUNTAS] = {2,3,1,2,3,1,2,3,1,3}; //Repuestas correctas de cada pregunta
int jugadores[NUM_JUGADORES] = {0,0}; //Posicion inicial de los jugadores
int pregunta = 0,i = 0,j = 0;
bool entrar = true;
int variable = 0;
while(jugadores[0] < TOTAL_PREGUNTAS || jugadores[1] < TOTAL_PREGUNTAS ) {
i = 0;
while(i < NUM_JUGADORES){
pregunta = jugadores[i];
entrar = true;
do{
printf("Jugador %i\n",i+1);
printf("%s\n",preguntas[pregunta]);
j = 0;
while(j < OPCIONES) {
printf("%i) %s\n",j+1,opciones[pregunta][j]);
j++;
}
printf("Elija su opcion:");
scanf("%d",&variable);
if(variable == correctas[pregunta]) {
jugadores[i]++;
entrar = false;
}
else {
printf("Opcion incorrecta.\n");
}
}while(entrar);
i++;
}
}
return 0;
}
Saludos!
gracias amigo me has despejado algunas dudas de verdad muchas gracias