• Viernes 19 de Abril de 2024, 07:23

Autor Tema:  Por Que No Funciona??  (Leído 1978 veces)

digichap28

  • Miembro activo
  • **
  • Mensajes: 64
    • Ver Perfil
Por Que No Funciona??
« en: Jueves 28 de Febrero de 2008, 00:07 »
0
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:

Masiosare

  • Miembro MUY activo
  • ***
  • Mensajes: 118
    • Ver Perfil
Re: Por Que No Funciona??
« Respuesta #1 en: Viernes 29 de Febrero de 2008, 02:01 »
0
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.
El experto es aquel que sabe cada vez más sobre cada vez menos, hasta que sabe competamente todo sobre absolutamente nada.
[size=109]Ley de Murphy[/size]

digichap28

  • Miembro activo
  • **
  • Mensajes: 64
    • Ver Perfil
Re: Por Que No Funciona??
« Respuesta #2 en: Viernes 29 de Febrero de 2008, 04:18 »
0
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?

manix

  • Miembro MUY activo
  • ***
  • Mensajes: 203
  • Nacionalidad: cr
    • Ver Perfil
    • http://apuntes.delibertad.com
Re: Por Que No Funciona??
« Respuesta #3 en: Viernes 29 de Febrero de 2008, 06:07 »
0
por que no intentas usar otro vector, y en el vas guardando los datos al reves???

therion87

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Por Que No Funciona??
« Respuesta #4 en: Viernes 29 de Febrero de 2008, 19:35 »
0
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

digichap28

  • Miembro activo
  • **
  • Mensajes: 64
    • Ver Perfil
Re: Por Que No Funciona??
« Respuesta #5 en: Viernes 29 de Febrero de 2008, 19:53 »
0
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 .