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
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.
#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"); if(opcionmp!=1&&opcionmp!=2&&opcionmp!=3)
{printf("La opcion elegida es incorrecta\n"); printf("'Presione cualquier tecla para continuar la ejecucion del programa'"); while(opcionmp!=1&&opcionmp!=2&&opcionmp!=3);
*r=opcionmp;
}
void menuinicio(int opcionmi)
{
do{
printf("1-Alumnos 2-Profesores 3-Salir del programa\n"); if(opcionmi!=1&&opcionmi!=2&&opcionmi!=3)
{printf("La opcion elegida es incorrecta\n"); printf("'Presione cualquier tecla para continuar la ejecucion del programa'"); 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: "); do{
printf("Introduce la edad: "); scanf("%i",&alumnos
[i
].
edad); if(alumnos[i].edad<0){
printf("La edad es incorrecta"); }}
while(alumnos[i].edad<0);
printf("Introduce el sexo con las letras M o F : "); 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: "); printf("Introduce Su Promedio: "); scanf("%f", &alumnos
[i
].
promedio); 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); }
}
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: "); 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: "); gets(profesores
[i
].
codigo); printf("¿Cuantas materias imparte? Como maximo 5. "); printf("Introduce el nombre de las materias:\n"); do{
switch(l){
case 1:
gets(profesores
[i
].
materia1); break;
case 2:
gets(profesores
[i
].
materia1); gets(profesores
[i
].
materia2); break;
case 3:
gets(profesores
[i
].
materia1); gets(profesores
[i
].
materia2); gets(profesores
[i
].
materia3); break;
case 4:
gets(profesores
[i
].
materia1); gets(profesores
[i
].
materia2); gets(profesores
[i
].
materia3); gets(profesores
[i
].
materia4); break;
case 5:
gets(profesores
[i
].
materia1); gets(profesores
[i
].
materia2); gets(profesores
[i
].
materia3); gets(profesores
[i
].
materia4); 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("%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;
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("%s ", profesores
[i
].
materia1); printf("%s ", profesores
[i
].
materia2); printf("%s ", profesores
[i
].
materia3); printf("%s ", profesores
[i
].
materia4); printf("%s", profesores
[i
].
materia5); }
}
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"); switch(z){
printf("Introduce el codigo que quieres buscar:\n"); for(i=0;i<20;i=i+1){
if(strcmp(codigoz
,alumnos
[i
].
codigo)==0) mostrarbusquedasA(i);
}
break;
case 2:
printf("Introduce la materia que quieres buscar:\n"); 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;
printf("Introduce la carrera que deseas buscar:\n"); 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"); switch(z){
printf("Introduce el codigo que quieres buscar:\n"); for(i=0;i<20;i=i+1){
if(strcmp(codigoz
,alumnos
[i
].
codigo)==0) mostrarbusquedasP(i);
}
break;
case 2:
printf("Introduce la materia que quieres buscar:\n"); 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;
printf("Introduce la carrera que deseas buscar:\n"); 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"); printf("'Presione cualquier tecla para continuar la ejecucion del programa'"); 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?"); capturardatosP(x);
break;}
case 2: {printf("¿Cuantos profesores desea mostrar?"); 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); 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"); printf("'Presione cualquier tecla para continuar la ejecucion del programa'"); 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?"); capturardatosA(x);
break;}
case 2: {printf("¿Cuantos alumnos desea mostrar?"); 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;}
return 0;
}