Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema switch case

Estas en el tema de problema switch case en el foro de C/C++ en Foros del Web. Cordial Saludo Compañeros Por favor me pueden colaborar, con las siguientes dudas, en la elaboración de un ejercicio, en el cual piden capturar las notas ...
  #1 (permalink)  
Antiguo 12/10/2009, 17:40
 
Fecha de Ingreso: octubre-2009
Mensajes: 7
Antigüedad: 14 años, 6 meses
Puntos: 0
problema switch case

Cordial Saludo Compañeros

Por favor me pueden colaborar, con las siguientes dudas, en la elaboración de un ejercicio, en el cual piden capturar las notas de los cursos de primaria. De primero a quinto, sacar 4 notas por curso y el respectivo promedio. Lo estoy realizando en Turbo c++ versión 3.0 y también en DEV c++ versión 7.0. Tengo solo este menú y quiero saber si dentro de estos menú, que esta hecho, puedo crear submenús. Este menú principal, esta hecho empleando el switch case:


Estas son las líneas de código que tengo
#include<stdio.h>
#include<conio.h>
void main(void)
{

char opc='*';
while (opc!='5')
{
clrscr();
gotoxy(10,10);
cout<<" 1.-PARA CURSOS";
gotoxy(10,12);
cout<<" 2.-PARA ESTUDIANTES";
gotoxy(10,14);
cout<<" 3.-PARA MATERIAS";
gotoxy(10,16);
cout<<" 4.-PARA NOTAS";
gotoxy(10,18);
cout<<" 5.-PARA SALIR";
gotoxy(10,24);
cout<<" DIGITE OPCION\n ";
opc=getch();
switch(opc)
{
case '1':
gotoxy(40,11);
cout<<"INGRESAR A CURSOS\n";
opc1=getch();
switch(opc1)
case '0':
gotoxy (26,12);
char opc1='*';
while (opc1!='5')
clrscr();
cout<<"1..NUEVO CURSO";
getch();
char cursos[5];
getch();
break;
case '2':
cout<<"INGRESAR A ESTUDANTES";
getch();
break;
case '3':
cout<<"INGRESAR A MATERIAS";
getch();
break;
case '4':
cout<<"INGRESAR A NOTAS";
getch();
break;
case '5':
clrscr();
cout<<"ADIOS PUES";
getch();
break;
default:
gotoxy(14,5);
cout<<"A BESTIA";
getch();
break;
}
}
}

1. ¿En el case 1 de INGRESAR A CURSOS, puedo colocar otros switch case anidados para crear otros submenús?

2. En este mismo case1, estoy creando un vector char cursos [4], esto con el fin de crear los cinco cursos de primaria. De Primero a quinto.

3. Puedo declarar este vector char cursos[4],aquí en el switch case, o lo tengo que hacer fuera de estas líneas al comienzo

4. En este switch case 0, estoy colocando 2 getch (), pasa algo si los dejo.

5. En ingresar estudiantes, voy a crear un vector char estudiantes[15][30] Que es de 15 estudiantes y almacenaría el nombre y apellidos de cada uno , de máximo 30 caracteres

Gracias por la ayuda que me puedan brindar.

Jimgom 402
  #2 (permalink)  
Antiguo 12/10/2009, 18:52
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: problema switch case

1) Si lo que quieres es que al escoger la opcion INGRESAR A CURSOS te salga otro menu, pues si se puede hacer, asi como dices:
Código c++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. char menu1(){
  6. char op;
  7. system("cls");
  8.   cout<<"1. Opcion 1\n";
  9.   cout<<"2. Opcion 2\n";
  10.   cout<<"3. Salir\n";
  11.   cout<<"Escoge opcione: ";cin>>op;
  12.  
  13.   return op;
  14. }
  15.  
  16. char menu2(){
  17. char op;
  18. system("cls");
  19.   cout<<"\n\nSubmenu de OPcion 1\n";
  20.   cout<<"1 Opcion 1\n";
  21.   cout<<"2 Opcion 2\n";
  22.   cout<<"3 Salir\n";
  23.   cout<<"Escoge opcione: ";cin>>op;
  24.  
  25.   return op;
  26. }
  27.  
  28. int main(){
  29. char op1,op2;
  30. do{
  31. op1=menu1();
  32.   switch(op1){
  33.     case  '1':
  34.              do{
  35.                op2=menu2();
  36.                switch(op2){
  37.  
  38.                    case '1':
  39.                         cout<<"\nOpcion 1 del submenu";
  40.                         getch();
  41.                         break;
  42.  
  43.                    case '2':
  44.                      cout<<"\nOpcion 2 del submenu";
  45.                      getch();
  46.                         break;
  47.                  
  48.                }
  49.              }while(op2!='3');
  50.     break;
  51.     case '2':
  52.        cout<<"\nOpcion 2 no tiene submenu";
  53.        getch();
  54.     break;
  55.  
  56.   }
  57.  }while(op1!='3');
  58. }
  #3 (permalink)  
Antiguo 12/10/2009, 18:58
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: problema switch case

1) Si lo que quieres es que al escoger la opcion INGRESAR A CURSOS te salga otro menu, pues si se puede hacer, asi como dices:
Código c++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. char menu1(){
  6. char op;
  7. system("cls");
  8.   cout<<"1. Opcion 1\n";
  9.   cout<<"2. Opcion 2\n";
  10.   cout<<"3. Salir\n";
  11.   cout<<"Escoge opcione: ";cin>>op;
  12.  
  13.   return op;
  14. }
  15.  
  16. char menu2(){
  17. char op;
  18. system("cls");
  19.   cout<<"\n\nSubmenu de OPcion 1\n";
  20.   cout<<"1 Opcion 1\n";
  21.   cout<<"2 Opcion 2\n";
  22.   cout<<"3 Salir\n";
  23.   cout<<"Escoge opcione: ";cin>>op;
  24.  
  25.   return op;
  26. }
  27.  
  28. int main(){
  29. char op1,op2;
  30. do{
  31. op1=menu1();
  32.   switch(op1){
  33.     case  '1':
  34.              do{
  35.                op2=menu2();
  36.                switch(op2){
  37.  
  38.                    case '1':
  39.                         cout<<"\nOpcion 1 del submenu";
  40.                         getch();
  41.                         break;
  42.  
  43.                    case '2':
  44.                      cout<<"\nOpcion 2 del submenu";
  45.                      getch();
  46.                         break;
  47.                  
  48.                }
  49.              }while(op2!='3');
  50.     break;
  51.     case '2':
  52.        cout<<"\nOpcion 2 no tiene submenu";
  53.        getch();
  54.     break;
  55.  
  56.   }
  57.  }while(op1!='3');
  58. }
  #4 (permalink)  
Antiguo 12/10/2009, 19:14
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: problema switch case

3) Preferiblemente declaralas arriba. de lo contrario obtendras un error de incializacion.

4) no hay error en colocar varios getch(), solo que ya sabes la ejecucion se parara hasta que presiones una tecla.

5) efectivamente ese vector te permite hacer lo ke dices.


Cualquier otra duda.... no dudes mas y plasmala

Nota: Disculpa por haber mandado dos veces el codigo Fuente, tuve problemas con el navegador (ES EL MISMO CODIGO EN AMBOS)
  #5 (permalink)  
Antiguo 13/10/2009, 10:21
 
Fecha de Ingreso: octubre-2009
Mensajes: 7
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: problema switch case

Compañero mhax

Muchas gracias por sus aportes y valiosa ayuda. Pondre en practica sus consejos y le vuelvo a contar, en lo posible esta noche, ya que en el día me queda dificl. Por favor ota pregunta, que deberia tener uno encuenta para la elaboración de estos tipos de programa. Sera acaso lo siguiente :
1.Elaborar el algoritmo en papel y lugo el pseudododigo tambien en papel.
2. Lo digo por que de pronto no estoy haciendo bien, ya que lo que tengo en papel es poco y estoy haciendo directamente en el Turbo c++ y en el Dev c++.
3. Hay algun sitio en castellano, preferiblementede codigo libre, en el que haya ejercicios,que le ayuden a uno a empezar a despertar la logica. Es que sey novato en el asunto.

Cordialmente,
Jimgom
  #6 (permalink)  
Antiguo 13/10/2009, 20:56
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años
Puntos: 5
Respuesta: problema switch case

Hola, disculpa que entre en la discusion pero definitivamente lo que debes hacer es empezar a plasmar el codigo en papel, asi es mucho mas facil detectar un posible error, de hecho asi deberia ser siempre, analizar primero el problema que se tiene y posteriormente plasmarlo en papel...

una pagina que te puede ayudar es esta:
http://c.conclase.net/

cualquier cosa no dudes en seguir plasmando tus dudas

saludos
anubis
__________________
Bienvenidos los karmas.
Quejas, sugerencias o dudas, se awantan......
  #7 (permalink)  
Antiguo 14/10/2009, 19:59
 
Fecha de Ingreso: octubre-2009
Mensajes: 7
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: problema switch case

Muchas Gracias

Compañero Anubis_Slash.

Por su aporte y colaboración.

Atte

Jimgom402
  #8 (permalink)  
Antiguo 14/10/2009, 20:03
 
Fecha de Ingreso: octubre-2009
Mensajes: 7
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: problema switch case

Compañero mhax

*Muchas gracias por su aporte y valiosa ayuda. Una pregunta por favor el system("cls"); es una clase o hace eferncia algun tipo de función y ese cls, se relaciona con el clrscr.

*int main(){
char op1,op2;
do{
Este do lo puedo eliminar ,esta relacionado con el while.


Cordialmente,
Jimgom[/QUOTE]
  #9 (permalink)  
Antiguo 16/10/2009, 15:19
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: problema switch case

Saludos jimgom402

Bueno el system("cls") es una funcion que se encuentra en la libreria stdlib.h
hace lo mismo que clrscr(); (limpia la pantalla).

Respecto a la otra duda: existen diferentes ciclos en c/c++
uno de ellos es el que uso en el codigo anterior,
do{
sentencias;
}while(Condicion);

existe otro ciclo ademas de este: el while

while(Condicion){
sentencias;
}

Cualquier duda plasmala,pues para eso son los foros
  #10 (permalink)  
Antiguo 16/10/2009, 15:26
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: problema switch case

La funcion system hace referencia a funcionalidades del sistema (segun el sistema operativo)
Ejemplo:

system("start calc.exe");

dentro de las comillas va cualquier comando que puedes ingresar desde el cmd
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:19.