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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con arreglos, estructuras y funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con arreglos, estructuras y funciones  (Leído 2,438 veces)
ody532

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Problema con arreglos, estructuras y funciones
« en: 20 Abril 2017, 03:26 am »

Tengo un problema, tengo 3 funciones el main y 2 creadas por mi una de registro y otra de impresion
el problema es que es una estructura con arreglos, al registrar no hay problema pero nose como mandar estos registros al main y que de ahi se impriman con la funcion de impresion

debe de ser en lenguaje C y no puedo declarar en el area global el arreglo, espero me puedan ayudar

este es el programa que llevo:

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. struct alumnos
  4. {
  5. int matricula;
  6. char nombre[50];
  7. char apellido[50];
  8. char correo[50];
  9. char celular[12];
  10. int cal[7];
  11. };
  12. int registro(struct alumnos b[], int elementos);
  13. void impresion_datos(struct alumnos b[], int elementos);
  14. int main()
  15. {
  16. struct alumnos a[50];
  17. int op,z=0;
  18. while(z<50)
  19. {
  20. printf("teclee la opcion que desea realizar:  ");
  21. printf("\n1. Registrar los datos del alumno\n2.Modificar alumno\n3. Eliminar alumno\n4. Imprimir los datos de los alumnos\n5. Imprimir calificaciones de los alumnos\n6. Salir");
  22. scanf("%d",&op);
  23. system("cls");
  24. switch (op)
  25. {
  26. case 1: registro(a,50);break;
  27. case 2: impresion_datos(a,50); break;
  28. }
  29. z++;
  30. }
  31. }
  32. int registro(struct alumnos b[], int elementos)
  33. {
  34. int q;
  35. int c;
  36. int i=0;
  37. int ca=0;
  38. int op3;
  39.  
  40. printf("Matricula:  "); scanf("%d", &b[i].matricula); fflush(stdin);
  41. printf("\nNombre:  "); gets(b[i].nombre); fflush(stdin);
  42. printf("\nApellido:  "); gets(b[i].apellido); fflush(stdin);
  43. printf("\nCorreo:  "); gets(b[i].correo); fflush(stdin);
  44. printf("\nCelular"); gets(b[i].celular); fflush(stdin);
  45. for(q=0;q<6;q++)
  46. {
  47. printf("\n Cal %d del alumno %d:  ",q,i); scanf("%d",&b[i].cal[q]); fflush(stdin);
  48. b[i].cal[6]=((b[i].cal[0]*.20)+(b[i].cal[1]*.20)+(b[i].cal[2]*.20)+(b[i].cal[3]*.20)+(b[i].cal[4]*.10)+(b[i].cal[5]*.10));
  49. }
  50. ca=ca+1;
  51. for(i=0;i<ca;i++)
  52. {
  53. for(q=0;q<7;q++)
  54. {
  55. printf ("cal %d del alumno %d:   ",q,i); printf("%d\n", b[i].cal[q]);
  56. }
  57. }
  58. printf("para regresar al menu presione 1:  "); scanf("%d",&op3);
  59. system("cls");
  60. }
  61. void impresion_datos(struct alumnos b[], int elementos)
  62. {
  63. int i;
  64. printf("Matricula\t\tNombre\t\t\tApellido\t\tCelular\t\tCorreo");
  65. for(i=0;i<50;i++)
  66. {
  67. printf("%d\t\t",b[i].matricula);
  68. printf("%d\t\t",b[i].nombre);
  69. printf("%d\t\t",b[i].apellido);
  70. printf("%d\t\t",b[i].celular);
  71. printf("%d\t\t",b[i].correo);
  72. }
  73. }[/b]


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 20 Abril 2017, 03:43 am por engel lex » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema con arreglos, estructuras y funciones
« Respuesta #1 en: 20 Abril 2017, 10:01 am »

Tienes unos cuantos errores, pero empecemos por el primero:
La lógica de la función main está mal planteada. Repites 50 veces en bucle la función y no puedes salir de él aunque uses la función 6 del menú. Eso no debería ser así sino que el bucle debería repetirse mientras no se elija la función 6.

Cuando soluciones eso podremos continuar.


En línea

ody532

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Problema con arreglos, estructuras y funciones
« Respuesta #2 en: 20 Abril 2017, 20:35 pm »

Tienes unos cuantos errores, pero empecemos por el primero:
La lógica de la función main está mal planteada. Repites 50 veces en bucle la función y no puedes salir de él aunque uses la función 6 del menú. Eso no debería ser así sino que el bucle debería repetirse mientras no se elija la función 6.

Cuando soluciones eso podremos continuar.



Pero y si en la opcion 6 le pongo z=49 y se suma con el z++ se saldria del ciclo y terminaria no?
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema con arreglos, estructuras y funciones
« Respuesta #3 en: 21 Abril 2017, 10:43 am »

Sí, pero de seguro ese no es el efecto que debes buscar. ¿Por qué repites 50 veces el bucle? Porqué no es por las 50 posiciones del array porqué eso debes tratarlo de otra forma.

Los menús se hacen de otra forma:
Algo así:
- BUCLE MENÚ
- Imprime Título
- Imprime primera opción
- Imprime segunda opción
- ...
- Imprime la opción de salida
-
- Pide la opción a elegir
- Si la opción no está en el menú repetir el menú
- Asociar a cada opción una función diferente, cada función iniciará el trabajo que se espera.
- Si la opción elegida es la de salir terminar el BUCLE MENÚ
- Repetir el BUCLE MENÚ
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema de Estructuras con Funciones « 1 2 »
Programación C/C++
diego-4 12 4,734 Último mensaje 10 Noviembre 2012, 18:46 pm
por diego-4
Arreglos y estructuras en C. Ayuda.
Programación C/C++
Xgirl12 5 3,283 Último mensaje 12 Abril 2013, 06:23 am
por Xgirl12
Arreglos a funciones
Programación C/C++
mc275 1 1,804 Último mensaje 19 Abril 2017, 18:25 pm
por MAFUS
Problema con realloc funciones y punteros a estructuras [RESUELTO]
Programación C/C++
Xargam 8 4,405 Último mensaje 3 Junio 2018, 21:36 pm
por Xargam
‚Cómo manipular arreglos de estructuras?
Programación C/C++
diseho2880 1 1,934 Último mensaje 18 Mayo 2021, 04:14 am
por prosebas
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines