Hola, tengo este codico en el compilador dev-c.
El problema que tengo es que en los menus que tengo, de alumnos y maestros, cuando elijo capturar o mostrar al terminar de hacer la funcion termina el programa.
Puse unas estructuras hacer-mientras para que siempre te regrese a algun menu y despues ya solo si lo desides, salir, mostrar datos, buscar datos, o salir del programa.
Por aho esta en codigo
Ojala vean que es lo que le falta o le sobra y me digan para que funcione correctamente.
El problema que tengo es que en los menus que tengo, de alumnos y maestros, cuando elijo capturar o mostrar al terminar de hacer la funcion termina el programa.
Puse unas estructuras hacer-mientras para que siempre te regrese a algun menu y despues ya solo si lo desides, salir, mostrar datos, buscar datos, o salir del programa.
Por aho esta en codigo
Código (c) [Seleccionar]
return;
que segun encontre deberia regresarme al menu anterior, donde quiera que este la funcion, y no lo hace.Ojala vean que es lo que le falta o le sobra y me digan para que funcione correctamente.
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct profesor
{
char nombre[50],codigo[10],carrera[40],materia1[20],materia2[20],materia3[20],materia4[20],materia5[20];
int opcmp;
} profesores[20];
struct alumno
{
char nombre[50],codigo[10],carrera[40];
int edad, opcma, numdecap;
float promedio[5];
char sexo[1];
} alumnos[100];
void menuprincipal(int *r)
{
int opcionmp;
do{
printf("1-Alumnos 2-Profesores 3-Salir del programa\n");
scanf("%d",&opcionmp);
system("CLS");
if(opcionmp!=1&&opcionmp!=2&&opcionmp!=3)
{printf("La opcion elegida es incorrecta\n");
system("PAUSE");
printf("'Presione cualquier tecla para continuar la ejecucion del programa'");
system("CLS");}}
while(opcionmp!=1&&opcionmp!=2&&opcionmp!=3);
*r=opcionmp;
}
void menuinicio(int opcionmi)
{
do{
printf("1-Alumnos 2-Profesores 3-Salir del programa\n");
scanf("%d",&opcionmi);
system("CLS");
if(opcionmi!=1&&opcionmi!=2&&opcionmi!=3)
{printf("La opcion elegida es incorrecta\n");
system("PAUSE");
printf("'Presione cualquier tecla para continuar la ejecucion del programa'");
system("CLS");}}
while(opcionmi!=1&&opcionmi!=2&&opcionmi!=3);
}
void capturardatosA(int r)
{
int i;
for(i=0;i<r;i++){
printf("Introduce el nombre del alumno: ");
fflush(stdin);
gets(alumnos[i].nombre);
do{
printf("Introduce la edad: ");
scanf("%i",&alumnos[i].edad);
if(alumnos[i].edad<0){
printf("La edad es incorrecta");
system("PAUSE");
}}
while(alumnos[i].edad<0);
printf("Introduce el sexo con las letras M o F : ");
fflush(stdin);
gets(alumnos[i].sexo);
printf("Escriba tal y como se encuentra en el menu la carrera del alumno:\ninformatica \ncomputacion \nindustrial \ncomunicaciones_y_electronica \ncivil \ningenieria_quimica \ncontaduria \nadministracion\n");
gets(alumnos[i].carrera);
printf("Introduce Su Codigo: ");
fflush(stdin);
gets(alumnos[i].codigo);
printf("Introduce Su Promedio: ");
scanf("%f", &alumnos[i].promedio);
printf("\n");
return;}
}
void mostrardatosA(int r)
{
int i;
for(i=0;i<r;i++){
printf("%s\n", alumnos[i].nombre);
printf("Edad: %i\n", alumnos[i].edad);
printf("Sexo: %s\n", alumnos[i].sexo);
printf("Carrera: %s\n", alumnos[i].carrera);
printf("Codigo: %s\n", alumnos[i].codigo);
printf("Promedio: %f", alumnos[i].promedio);
printf("\n\n");
}
}
void mostrarbusquedasA(int r)
{
printf("%s\n", alumnos[r].nombre);
printf("Edad: %i\n", alumnos[r].edad);
printf("Sexo: %s\n", alumnos[r].sexo);
printf("Carrera: %s\n", alumnos[r].carrera);
printf("Codigo: %s\n", alumnos[r].codigo);
printf("Promedio: %f", alumnos[r].promedio);
}
void capturardatosP(int r)
{
int i,l;
for(i=0;i<r;i++){
printf("Introduce el nombre del profesor: ");
fflush(stdin);
gets(profesores[i].nombre);
printf("Escriba tal y como se encuentra en el menu la carrera del profesor:\ninformatica\ncomputacion\nindustrial\ncomunicaciones_y_electronica\ncivil\ningenieria_quimica\ncontaduria\nadministracion\n");
gets(profesores[i].carrera);
printf("\nIntroduce Su Codigo: ");
fflush(stdin);
gets(profesores[i].codigo);
printf("¿Cuantas materias imparte? Como maximo 5. ");
scanf("%i", &l);
printf("Introduce el nombre de las materias:\n");
do{
switch(l){
case 1:
fflush(stdin);
gets(profesores[i].materia1);
break;
case 2:
fflush(stdin);
gets(profesores[i].materia1);
fflush(stdin);
gets(profesores[i].materia2);
break;
case 3:
fflush(stdin);
gets(profesores[i].materia1);
fflush(stdin);
gets(profesores[i].materia2);
fflush(stdin);
gets(profesores[i].materia3);
break;
case 4:
fflush(stdin);
gets(profesores[i].materia1);
fflush(stdin);
gets(profesores[i].materia2);
fflush(stdin);
gets(profesores[i].materia3);
fflush(stdin);
gets(profesores[i].materia4);
break;
case 5:
fflush(stdin);
gets(profesores[i].materia1);
fflush(stdin);
gets(profesores[i].materia2);
fflush(stdin);
gets(profesores[i].materia3);
fflush(stdin);
gets(profesores[i].materia4);
fflush(stdin);
gets(profesores[i].materia5);
break;
default:
printf("El numero de materias es incorrecto");}}
while(l!=1&&l!=2&&l!=3&&l!=4&&l!=5);
}}
void mostrarbusquedasP(int r)
{
printf("%s\n", profesores[r].nombre);
printf("Carrera: %s\n", profesores[r].carrera);
printf("Codigo: %s\n", profesores[r].codigo);
printf("Sus clases son:\n");
printf("%s",profesores[r].materia1);
printf("%s",profesores[r].materia2);
printf("%s",profesores[r].materia3);
printf("%s",profesores[r].materia4);
printf("%s",profesores[r].materia5);
}
void mostrardatosP(int r)
{
int i;
printf("\n");
for(i=0;i<r;i=i+1){
printf("%s\n", profesores[i].nombre);
printf("Carrera: %s\n", profesores[i].carrera);
printf("Codigo: %s\n", profesores[i].codigo);
printf("Imparte:\n");
printf("%s ", profesores[i].materia1);
printf("%s ", profesores[i].materia2);
printf("%s ", profesores[i].materia3);
printf("%s ", profesores[i].materia4);
printf("%s", profesores[i].materia5);
printf("\n\n");
}
}
void busquedadealumnos()
{
int z,i;
char codigoz[10],materia[20],carrera[40];
printf("1-Buscar por codigo 2-Buscar por materia 3-Buscar por carrera");
scanf("%d",&z);
switch(z){
case 1: fflush(stdin);
printf("Introduce el codigo que quieres buscar:\n");
gets(codigoz);
for(i=0;i<20;i=i+1){
if(strcmp(codigoz,alumnos[i].codigo)==0)
mostrarbusquedasA(i);
}
break;
case 2:
fflush(stdin);
printf("Introduce la materia que quieres buscar:\n");
gets(materia);
for(i=0;i<20;i=i+1){
if(strcmp(materia,profesores[i].materia1)==0)
mostrarbusquedasA(i);
}
for(i=0;i<20;i=i+1){
if(strcmp(materia,profesores[i].materia2)==0)
mostrarbusquedasA(i);
}
for(i=0;i<20;i=i+1){
if(strcmp(materia,profesores[i].materia3)==0)
mostrarbusquedasA(i);
}
for(i=0;i<20;i=i+1){
if(strcmp(materia,profesores[i].materia4)==0)
mostrarbusquedasA(i);
}
for(i=0;i<20;i=i+1){
if(strcmp(materia,profesores[i].materia5)==0)
mostrarbusquedasA(i);
}
break;
case 3: fflush(stdin);
printf("Introduce la carrera que deseas buscar:\n");
gets(carrera);
for(i=0;i<100;i=i+1){
if(strcmp(carrera, alumnos[i].carrera)==0)
mostrarbusquedasA(i);
}
break;
default:
printf("Opcion Incorrecta \n"); }
}
void busquedademaestros()
{
int z,i;
char codigoz[10],materia[20],carrera[40];
printf("1-Buscar por codigo 2-Buscar por materia 3-Buscar por carrera");
scanf("%d",&z);
switch(z){
case 1: fflush(stdin);
printf("Introduce el codigo que quieres buscar:\n");
gets(codigoz);
for(i=0;i<20;i=i+1){
if(strcmp(codigoz,alumnos[i].codigo)==0)
mostrarbusquedasP(i);
}
break;
case 2:
fflush(stdin);
printf("Introduce la materia que quieres buscar:\n");
gets(materia);
for(i=0;i<20;i=i+1){
if(strcmp(materia,profesores[i].materia1)==0)
mostrarbusquedasP(i);
}
for(i=0;i<20;i=i+1){
if(strcmp(materia,profesores[i].materia2)==0)
mostrarbusquedasP(i);
}
for(i=0;i<20;i=i+1){
if(strcmp(materia,profesores[i].materia3)==0)
mostrarbusquedasP(i);
}
for(i=0;i<20;i=i+1){
if(strcmp(materia,profesores[i].materia4)==0)
mostrarbusquedasP(i);
}
for(i=0;i<20;i=i+1){
if(strcmp(materia,profesores[i].materia5)==0)
mostrarbusquedasP(i);
}
break;
case 3: fflush(stdin);
printf("Introduce la carrera que deseas buscar:\n");
gets(carrera);
for(i=0;i<100;i=i+1){
if(strcmp(carrera, alumnos[i].carrera)==0)
mostrarbusquedasA(i);
}
break;
default:
printf("Opcion incorrecta \n"); }
}
void menuprofesores()
{
int x,y;
do{
printf("1-Capturar datos 2-Mostrar datos 3-Regresar al menu principal 4-Buscar por codigo, carrera o materia 5-Salir del programa\n");
scanf("%d",&profesores[20].opcmp);
if(profesores[20].opcmp!=1&&profesores[20].opcmp!=2&&profesores[20].opcmp!=3&&profesores[20].opcmp!=4&&profesores[20].opcmp!=5)
{printf("La opcion elegida es incorrecta");
system("PAUSE");
printf("'Presione cualquier tecla para continuar la ejecucion del programa'");
system("CLS");}}
while(profesores[20].opcmp!=1&&profesores[20].opcmp!=2&&profesores[20].opcmp!=3&&profesores[20].opcmp!=4&&profesores[20].opcmp!=5);
switch (profesores[20].opcmp){
case 1: {printf("¿Cuantos profesores desea capturar?");
scanf("%d",&x);
capturardatosP(x);
break;}
case 2: {printf("¿Cuantos profesores desea mostrar?");
scanf("%d",&y);
mostrardatosP(y);
break;}
case 3: return;
case 4: busquedademaestros();
case 5: printf("Hasta luego y gracias por el 100 ;)\n\n");
}}
void menualumnos()
{
int x,y;
do{
do{
printf("1-Capturar datos \n2-Mostrar datos \n3-Buscar por codigo, materia o carrera \n4-Regresar al menu principal \n5-Salir del programa\n");
scanf("\n%d",&alumnos[100].opcma);
system("CLS");
if(alumnos[100].opcma!=1&&alumnos[100].opcma!=2&&alumnos[100].opcma!=3&&alumnos[100].opcma!=4&&alumnos[100].opcma!=5)
{printf("La opcion elegida es incorrecta");
system("PAUSE");
printf("'Presione cualquier tecla para continuar la ejecucion del programa'");
system("CLS");}}
while(alumnos[100].opcma!=1&&alumnos[100].opcma!=2&&alumnos[100].opcma!=3&&alumnos[100].opcma!=4&&alumnos[100].opcma!=5);
switch (alumnos[100].opcma){
case 1: {printf("¿Cuantos alumnos desea capturar?");
scanf("%d",&x);
capturardatosA(x);
break;}
case 2: {printf("¿Cuantos alumnos desea mostrar?");
scanf("%d",&y);
mostrardatosA(y);
break;}
case 3: {busquedadealumnos();
break;}
case 4: return;
break;
case 5: printf("Hasta luego y gracias por el 100 ;)\n\n");
break;
}}
while(alumnos[100].opcma!=1&&alumnos[100].opcma!=2&&alumnos[100].opcma!=3&&alumnos[100].opcma!=4&&alumnos[100].opcma!=5);
;}
int main(int argc, char *argv[])
{
int x;
menuprincipal(&x);
switch(x){
case 1: menualumnos();
break;
case 2: menuprofesores();
break;
default: printf("Hasta luego y gracias por el 100 ;)\n\n");
break;}
system("PAUSE");
return 0;
}