Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/09/2013, 07:30
starfix
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 8 meses
Puntos: 25
Respuesta: ejercicio de matrices en programacion c

El ordenamiento de burbuja consiste en comparar cada valor con todos los que le siguen, si es mayor a uno de los siguientes, se realiza el intercambio y se continúa con las comparaciones.
En tu algoritmo, estas comparando cada valor con su contiguo y no con todos los que le siguen, por lo que si tenes los siguientes valores:

1
7
9
0
4
10
7

Te van a quedar ordenados de la siguiente manera:

1
7
0
4
5
9
7
10

Ahora, tu problema de que te imprima una dirección de memoria es porque el for que se maneja con la variable j recorre el arreglo completo con el ultimo valor inclusive, por lo que en la siguiente linea, en la ultima iteracion j va a tener el valor mas grande que pueda y que será la cantidad de las columnas. Entonces, matriz[i][j+1] está referenciando a una posición fuera del arreglo:

Código C:
Ver original
  1. if (matriz1[i][j] > matriz1[i][j+1])

Entonces, deberías de modificar tu código en la parte del ordenamiento:

Código C:
Ver original
  1. int k= 0;//nueva variable
  2.  
  3. for( i ; i <FILAS; i++)
  4.     {
  5.         j = 0;
  6.  
  7.         //j itera desde la primera columna a la anteultima
  8.         for (j ; j < COLUMNAS - 1; j++)
  9.         {
  10.             //k itera desde la columna siguiente a la de j hasta la ultima
  11.             k= j+1;
  12.             for (k; k<COLUMNAS; k++){
  13.  
  14.                 if (matriz1[i][j] > matriz1[i][k])
  15.                 {
  16.  
  17.                     aux= matriz1[i][j];
  18.                     matriz1[i][j] = matriz1[i][k];
  19.                     matriz1[i][k] = aux;
  20.                 }
  21.  
  22.              printf("  %d  ",matriz1[i][j]);
  23.  
  24.             }
  25.            
  26.         }
  27.        
  28.         printf("\n");
  29.     }

Creo que ahi debería funcionar, no lo he probado

Ordenamiento burbuja wikipedia



Saludos. Espero que funcione y que me hayas entendido .