Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: m@o_614 en 8 Julio 2013, 19:35 pm



Título: problema con parametros
Publicado por: m@o_614 en 8 Julio 2013, 19:35 pm
Saludos tengo el siguiente problema al pasar una matriz bidimensional como parametro a una funcion, me sale un error que dice: array type has incomplete element type

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 10
  4.  
  5. void burbuja_descendente(char matriz[][],int n,int m);
  6.  
  7. int main()
  8. {
  9.    int i,j,n,m;
  10.    char matriz[MAX][MAX];
  11.    printf("Dame el numero de filas: ");
  12.    scanf("%d",&n);
  13.    printf("Dame el numero de columnas: ");
  14.    scanf("%d",&m);
  15.    for(i=0;i < n;i++)
  16.    {
  17.        for(j=0;j < m;j++)
  18.        {
  19.            printf("Dame el elemento (%d,%d):\n",i,j);
  20.            scanf("%s",&matriz[i][j]);
  21.        }
  22.    }
  23.    burbuja_descendente(matriz,n,m);
  24.    return 0;
  25. }
  26.  
  27. void burbuja_descendente(char matriz[][],int n,int m)
  28. {
  29.    int i,j,aux;
  30.    for(i=1;i < n;i++)
  31.    {
  32.        for(j=0;j < m;j++)
  33.        {
  34.            if(j==n-1)
  35.            {
  36.                if(matriz[i][j] < matriz[i+1][0])
  37.                {
  38.                    aux = matriz[i][j];
  39.                    matriz[i][j] = matriz[i+1][0];
  40.                    matriz[i+1][0] = aux;
  41.                }
  42.            }
  43.            else
  44.            {
  45.                if(matriz[i][j] < matriz[i][j+1])
  46.                {
  47.                    aux = matriz[i][j];
  48.                    matriz[i][j] = matriz[i][j+1];
  49.                    matriz[i][j+1] = aux;
  50.                }
  51.            }
  52.        }
  53.    }
  54. }

de antemano gracias


Título: Re: problema con parametros
Publicado por: eferion en 8 Julio 2013, 19:48 pm
Cuando tu defines una matriz de la forma en la que tú lo has hecho el equipo reserva la memoria de la siguiente manera:

matriz [ 3 ][ 2 ] = [ 0,0 ] [ 0,1 ] [ 1,0 ] [ 1,1 ] [ 2,0 ] [ 2,1 ]

Es decir, la matriz realmente está serializada en memoria y está ordenada por filas.

Si tu defines un argumento en una función tal que char matriz[][], no estás indicando el número de filas ni el número de columnas, por lo que la definición de dicha matriz está, técnicamente, incompleta.

Si quieres que no te de problemas puedes aplicar la solución más fácil, esta es poner en el parámetro el número de filas y de columnas.
Código
  1. void burbuja_descendente(char matriz[MAX][MAX],int n,int m);

Hay otras posibilidades, pero tendrías que modificar más código.


Título: Re: problema con parametros
Publicado por: rir3760 en 9 Julio 2013, 01:12 am
tengo el siguiente problema al pasar una matriz bidimensional como parametro a una funcion, me sale un error que dice: array type has incomplete element type
eferion ya te explico como resolver ese problema.

Otro es utilizar:
Código
  1. scanf("%s", &matriz[i][j]);
Como ya te explique en otro tema "%s" se utiliza para leer una palabra, si necesitas leer un carácter debes utilizar " %c".

También se debe rescribir desde cero la función de ordenacion (ya que tiene varios problemas).

Un saludo