Ver Mensaje Individual
  #6 (permalink)  
Antiguo 30/09/2011, 10:54
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 8 meses
Puntos: 344
Respuesta: Mover elementos en un arreglo, problemas

El problema es evidente y es que no estás realizando correctamente el desplazamiento de los elementos.

Si lo que quieres es mover cada posición del array a la anterior, no vale con:

Código Java:
Ver original
  1. public static void moveTrans(int[] trans) {
  2.         for (int i = 0; i < trans.length - 1; i++) {
  3.             trans[3] = trans[i + 1]; <=== trans[3] el ultimo lugar del arreglo
  4.         }
  5.     }

Si te fijas, te darás cuenta de que lo único que estás haciendo es copiar el elemento 0 del array a la última posición, luego el elemento 1 a la última posición de nuevo y así hasta la última iteración en la que copias la última posición en sí misma.

No estás moviendo los elementos a la izquierda para dejar espacio a un elemento.

Creo además que deberías cambiar la forma en la que resuelves la inserción de un elemento cuando no cabe porque no está bien.

Código Java:
Ver original
  1. public static void makeTransactions(int amount, int[] trans) {
  2.         int position = findNr(trans);
  3.         if (position == -1) {
  4.             moveTrans(trans);
  5.         } else {
  6.             trans[position] = amount;
  7.         }
  8.     }

Cuando el método findNr devuelve -1, llamas a moveTrans, pero luego no le asignas el valor de amount en la última posición.

Lo correcto (o, por lo menos funciona):

Código Java:
Ver original
  1. public static void makeTransactions(int amount, int[] trans) {
  2.  
  3.  
  4.         int position = findNr(trans);
  5.         if (position == -1) {
  6.             moveTrans(trans);
  7.             position = trans.length -1
  8.         }
  9.         trans[position] = amount;
  10.        
  11.     }

Y, por supuesto, arreglar el método moveTrans.