Inverter a posição dos elementos do vetor

Precisava de uma ajuda para esse exercício =/

Crie uma classe chamada VetorDeReais, que internamente possui um vetor de n reais (double). O valor de n é passado como parâmetro na criação do objeto. Implemente métodos para:

d)Inverter a posição dos elementos do vetor, ou seja, o primeiro elemento vai para a posição do último elemento e o último elemento vai para a posição do primeiro elemento, o segundo elemento vai para a posição do penúltimo elemento e o penúltimo elemento vai para a posição do segundo elemento, e assim por diante;

como que inverto?

Ora, esse exercício pede para você fazer as coisas “no braço”. Para trocar dois elementos no vetor, você precisa saber suas posições. No seu caso:

0 e n-1
1 e n-2
2 e n-3

i e n-i-1

n / 2 e n - 1 - (n / 2)

Sabendo as posições (digamos que sejam x e y), trocar é fácil:

double tmp = vetor [x];
vetor [x] = vetor [y];
vetor [y] = tmp;

entendi, muito obrigado

Daew Anynha boas vindas ao guj !
Eh legal qnd seu post for solucionado edita-lo e colocar SOLUCIONADO oU RESOLVIDO para q pessoas com a mesma duvida que a sua visualizem com mais facilidade e para as pessoas q respondem os topicos nao percam tempo vizualizando a duvida solucionada. valew :slight_smile:

1 curtida

[code]public class InverteVetor {
public static void main ( String args[] ){
Scanner sc = new Scanner (System.in);
int vet[];
System.out.println("Digite o tamanho do vetor: ");
int tam = sc.nextInt();
vet = new int [tam];
le (vet);
imprime (vet);
int i=0;
int f=vet.length;
inverte (vet, i, f );
imprime (vet);
}

public static void le (int[] vet){
    Scanner sc = new Scanner (System.in);
    for (int i=0; i<vet.length; i++){
    System.out.println("Digite o " + (i+1) + " valor ");
    vet[i]=sc.nextInt();
    }
}


public static void imprime (int [] vet){
        for (int i=0; i<vet.length; i++){
        System.out.print(vet[i]+ " ");
        }
        System.out.println();
}

public static int[] inverte( int[] v, int i, int f ){
    int aux;
    if ( i >= f ){
        return v;
    }
    else{
        aux = v[i];
        v[i] = v[f];
        v[f] = aux;
        return inverte(v, i+1, f-1);
    }
}

}[/code]

alguem sabe dizer qual o erro?
=S

Você cometou um erro muito comum.

Grave isso:
[color=red]“O método LENGTH retorna o TAMANHO do vetor e não seu último índice.”[/color]

pegadinha de prova de certificação! fica esperto! :wink:

bastou fazer esta modificacao modificação:

int f=vet.length -1;

Abração.

[code]public class InverteVetor {
public static void main ( String args[] ){
Scanner sc = new Scanner (System.in);
int vet[];
System.out.println("Digite o tamanho do vetor: ");
int tam = sc.nextInt();
vet = new int [tam];
le (vet);
imprime (vet);
int i=0;
int f=vet.length -1;
inverte (vet, i, f );
imprime (vet);
}
public static void le (int[] vet){
Scanner sc = new Scanner (System.in);
for (int i=0; i<vet.length; i++){
System.out.println("Digite o " + (i+1) + " valor ");
vet[i]=sc.nextInt();
}
}

public static void imprime (int [] vet){
for (int i=0; i<vet.length; i++){
System.out.print(vet[i]+ " ");
}
System.out.println();
}

public static int[] inverte( int[] v, int i, int f ){
int aux;
if ( i >= f ){
return v;
}
else{
aux = v[i];
v[i] = v[f];
v[f] = aux;
return inverte(v, i+1, f-1);
}
}

}[/code]

Oi,

Pessoal… vamos postar a codificação entre as tags [CODE], ok?

Tchauzin!

Realmente Adriano, um pequeno detalhe que passa muitas vezes despercebido.

Obrigado…

Ok Lina. =D

percorra seu vetor alterando o valor da posição n pelo valor da posição (tamanhoDoVetor-1)-n

ok?