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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funciones, selectivas y repetitivas. (tiene un error al ejecutarse, ayuda!)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funciones, selectivas y repetitivas. (tiene un error al ejecutarse, ayuda!)  (Leído 2,893 veces)
jravelar

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Funciones, selectivas y repetitivas. (tiene un error al ejecutarse, ayuda!)
« en: 4 Junio 2010, 03:52 am »

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
Código
  1. 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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct profesor
  6. {
  7.       char nombre[50],codigo[10],carrera[40],materia1[20],materia2[20],materia3[20],materia4[20],materia5[20];
  8.       int opcmp;
  9. } profesores[20];
  10.  
  11. struct alumno
  12. {
  13.       char nombre[50],codigo[10],carrera[40];
  14.       int edad, opcma, numdecap;      
  15.       float promedio[5];
  16.       char sexo[1];
  17. } alumnos[100];
  18.  
  19.  
  20. void menuprincipal(int *r)
  21. {    
  22.     int opcionmp;
  23.     do{
  24.        printf("1-Alumnos  2-Profesores  3-Salir del programa\n");
  25.        scanf("%d",&opcionmp);
  26.        system("CLS");
  27.        if(opcionmp!=1&&opcionmp!=2&&opcionmp!=3)
  28.           {printf("La opcion elegida es incorrecta\n");
  29.           system("PAUSE");
  30.           printf("'Presione cualquier tecla para continuar la ejecucion del programa'");
  31.           system("CLS");}}
  32.     while(opcionmp!=1&&opcionmp!=2&&opcionmp!=3);
  33.     *r=opcionmp;
  34. }
  35.  
  36. void menuinicio(int opcionmi)
  37. {
  38.     do{
  39.        printf("1-Alumnos  2-Profesores  3-Salir del programa\n");
  40.        scanf("%d",&opcionmi);
  41.        system("CLS");
  42.        if(opcionmi!=1&&opcionmi!=2&&opcionmi!=3)
  43.           {printf("La opcion elegida es incorrecta\n");
  44.           system("PAUSE");
  45.           printf("'Presione cualquier tecla para continuar la ejecucion del programa'");
  46.           system("CLS");}}
  47.     while(opcionmi!=1&&opcionmi!=2&&opcionmi!=3);
  48. }
  49.  
  50.  
  51. void capturardatosA(int r)
  52. {
  53.     int i;
  54.     for(i=0;i<r;i++){
  55.                      printf("Introduce el nombre del alumno: ");
  56.                      fflush(stdin);
  57.                      gets(alumnos[i].nombre);
  58.                      do{
  59.                      printf("Introduce la edad: ");
  60.                      scanf("%i",&alumnos[i].edad);
  61.                      if(alumnos[i].edad<0){
  62.                                            printf("La edad es incorrecta");
  63.                                            system("PAUSE");
  64.                                            }}
  65.                      while(alumnos[i].edad<0);
  66.                      printf("Introduce el sexo con las letras  M  o  F  : ");
  67.                      fflush(stdin);
  68.                      gets(alumnos[i].sexo);
  69.                      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");
  70.                      gets(alumnos[i].carrera);
  71.                      printf("Introduce Su Codigo: ");
  72.                      fflush(stdin);
  73.                      gets(alumnos[i].codigo);
  74.                      printf("Introduce Su Promedio: ");
  75.                      scanf("%f", &alumnos[i].promedio);                        
  76.                      printf("\n");
  77.                      return;}
  78.  
  79. }
  80.  
  81. void mostrardatosA(int r)
  82. {
  83.     int i;
  84.     for(i=0;i<r;i++){
  85.                         printf("%s\n", alumnos[i].nombre);
  86.                         printf("Edad: %i\n", alumnos[i].edad);
  87.                         printf("Sexo: %s\n", alumnos[i].sexo);                        
  88.                         printf("Carrera: %s\n", alumnos[i].carrera);
  89.                         printf("Codigo: %s\n", alumnos[i].codigo);
  90.                         printf("Promedio: %f", alumnos[i].promedio);
  91.                         printf("\n\n");
  92.                         }
  93. }
  94.  
  95. void mostrarbusquedasA(int r)
  96. {
  97.     printf("%s\n", alumnos[r].nombre);
  98.     printf("Edad: %i\n", alumnos[r].edad);
  99.     printf("Sexo: %s\n", alumnos[r].sexo);                        
  100.     printf("Carrera: %s\n", alumnos[r].carrera);
  101.     printf("Codigo: %s\n", alumnos[r].codigo);
  102.     printf("Promedio: %f", alumnos[r].promedio);    
  103. }      
  104.  
  105. void capturardatosP(int r)
  106. {
  107.     int i,l;
  108.     for(i=0;i<r;i++){
  109.                        printf("Introduce el nombre del profesor: ");
  110.                        fflush(stdin);
  111.                        gets(profesores[i].nombre);
  112.                        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");
  113.                        gets(profesores[i].carrera);
  114.                        printf("\nIntroduce Su Codigo: ");
  115.                        fflush(stdin);
  116.                        gets(profesores[i].codigo);  
  117.                        printf("¿Cuantas materias imparte? Como maximo 5. ");
  118.                        scanf("%i", &l);
  119.                        printf("Introduce el nombre de las materias:\n");
  120.                        do{
  121.                        switch(l){
  122.                                  case 1:
  123.                                       fflush(stdin);
  124.                                       gets(profesores[i].materia1);
  125.                                       break;
  126.                                  case 2:
  127.                                       fflush(stdin);
  128.                                       gets(profesores[i].materia1);
  129.                                       fflush(stdin);
  130.                                       gets(profesores[i].materia2);
  131.                                       break;
  132.                                  case 3:
  133.                                       fflush(stdin);
  134.                                       gets(profesores[i].materia1);
  135.                                       fflush(stdin);
  136.                                       gets(profesores[i].materia2);
  137.                                       fflush(stdin);
  138.                                       gets(profesores[i].materia3);
  139.                                       break;
  140.                                  case 4:
  141.                                       fflush(stdin);
  142.                                       gets(profesores[i].materia1);
  143.                                       fflush(stdin);
  144.                                       gets(profesores[i].materia2);
  145.                                       fflush(stdin);
  146.                                       gets(profesores[i].materia3);
  147.                                       fflush(stdin);
  148.                                       gets(profesores[i].materia4);
  149.                                       break;
  150.                                  case 5:
  151.                                       fflush(stdin);
  152.                                       gets(profesores[i].materia1);
  153.                                       fflush(stdin);
  154.                                       gets(profesores[i].materia2);
  155.                                       fflush(stdin);
  156.                                       gets(profesores[i].materia3);
  157.                                       fflush(stdin);
  158.                                       gets(profesores[i].materia4);
  159.                                       fflush(stdin);
  160.                                       gets(profesores[i].materia5);
  161.                                       break;
  162.                                   default:
  163.                                            printf("El numero de materias es incorrecto");}}
  164.                        while(l!=1&&l!=2&&l!=3&&l!=4&&l!=5);                                      
  165. }}
  166.  
  167. void mostrarbusquedasP(int r)
  168. {
  169.     printf("%s\n", profesores[r].nombre);
  170.     printf("Carrera: %s\n", profesores[r].carrera);
  171.     printf("Codigo: %s\n", profesores[r].codigo);
  172.     printf("Sus clases son:\n");
  173.     printf("%s",profesores[r].materia1);
  174.     printf("%s",profesores[r].materia2);
  175.     printf("%s",profesores[r].materia3);
  176.     printf("%s",profesores[r].materia4);
  177.     printf("%s",profesores[r].materia5);
  178. }  
  179.  
  180. void mostrardatosP(int r)
  181. {
  182.     int i;
  183.     printf("\n");
  184.     for(i=0;i<r;i=i+1){
  185.                         printf("%s\n", profesores[i].nombre);
  186.                         printf("Carrera: %s\n", profesores[i].carrera);
  187.                         printf("Codigo: %s\n", profesores[i].codigo);
  188.                         printf("Imparte:\n");
  189.                         printf("%s  ", profesores[i].materia1);
  190.                         printf("%s  ", profesores[i].materia2);
  191.                         printf("%s  ", profesores[i].materia3);
  192.                         printf("%s  ", profesores[i].materia4);
  193.                         printf("%s", profesores[i].materia5);
  194.                         printf("\n\n");
  195.                         }
  196. }  
  197.  
  198. void busquedadealumnos()
  199. {                  
  200.                    int z,i;
  201.                    char codigoz[10],materia[20],carrera[40];
  202.                    printf("1-Buscar por codigo   2-Buscar por materia  3-Buscar por carrera");
  203.                    scanf("%d",&z);
  204.                    switch(z){
  205.                    case 1:            fflush(stdin);
  206.                                       printf("Introduce el codigo que quieres buscar:\n");
  207.                                       gets(codigoz);
  208.                                       for(i=0;i<20;i=i+1){
  209.                                                           if(strcmp(codigoz,alumnos[i].codigo)==0)
  210.                                                           mostrarbusquedasA(i);                                                                              
  211.                                                           }
  212.                                       break;
  213.                    case 2:
  214.                                       fflush(stdin);
  215.                                       printf("Introduce la materia que quieres buscar:\n");
  216.                                       gets(materia);
  217.                                       for(i=0;i<20;i=i+1){
  218.                                                           if(strcmp(materia,profesores[i].materia1)==0)
  219.                                                           mostrarbusquedasA(i);
  220.                                                           }
  221.                                       for(i=0;i<20;i=i+1){
  222.                                                           if(strcmp(materia,profesores[i].materia2)==0)
  223.                                                           mostrarbusquedasA(i);
  224.                                                           }
  225.                                       for(i=0;i<20;i=i+1){
  226.                                                           if(strcmp(materia,profesores[i].materia3)==0)
  227.                                                           mostrarbusquedasA(i);
  228.                                                           }
  229.                                       for(i=0;i<20;i=i+1){
  230.                                                           if(strcmp(materia,profesores[i].materia4)==0)
  231.                                                           mostrarbusquedasA(i);
  232.                                                           }              
  233.                                       for(i=0;i<20;i=i+1){
  234.                                                           if(strcmp(materia,profesores[i].materia5)==0)
  235.                                                           mostrarbusquedasA(i);
  236.                                                           }                              
  237.                                       break;
  238.                    case 3:            fflush(stdin);
  239.                                       printf("Introduce la carrera que deseas buscar:\n");
  240.                                       gets(carrera);
  241.                                       for(i=0;i<100;i=i+1){
  242.                                                           if(strcmp(carrera, alumnos[i].carrera)==0)
  243.                                                           mostrarbusquedasA(i);                                                                              
  244.                                                           }
  245.                                       break;
  246.                                  default:
  247.                                          printf("Opcion Incorrecta \n"); }
  248. }
  249.  
  250. void busquedademaestros()
  251. {                  
  252.                    int z,i;
  253.                    char codigoz[10],materia[20],carrera[40];
  254.                    printf("1-Buscar por codigo   2-Buscar por materia  3-Buscar por carrera");
  255.                    scanf("%d",&z);
  256.                    switch(z){
  257.                    case 1:            fflush(stdin);
  258.                                       printf("Introduce el codigo que quieres buscar:\n");
  259.                                       gets(codigoz);
  260.                                       for(i=0;i<20;i=i+1){
  261.                                                           if(strcmp(codigoz,alumnos[i].codigo)==0)
  262.                                                           mostrarbusquedasP(i);                                                                              
  263.                                                           }
  264.                                       break;
  265.                    case 2:
  266.                                       fflush(stdin);
  267.                                       printf("Introduce la materia que quieres buscar:\n");
  268.                                       gets(materia);
  269.                                       for(i=0;i<20;i=i+1){
  270.                                                           if(strcmp(materia,profesores[i].materia1)==0)
  271.                                                           mostrarbusquedasP(i);
  272.                                                           }
  273.                                       for(i=0;i<20;i=i+1){
  274.                                                           if(strcmp(materia,profesores[i].materia2)==0)
  275.                                                           mostrarbusquedasP(i);
  276.                                                           }
  277.                                       for(i=0;i<20;i=i+1){
  278.                                                           if(strcmp(materia,profesores[i].materia3)==0)
  279.                                                           mostrarbusquedasP(i);
  280.                                                           }
  281.                                       for(i=0;i<20;i=i+1){
  282.                                                           if(strcmp(materia,profesores[i].materia4)==0)
  283.                                                           mostrarbusquedasP(i);
  284.                                                           }              
  285.                                       for(i=0;i<20;i=i+1){
  286.                                                           if(strcmp(materia,profesores[i].materia5)==0)
  287.                                                           mostrarbusquedasP(i);
  288.                                                           }                              
  289.                                       break;
  290.                    case 3:            fflush(stdin);
  291.                                       printf("Introduce la carrera que deseas buscar:\n");
  292.                                       gets(carrera);
  293.                                       for(i=0;i<100;i=i+1){
  294.                                                           if(strcmp(carrera, alumnos[i].carrera)==0)
  295.                                                           mostrarbusquedasA(i);                                                                              
  296.                                                           }
  297.                                       break;
  298.                                  default:
  299.                                          printf("Opcion incorrecta \n"); }
  300. }
  301.  
  302. void menuprofesores()
  303. {
  304.     int x,y;
  305.     do{
  306.        printf("1-Capturar datos  2-Mostrar datos  3-Regresar al menu principal 4-Buscar por codigo, carrera o materia 5-Salir del programa\n");
  307.        scanf("%d",&profesores[20].opcmp);
  308.        if(profesores[20].opcmp!=1&&profesores[20].opcmp!=2&&profesores[20].opcmp!=3&&profesores[20].opcmp!=4&&profesores[20].opcmp!=5)
  309.           {printf("La opcion elegida es incorrecta");
  310.           system("PAUSE");
  311.           printf("'Presione cualquier tecla para continuar la ejecucion del programa'");
  312.           system("CLS");}}
  313.     while(profesores[20].opcmp!=1&&profesores[20].opcmp!=2&&profesores[20].opcmp!=3&&profesores[20].opcmp!=4&&profesores[20].opcmp!=5);
  314.     switch (profesores[20].opcmp){
  315.            case 1: {printf("¿Cuantos profesores desea capturar?");
  316.                 scanf("%d",&x);
  317.                 capturardatosP(x);
  318.                 break;}
  319.            case 2: {printf("¿Cuantos profesores desea mostrar?");
  320.                 scanf("%d",&y);
  321.                 mostrardatosP(y);
  322.                 break;}
  323.            case 3: return;
  324.            case 4: busquedademaestros();
  325.            case 5: printf("Hasta luego y gracias por el 100 ;)\n\n");
  326. }}    
  327.  
  328. void menualumnos()
  329. {
  330.     int x,y;
  331.     do{
  332.     do{
  333.        printf("1-Capturar datos \n2-Mostrar datos \n3-Buscar por codigo, materia o carrera \n4-Regresar al menu principal \n5-Salir del programa\n");
  334.        scanf("\n%d",&alumnos[100].opcma);
  335.        system("CLS");
  336.        if(alumnos[100].opcma!=1&&alumnos[100].opcma!=2&&alumnos[100].opcma!=3&&alumnos[100].opcma!=4&&alumnos[100].opcma!=5)
  337.           {printf("La opcion elegida es incorrecta");
  338.           system("PAUSE");
  339.           printf("'Presione cualquier tecla para continuar la ejecucion del programa'");
  340.           system("CLS");}}
  341.     while(alumnos[100].opcma!=1&&alumnos[100].opcma!=2&&alumnos[100].opcma!=3&&alumnos[100].opcma!=4&&alumnos[100].opcma!=5);
  342.     switch (alumnos[100].opcma){
  343.            case 1: {printf("¿Cuantos alumnos desea capturar?");
  344.                 scanf("%d",&x);
  345.                 capturardatosA(x);
  346.                 break;}
  347.            case 2: {printf("¿Cuantos alumnos desea mostrar?");
  348.                 scanf("%d",&y);
  349.                 mostrardatosA(y);
  350.                 break;}
  351.            case 3: {busquedadealumnos();
  352.                    break;}
  353.            case 4: return;
  354.                 break;
  355.            case 5: printf("Hasta luego y gracias por el 100 ;)\n\n");
  356.                 break;
  357.                 }}
  358.     while(alumnos[100].opcma!=1&&alumnos[100].opcma!=2&&alumnos[100].opcma!=3&&alumnos[100].opcma!=4&&alumnos[100].opcma!=5);
  359. ;}
  360.  
  361.  
  362. int main(int argc, char *argv[])
  363. {
  364.    int x;
  365.    menuprincipal(&x);
  366.    switch(x){
  367.          case 1: menualumnos();
  368.                  break;
  369.          case 2: menuprofesores();
  370.                  break;
  371.          default: printf("Hasta luego y gracias por el 100 ;)\n\n");
  372.                   break;}
  373.  
  374.  system("PAUSE");
  375.  return 0;
  376. }


En línea

@synthesize
Wiki

Desconectado Desconectado

Mensajes: 640


Another Brick in the Wall


Ver Perfil WWW
Re: Funciones, selectivas y repetitivas. (tiene un error al ejecutarse, ayuda!)
« Respuesta #1 en: 4 Junio 2010, 04:00 am »

return no se usa par regresar, si no para devolver valores.


En línea

nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: Funciones, selectivas y repetitivas. (tiene un error al ejecutarse, ayuda!)
« Respuesta #2 en: 4 Junio 2010, 05:36 am »

Código:
fflush(stdin);

Código:
gets(carrera);

Mmmmmmmm, te recomiendo leer el siguiente tema creado por Littlehorse

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Salu10.
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Funciones, selectivas y repetitivas. (tiene un error al ejecutarse, ayuda!)
« Respuesta #3 en: 5 Junio 2010, 22:44 pm »

¡Buenas!

He visto que en la cadena de control de printf, en las primeras funciones, estas utilizando el caracter comilla simple ' de forma literal. Tienes que ponerlo en una secuencia de escape: \'

Otra cosa (tampoco he mirado mucho el resto de las funciones), es que en main llamas una sola vez a menuprincipal, por lo tanto, devuelva lo que devuelva esta funcion, solo ejjecutara el switch una sola vez y luego finalizara el programa.

En menuinicio (creo) no estas devolviendo ningun valor: La funcion tiene tipo de retorno void, y el parametro que recive lo estas pasando por valor, por lo tanto no lo estas modificando, y al retornar de la funcion, la variable que has utilizado para llamar a la funcion conservara el valor que tenia antes de la llamada.

No he mirado mas codigo, pero revisalo, porque es posible que se te hayan pasado por alto detalles de este estilo.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines