Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: LoQueSeaPI en 15 Septiembre 2016, 23:53 pm



Título: Pasar/Recibir arreglo bidimensional en diversas funciones (Lenguaje C)
Publicado por: LoQueSeaPI en 15 Septiembre 2016, 23:53 pm
Hola a todos, estoy tratando de hacer la parte de un programa en el que lleno lo que es una nómina usando un arreglo bidimensional y luego éste arreglo lo quiero enviar a otra función en la que lo imprimiré; a parte de eso también quiero llamar a la función en la que se imprime el arreglo dentro de un menú, sin embargo me ha surgido un error tras otro. Se que todo se podría hacer dentro de una sola función, pero esto es una síntesis del programa (el programa en sí es muy largo y necesito de las funciones), creo que se podría hacer con punteros pero no tengo ni idea de como sería.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define filas 6
  5. #define columnas 4
  6.  
  7. int llenarNomina(int N[filas][columnas]);
  8. int mostrarNomina(int N[filas][columnas]);
  9.  
  10. void menu();
  11.  
  12. void main (){
  13.   menu();
  14. }
  15.  
  16. void menu(){
  17.   int opc;
  18.   printf("MENU\n");
  19.   printf("1. Nueva Nomina\n");
  20.   printf("2. Mostrar Todas las Nominas\n");
  21.   printf("Ingrese opcion: ");
  22.   scanf("%d",opc);
  23.  
  24.   switch(opc){
  25.      case 1:
  26.         /*Estoy tratando de hacer que cuando ingrese a la opcion 1, vaya directamente a la función llenarNomina*/
  27.         llenarNomina(int N[filas][columnas]); // Aca me da un severo error
  28.         break;
  29.      case 2:
  30.         mostrarNomina(int N[filas][columnas]);
  31.         break
  32.      default:
  33.         printf("Opcion Incorrecta");
  34. }
  35.  
  36. int llenarNomina(int N[filas][columnas]){
  37.   //ACA SE RELLENA EL ARREGLO
  38.   return N[filas][columnas];
  39. }
  40.  
  41. int mostrarNomina(int N[filas][columnas]){
  42.   //ACA SE IMPRIME EL ARREGLO
  43.   return N[filas][columnas];
  44. }
  45.  


Título: Re: Pasar/Recibir arreglo bidimensional en diversas funciones (Lenguaje C)
Publicado por: AlbertoBSD en 16 Septiembre 2016, 00:00 am
Hola tienes que declarar primero el arreglo antes de llamar a las funciones mencionadas

Ejemplo:

Código
  1. void menu(){
  2. int N[filas][columnas];
  3.   int opc;
  4.   printf("MENU\n");
  5.   printf("1. Nueva Nomina\n");
  6.   printf("2. Mostrar Todas las Nominas\n");
  7.   printf("Ingrese opcion: ");
  8.   scanf("%d",opc);
  9.  
  10.   switch(opc){
  11.      case 1:
  12.         /*Estoy tratando de hacer que cuando ingrese a la opcion 1, vaya directamente a la función llenarNomina*/
  13.         llenarNomina(N); // Aca me da un severo error
  14.         break;
  15.      case 2:
  16.         mostrarNomina(N);
  17.         break
  18.      default:
  19.         printf("Opcion Incorrecta");
  20. }


Título: Re: Pasar/Recibir arreglo bidimensional en diversas funciones (Lenguaje C)
Publicado por: LoQueSeaPI en 16 Septiembre 2016, 00:19 am
Hola! He hecho lo que me has dicho y ha compilado, sin embargo cuando ingreso al menu de opciones y por ejemplo ingreso a la opcion 1, simplemente el programa finaliza de ejecutarse.  :-(


Título: Re: Pasar/Recibir arreglo bidimensional en diversas funciones (Lenguaje C)
Publicado por: AlbertoBSD en 16 Septiembre 2016, 00:30 am
Donde termina tu funcion menu?

falta un } para el switch o para la funcion, ademas ya estando en tu funcion llenarNomina no se que realice.. tal vez tratas de escribir fuera de los limites de la memoria o algun otro tipo de error.

saludos!