Autor
|
Tema: Ayuda! Error con sentencia do while (Leído 1,804 veces)
|
Chandalero
Desconectado
Mensajes: 5
|
LLevaba unos dias intentando registrarme y al fin lo he conseguido (el captcha no funciona pero de casualidad me he metido desde modo incognito y se mostraba sin problema ). El caso es que estoy aprendiendo c con el "Manual Imprescindible de C/C++" y me gusta hacer mis chorradas y este codigo me da error en la linea -- .Cabe decir que llevo una semana con esto y supongo que mi codigo debe ser sucio de narices asi que cualquier consejo, lo agradezco, si me ayuda a quitar o evitar malos habitos. Error que me dice CodeBlocks: ||=== Build file: "no target" in "no project" (compiler: unknown) ===| Z:\8-Documentos\c\pau\versiencpp.cpp||In function 'int main()':| Z:\8-Documentos\c\pau\versiencpp.cpp|40|warning: extended initializer lists only available with -std=c++11 or -std=gnu++11| Z:\8-Documentos\c\pau\versiencpp.cpp|43|error: expected primary-expression before 'do'| Z:\8-Documentos\c\pau\versiencpp.cpp|43|error: expected '}' before 'do'| Z:\8-Documentos\c\pau\versiencpp.cpp|43|error: expected ',' or ';' before 'do'| Z:\8-Documentos\c\pau\versiencpp.cpp|94|error: expected '}' at end of input| ||=== Build failed: 4 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
Y aqui mi codigo, lo que busco es si no tienes "tienes" la llave y "abres" la puerta, no salgas del Switch /*Bibliotecas*/ #include <iostream> #include <stdio.h> #include <stdlib.h> #include <windows.h>
/*variables y constantes*/ int opcionnombreusuario; char nombre[20]; int opcionllavepuertaventana; int posesionllave = 0;
/*programa principal*/ int main (void) { /*titulo*/ printf ("Juego\n\n"); Sleep(200);
/*seleccion de nombre y confirmacion de este*/ do { printf ("\n\nInserte un nombre de usuario en minisculas y pulse Intro: "); std::cin >> nombre; fflush (stdin); printf ("\nEntonces tu nombre es %s?" ,nombre); printf ("\n1-Si\n2-No\n"); std::cin >> opcionnombreusuario; fflush (stdin); system("cls"); } while (opcionnombreusuario != 1);
/*planteamiento llave ventana puerta*/ printf ("\nSaludos %s, bienvenido a mi lamentable aventura de texto, espero que disfrutes!", nombre); Sleep (2000); system("cls");
/*funcion primera pantalla para llamar en case2*/ int pantallallavespuertaventana {
/* do while para que se repita la pantalla mientras no tenga la llave */ do {
printf("\n%s, acabas de aparecer en una habitacion extrana, puedes ver una ventana con rejas, una puerta y una llave.\nQue escojes?\n\n1-Ventana\n2-Puerta\n3-Investiga\n"); std::cin >> opcionllavepuertaventana ; fflush (stdin); /*Switch que da sentencias para las opciones de la primera pantalla */ switch (opcionllavepuertaventana) { case 1: printf ("Vaya, parece que la ventana tiene rejas, es imposible salir por aqui.");
Sleep (3000); system ("cls"); break;
case 2: if (posesionllave != 1) { printf ("Que mal, parece que la cerradura necesita una llave"); Sleep (3000); system ("cls"); pantallallavespuertaventana (); } if (posesionllave == 1) { printf ("Has abierto la puerta con la llave"); Sleep (3000); } break;
case 3: printf ("Investigando por el suelo te has encontrado una llave! Me pregunto como debe haber salido el que se la dejo dentro..."); posesionllave = 1;
Sleep (3000); system ("cls"); break;
default: printf ("Escoje una opcion valida, %s", nombre); Sleep (3000); system ("cls"); } }
while ((posesionllave != 1) && (opcionllavepuertaventana != 2)); printf ("Has abierto la puerta!"); }
}
Como soluciono esto?
|
|
|
En línea
|
|
|
|
Kenji-chan
Desconectado
Mensajes: 104
|
eso es por que te has inventado una nueva estructura de control de flujo int pantallallavespuertaventana{ /*codigo ... ... ...*/
no puedes poner esto en el código si quieres que se repita el código al llegar al caso 2 tienes que hacerlo de forma diferente, yo lo he echo de la siguiente manera #include <iostream> #include <stdio.h> #include <stdlib.h> #include <windows.h> /*variables y constantes*/ int opcionnombreusuario; char nombre[20]; int opcionllavepuertaventana; int posesionllave = 0; /*programa principal*/ int main (int argc, char* argv[]){ /*titulo*/ printf ("Juego\n\n"); Sleep(200); /*seleccion de nombre y confirmacion de este*/ do{ printf ("\n\nInserte un nombre de usuario en minisculas y pulse Intro: "); std::cin >> nombre; fflush (stdin); printf ("\nEntonces tu nombre es %s?" ,nombre); printf ("\n1-Si\n2-No\n"); std::cin >> opcionnombreusuario; fflush (stdin); system("cls"); }while (opcionnombreusuario != 1); /*planteamiento llave ventana puerta*/ printf ("\nSaludos %s, bienvenido a mi lamentable aventura de texto, espero que disfrutes!", nombre); Sleep (2000); system("cls"); /* do while para que se repita la pantalla mientras no tenga la llave */ do{ printf("\nacabas de aparecer en una habitacion extrana, puedes ver una ventana con rejas, una puerta y una llave.\nQue escojes?\n\n1-Ventana\n2-Puerta\n3-Investiga\n"); std::cin >> opcionllavepuertaventana ; fflush (stdin); /*Switch que da sentencias para las opciones de la primera pantalla */ switch (opcionllavepuertaventana){ case 1: printf ("Vaya, parece que la ventana tiene rejas, es imposible salir por aqui."); Sleep (3000); system ("cls"); break; case 2: if (posesionllave != 1) { printf ("Que mal, parece que la cerradura necesita una llave"); Sleep (3000); system ("cls"); } if (posesionllave == 1){ printf ("Has abierto la puerta con la llave"); Sleep (3000); } break; case 3: printf ("Investigando por el suelo te has encontrado una llave! Me pregunto como debe haber salido el que se la dejo dentro..."); posesionllave = 1; Sleep (3000); system ("cls"); break; default: printf ("Escoje una opcion valida, %s", nombre); Sleep (3000); system ("cls"); } }while ((posesionllave != 1)); printf ("Has abierto la puerta!"); }
y me funciona perfecto
|
|
« Última modificación: 9 Mayo 2018, 17:14 pm por Kenji-chan »
|
En línea
|
|
|
|
Chandalero
Desconectado
Mensajes: 5
|
eso es por que te has inventado una nueva estructura de control de flujo int pantallallavespuertaventana{ /*codigo ... ... ...*/
no puedes poner esto en el código si quieres que se repita el código al llegar al caso 2 tienes que hacerlo de forma diferente, yo lo he echo de la siguiente manera #include <iostream> #include <stdio.h> #include <stdlib.h> #include <windows.h> /*variables y constantes*/ int opcionnombreusuario; char nombre[20]; int opcionllavepuertaventana; int posesionllave = 0; /*programa principal*/ int main (int argc, char* argv[]){ /*titulo*/ printf ("Juego\n\n"); Sleep(200); /*seleccion de nombre y confirmacion de este*/ do{ printf ("\n\nInserte un nombre de usuario en minisculas y pulse Intro: "); std::cin >> nombre; fflush (stdin); printf ("\nEntonces tu nombre es %s?" ,nombre); printf ("\n1-Si\n2-No\n"); std::cin >> opcionnombreusuario; fflush (stdin); system("cls"); }while (opcionnombreusuario != 1); /*planteamiento llave ventana puerta*/ printf ("\nSaludos %s, bienvenido a mi lamentable aventura de texto, espero que disfrutes!", nombre); Sleep (2000); system("cls"); /* do while para que se repita la pantalla mientras no tenga la llave */ do{ printf("\nacabas de aparecer en una habitacion extrana, puedes ver una ventana con rejas, una puerta y una llave.\nQue escojes?\n\n1-Ventana\n2-Puerta\n3-Investiga\n"); std::cin >> opcionllavepuertaventana ; fflush (stdin); /*Switch que da sentencias para las opciones de la primera pantalla */ switch (opcionllavepuertaventana){ case 1: printf ("Vaya, parece que la ventana tiene rejas, es imposible salir por aqui."); Sleep (3000); system ("cls"); break; case 2: if (posesionllave != 1) { printf ("Que mal, parece que la cerradura necesita una llave"); Sleep (3000); system ("cls"); } if (posesionllave == 1){ printf ("Has abierto la puerta con la llave"); Sleep (3000); } break; case 3: printf ("Investigando por el suelo te has encontrado una llave! Me pregunto como debe haber salido el que se la dejo dentro..."); posesionllave = 1; Sleep (3000); system ("cls"); break; default: printf ("Escoje una opcion valida, %s", nombre); Sleep (3000); system ("cls"); } }while ((posesionllave != 1)); printf ("Has abierto la puerta!"); }
y me funciona perfecto Muchas gracias compañero! Voy a estudiar un poco el por qué de mi fallo! Quiero entender por que no funcionaba.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con sentencia sql
Programación Visual Basic
|
CARRY-ON
|
4
|
2,167
|
6 Octubre 2007, 19:31 pm
por CARRY-ON
|
|
|
Ayuda con sentencia sql
« 1 2 3 »
Bases de Datos
|
50l3r
|
24
|
16,869
|
26 Marzo 2010, 20:13 pm
por ssccaann43 ©
|
|
|
Ayuda con sentencia sql!!
Bases de Datos
|
Hartigan
|
4
|
3,272
|
28 Julio 2010, 16:52 pm
por ssccaann43 ©
|
|
|
cual es mi error: sentencia SQL
Bases de Datos
|
lapras
|
2
|
3,173
|
23 Octubre 2010, 00:48 am
por Shell Root
|
|
|
Sentencia Goto en Php , Salto de sentencia en Php
PHP
|
Graphixx
|
3
|
4,026
|
24 Mayo 2012, 17:46 pm
por Graphixx
|
|