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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda lenguaje C pequeña duda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda lenguaje C pequeña duda  (Leído 1,788 veces)
SKaY9

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Ayuda lenguaje C pequeña duda
« en: 11 Febrero 2013, 21:42 pm »

Buenas, tengo el siguiente codigo y lo que quiero es que me lea el menú y si le doy a la letra q se me finalice  el programa (que no se porque no me va cuando le doy a una letra pero si cuando le pongo un número) y que si por ejemplo le doy a la z o cualquier numero que no sea ni el 1 ni el 2 que me salga "Error: Opcion incorrecta" y vuelva otra vez a pedirme la opción, el problema es que me sale un bucle infinito y no se porque y lo que quiero es que me salga "Error: Opcion incorrecta" y vuelva a pedirme otra vez la opcion hasta que de al 1,2 o q.

Código:
#include <iostream>
using namespace std;
main(){

int opcion;
do {

cout<<"1- Nueva partida"<<endl;
cout<<"2- Cargar partida"<<endl;
cout<<"q- Salir"<<endl;
cout<<"Opcion:"<<endl;
cin>>opcion;

  switch (opcion){
 
case 1:

cout<<"1- Nueva partida"<<endl;

break;

case 2:

cout<<"2-  partida"<<endl;

break;


default:

cout<<"Error: Opcion incorrecta"<<endl;



  }


}while(opcion!=q);
   
}


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda lenguaje C pequeña duda
« Respuesta #1 en: 11 Febrero 2013, 22:19 pm »

Buenas, tengo el siguiente codigo y lo que quiero ...................

Mejor tomar opción como char y así al entrar una letra no se colgará.

Fíjate en que ahora los case son 'Nº ':


Código
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.  
  5. char opcion;
  6.  do {
  7.  
  8.    cout<<"1- Nueva partida"<<endl;
  9.    cout<<"2- Cargar partida"<<endl;
  10.    cout<<"3- Salir"<<endl;
  11.  
  12.      cout<<"Opcion:"<<endl;
  13.    cin>>opcion;
  14.      switch (opcion){
  15.        case '1':
  16.          cout<<"1- Nueva partida"<<endl;
  17.          break;
  18.        case '2':
  19.          cout<<"2-  partida"<<endl;
  20.          break;
  21.        case '3':
  22.          cout<<"3-  Adios"<<endl;
  23.          break;
  24.        default:
  25.          cout<<"Error: Opcion incorrecta"<<endl;
  26.      }
  27.  }while(opcion!='3');
  28.  return 0;
  29. }
  30.  
  31.  

Otra opción es "comerse" el carácter no válido:

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. using namespace std;
  4. int main(){
  5.  
  6. int opcion;
  7.  do {
  8.  
  9.    cout<<"1- Nueva partida"<<endl;
  10.    cout<<"2- Cargar partida"<<endl;
  11.    cout<<"3- Salir"<<endl;
  12.  
  13.      cout<<"Opcion:"<<endl;
  14.    cin>>opcion;
  15.    while ( getchar() != '\n' );
  16.      switch (opcion){
  17.        case 1:
  18.          cout<<"1- Nueva partida"<<endl<<endl;
  19.          break;
  20.        case 2:
  21.          cout<<"2-  partida"<<endl<<endl;
  22.          break;
  23.        case 3:
  24.          cout<<"3-  Adios"<<endl<<endl;
  25.          break;
  26.        default:
  27.          cout<<"Error: Opcion incorrecta"<<endl<<endl;
  28.      }
  29.  
  30.  }while(opcion!=3);
  31.  return 0;
  32. }
  33.  
Saluditos!.


« Última modificación: 12 Febrero 2013, 14:41 pm por leosansan » En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Ayuda lenguaje C pequeña duda
« Respuesta #2 en: 12 Febrero 2013, 15:48 pm »

¡Buenas!

No te leera caracteres porque espera leer un entero. Cuando introduzcas un caracter comprueba el failbit de cin (cin.fail()). Supongo que se te activara.

Código
  1.  
  2. if(cin.fail())
  3. {
  4.    cout << "Error de lectura." << endl;
  5.    return 0;
  6. }
  7.  

En este caso, como las opciones del menu no llegan a los dos digitos, como bien te ha dicho leosansan, puedes utilzar un caracter para leer la opcion del menu. Sino, utiliza un valor numerico tambien para la opcion de salir. Pero no mezcles valores numericos y caracteres.

¡Saludos!
« Última modificación: 12 Febrero 2013, 15:51 pm por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
SKaY9

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Ayuda lenguaje C pequeña duda
« Respuesta #3 en: 12 Febrero 2013, 19:14 pm »

Era que tenia que poner al valor opcion un char y no un int, ya que cuando ponia una letra me salia el bucle infinito, que error más tonto cometi y el tiempo que estuve pensando porque y no lograba averiguarlo, gracias por el aporte.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Una pequeña duda....
Software
Viequense 3 2,535 Último mensaje 3 Agosto 2004, 08:41 am
por Luis_Kano
;D Pequeña duda
Diseño Gráfico
RastonE 3 4,197 Último mensaje 13 Octubre 2005, 21:20 pm
por Morris
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 10,310 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
[AYUDA] Pequeña duda! (visual basic imagen a .JPG)
Programación Visual Basic
bruno23 9 5,206 Último mensaje 12 Abril 2011, 03:34 am
por hunter18
[AYUDA] Pequeña duda para un proyecto que se me ocurrio en el baño
Programación General
Noxware 4 2,085 Último mensaje 15 Mayo 2014, 20:32 pm
por Noxware
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines