Preguntas con swith case

julio
13 de Octubre del 2009
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 OPCIONn ";
opc=getch();
switch(opc)
{
case '1':
gotoxy(40,11);
cout<<"INGRESAR A CURSOSn";
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


Paco
13 de Octubre del 2009
Claro que puedes crear submenus. Dentro de cada case puedes anidar un switch, o bien desde el case puedes llamar a una funcion que te genere el submenu. Personalmente prefiero el segundo metodo, no me gustan las funciones grandes. Algo asi como:

switch (opcion)
{
case 1:
crear_submenu_1(lista parametros);
// proceso...
break;
case 2:
crear_submenu_2(lista_parametros);
// proceso...
break;
// Resto de cases
}

En cuanto a las variables, piensa en que partes del programa deben ser conocidas y declaralas en funcion de eso.

Saludos,

PACO