[C con Clase] Ayuda con la salida de la matriz final.

Davidson, Steven srd4121 en njit.edu
Mar Dic 31 02:47:33 CET 2013


Hola Ali,

2013/12/30 Ali Rincon <alrincon1963 en hotmail.com>

> He estado investigando como "eliminar" filas en una matriz cualquiera y
> creo que conseguí hacer algo simpático y funcional. Aunque no es lo que
> exactamente estoy tratando de solucionar, si me sirve para mejorar el
> código y hacerlo un poco mas general. Sin embargo tengo un problema con la
> salida de la matriz final la cual no consigo hacerla bien, es decir, se
> mezclan algunas filas al final y desearía saber si alguien pudiera decirme
> cual es el error o que es lo que me hace falta en el código.
>
>
Veamos el código fuente.

Aquí envío el código:
>
>
>
[CORTE]

    //Remover la fila donde se encuentre el valor
>
>     for(k=posicion; k<indices; k++)
>

Esto va a suponer un problema, porque usas el índice 'k+1'. Por lo tanto,
si 'k' llega al último índice, entonces accederás a la siguiente "fila",
que no existe. Por ejemplo, si 'indices' es 10, entonces k=9, pero
accederás a la fila 10, que obviamente está fuera de las limitaciones del
array.

Debes usar 'indices-1', por lo que aconsejo que hagas la resta de 'indices'
antes del bucle 'for'; esto es,

indices--;
for( k=posicion; k<indices; k++ )
  for( j=0; j<10; j++ )
    matriz[k][j] = matriz[k+1][j];

Ahora, los intervalos de los índices son correctos:

k    := [posicion,8]
k+1 := [posicion+1,9]


Otro matiz a destacar es que al buscar el valor para eliminar su fila,
sigues buscando a pesar de haberlo encontrado. Deberías salirte de los
bucles 'for' una vez que hayas encontrado lo que buscas. Dicho esto,
también deberías tener en cuenta la posibilidad de que no encuentre tal
valor pedido a eliminar. Si es el caso, entonces no deberías eliminar nada,
especialmente por el hecho de que 'posicion' no contiene un valor deseado -
es basura; esto puede provocar grandes errores, ya que usas 'posicion' como
índice en la matriz.


Espero que esto te aclare las dudas.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20131230/bee990e3/attachment.html>


Más información sobre la lista de distribución Cconclase