problema con parametros

Iniciado por m@o_614, 8 Julio 2013, 19:35 PM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

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

#include <stdio.h>
#include <stdlib.h>
#define MAX 10

void burbuja_descendente(char matriz[][],int n,int m);

int main()
{
    int i,j,n,m;
    char matriz[MAX][MAX];
    printf("Dame el numero de filas: ");
    scanf("%d",&n);
    printf("Dame el numero de columnas: ");
    scanf("%d",&m);
    for(i=0;i < n;i++)
    {
        for(j=0;j < m;j++)
        {
            printf("Dame el elemento (%d,%d):\n",i,j);
            scanf("%s",&matriz[i][j]);
        }
    }
    burbuja_descendente(matriz,n,m);
    return 0;
}

void burbuja_descendente(char matriz[][],int n,int m)
{
    int i,j,aux;
    for(i=1;i < n;i++)
    {
        for(j=0;j < m;j++)
        {
            if(j==n-1)
            {
                if(matriz[i][j] < matriz[i+1][0])
                {
                    aux = matriz[i][j];
                    matriz[i][j] = matriz[i+1][0];
                    matriz[i+1][0] = aux;
                }
            }
            else
            {
                if(matriz[i][j] < matriz[i][j+1])
                {
                    aux = matriz[i][j];
                    matriz[i][j] = matriz[i][j+1];
                    matriz[i][j+1] = aux;
                }
            }
        }
    }
}


de antemano gracias

eferion

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.
void burbuja_descendente(char matriz[MAX][MAX],int n,int m);

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

rir3760

Cita de: m@o_614 en  8 Julio 2013, 19:35 PMtengo 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:
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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language