SoloCodigo

Programación General => Java => Mensaje iniciado por: digichap28 en Jueves 28 de Febrero de 2008, 00:07

Título: Por Que No Funciona??
Publicado por: digichap28 en Jueves 28 de Febrero de 2008, 00:07
Hola que tal como andan?
Bueno, se me ha presentado este problemita y no entiendo porque.
Lo que pasa, es que si se pone un vector como por ejemplo este:

 1 2 3 4 5 , solo intercambia el 1 con el 5, quedando asi 5 2 3 4 1
y no cambia el 2 con el 4.
Este deberia quedar asi: 5 4 3 2 1

Lo que se me ocurre es que depronto el problema se encuentra al aumentar la variable i y disminuir la variable j.

Pueden colaborarme por favor??

Citar
public static void InvertirVector(double m[],int n){
     int i=1,j=n; double temp;                             
                 
           while(i<n){         
           temp=m;
           m=m[j];
           m[j]=temp;
           i=i+1;
           j=j-1;   
                     }
                                                        }


GRACIAS!!!!   :hola:
Título: Re: Por Que No Funciona??
Publicado por: Masiosare en Viernes 29 de Febrero de 2008, 02:01
A pesar de que no podría ser el mejor, ese algoritmo funciona. Solo una observación:

En lugar de 'j=j+1;' utiliza 'j++', quiza no haya tantas ni tan fuertes razones, pero es lo que se acostumbra.
Título: Re: Por Que No Funciona??
Publicado por: digichap28 en Viernes 29 de Febrero de 2008, 04:18
la verdad es que no me funciona de ninguna manera, al principio , habia puesto a la variable i de esta manera i++ y a la variable j , j--, pero cuando le doy a correr el programa en jcreator, y llega a ese procedimiento, se sale.
Per cuando lo hago de la forma que lo escribi en el anterior post, por lo menos invertia el primer elemento con el ultimo.

Que puedo hacer?
Título: Re: Por Que No Funciona??
Publicado por: manix en Viernes 29 de Febrero de 2008, 06:07
por que no intentas usar otro vector, y en el vas guardando los datos al reves???
Título: Re: Por Que No Funciona??
Publicado por: therion87 en Viernes 29 de Febrero de 2008, 19:35
Hola!!

Primero.. no inicialices i en 1, si no en 0 y haz lo que te dijeron antes

Código: Text
  1.  
  2.  
  3. public static void InvertirVector(double m[],int n){
  4.  
  5. int i=0, j = n; // me imagino que 'n' es el la longitud del vector
  6. double temp = 0;
  7.  
  8.     while(i&#60;n){    
  9.           temp=m[i];
  10.           m[i]=m[j];
  11.           m[j]=temp;
  12.           i=++;
  13.           j=--;
  14.     }
  15. }
  16.  
  17.  
  18.  


Se supone que debe de funcionar asi ... si no ocupa dos vectores y con un ciclo for reccore desde la longitud maxima hasta cero y guardalo en el otro vector.

Saludos :-D
Título: Re: Por Que No Funciona??
Publicado por: digichap28 en Viernes 29 de Febrero de 2008, 19:53
Listo,  ya solucione el problema.
El error se encotraba en : while(i<n) y debe ser while(i<j).

Abajo esta el procedimiento invertir vector, sin errores, si de algo les sirve.

Citar
public static void InvertirVector(double m[],int n){
    int i=1,j=n; double temp;                           
               
          while(i<j){     
          temp=m;
          m=m[j];
          m[j]=temp;
          i=i+1;
          j=j-1;
                    }
                                                        }


Y gracias a todos .