Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/02/2012, 20:32
Avatar de n_i
n_i
 
Fecha de Ingreso: febrero-2012
Ubicación: Lourdes, La Libertad, El Salvador, El Salvador
Mensajes: 5
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Como enviar arreglos a funciones en C

Hola y bendiciones para todos, de antemano gracias por su respuesta.

Estoy aprendiendo a usar c hasta me surgio la dificultad de no saber como manda un arreglo de dos dimensiones a un función en C. Bueno explico eh escrito un codigo que recibe desde consola el orden de dos matrices y las multiplica bueno y trabaja bien y quiero optimizarlo creando una funcion que sea capaz de pedir ambas matrices bueno espero que me entienda les dejo el codigo que tengo para multiplicar las matrices sin la funcion que trato de hacer y despues el que tiene mi intento y idea de como mandar el arreglo

Código C:
Ver original
  1. #include <stdio.h>
  2. //programa para multiplicar matrices que cumplan las reglas de multiplicacion
  3.  
  4. int main (int argc, char*argv[])
  5.     {
  6.         int fila1=atoi(argv[1]),columna1=atoi(argv[2]),fila2=atoi(argv[3]),columna2=atoi(argv[4])  
  7.         int i=0, j=0, k=0, s;
  8.         int A[fila1][columna1],B[fila2][columna2],Aux[fila1][columna1];
  9.        
  10.         // mini compro para mejorar mas adelante
  11.         if (fila1<=0 || columna1<0 || fila2<=0 || columna2<0 || columna1!=fila2)
  12.             {
  13.                 printf ("\a \"Debe ingresar un orden mayor que cero\"\n\n");
  14.             }  
  15.         else  {
  16.             //pide matriz 1
  17.             printf ("\"Ingrese 1ª (A) Matriz a Sumar\"\n");
  18.             for(i=0;i<fila1;i++){
  19.                     for(j=0;j<columna1;j++){
  20.                             printf("Ingrese el valor de A[%d][%d]:\n",i+1,j+1);
  21.                             scanf("%d",&A[i][j]);  
  22.                                   }
  23.                        }   
  24.             //pide matriz 2
  25.             printf ("\"Ingrese 2ª (B) Matriz a Sumar\"\n");
  26.             for(i=0;i<fila2;i++){
  27.                     for(j=0;j<columna2;j++){
  28.                             printf("Ingrese el valor de B[%d][%d]:\n",i+1,j+1);
  29.                             scanf("%d",&B[i][j]);  
  30.                                   }
  31.                        }
  32.             // reliza las operaciones
  33.             for(i=0;i<fila1;i++){
  34.                     for(j=0;j<columna2;j++){
  35.                             s=0;
  36.                             for(k=0;k<fila2;k++){
  37.                                 s=s+(A[i][k]*B[k][j]);  }
  38.                             Aux[i][j]=s;
  39.                            
  40.                                   }
  41.                        }
  42.             //Mostras la respuesta
  43.             printf ("\"La Matriz respuesta es\"\n");
  44.             for(i=0;i<fila1;i++){
  45.                     for(j=0;j<columna2;j++){
  46.                             printf("\t%d",Aux[i][j]);
  47.                                   }
  48.                     printf ("\n");
  49.                        }
  50.                    
  51.                 }
  52.     return 0;
  53.     }

Código C:
Ver original
  1. #include <stdio.h>
  2. //programa para multiplicar matrices que cumplan las reglas de multiplicacion
  3.  
  4. int i=0, j=0;
  5. int pedir_matris (int x, int y, int Z);
  6.  
  7. int main (int argc, char*argv[])
  8.     {
  9.         int fila1=atoi(argv[1]),columna1=atoi(argv[2]),fila2=atoi(argv[3]),columna2=atoi(argv[4]);
  10.         int k=0, s;
  11.         int A[fila1][columna1],B[fila2][columna2],Aux[fila1][columna1];
  12.        
  13.         // mini compro para mejorar mas adelante
  14.         if (fila1<=0 || columna1<0 || fila2<=0 || columna2<0 || columna1!=fila2)
  15.             {
  16.                 printf ("\a \"Debe ingresar un orden mayor que cero\"\n\n");
  17.             }  
  18.         else  {
  19.             pedir_matris (fila1, columna1, "A");
  20.             //pide matriz 1
  21.             /*printf ("\"Ingrese 1ª (A) Matriz a Sumar\"\n");
  22.             for(i=0;i<fila1;i++){
  23.                     for(j=0;j<columna1;j++){
  24.                             printf("Ingrese el valor de A[%d][%d]:\n",i+1,j+1);
  25.                             scanf("%d",&A[i][j]);  
  26.                                   }
  27.                        }*/ 
  28.             //pide matriz 2
  29.             printf ("\"Ingrese 2ª (B) Matriz a Sumar\"\n");
  30.             for(i=0;i<fila2;i++){
  31.                     for(j=0;j<columna2;j++){
  32.                             printf("Ingrese el valor de B[%d][%d]:\n",i+1,j+1);
  33.                             scanf("%d",&B[i][j]);  
  34.                                   }
  35.                        }
  36.             // reliza las operaciones
  37.             for(i=0;i<fila1;i++){
  38.                     for(j=0;j<columna2;j++){
  39.                             s=0;
  40.                             for(k=0;k<fila2;k++){
  41.                                 s=s+(A[i][k]*B[k][j]);  }
  42.                             Aux[i][j]=s;
  43.                            
  44.                                   }
  45.                        }
  46.             //Mostras la respuesta
  47.             printf ("\"La Matriz respuesta es\"\n");
  48.             for(i=0;i<fila1;i++){
  49.                     for(j=0;j<columna2;j++){
  50.                             printf("\t%d",Aux[i][j]);
  51.                                   }
  52.                     printf ("\n");
  53.                        }
  54.                    
  55.                 }
  56.     return 0;

PD el codigo anterior es mi intento mas tonte de como mandar arreglos

PD muchas gracias por su ayuda

Última edición por n_i; 06/02/2012 a las 09:24