Programa em Java para deslocamento de posições

9 respostas
jonasben

Faça um programa que faça um deslocamento à esquerda de tamanho m vezes (m lido via teclado) em um vetor v de inteiros cujo tamanho o usuário deverá ler. Seu programa deve ler o vetor, escrever o vetor original e escrever o vetor após o deslocamento.
Por exemplo, a figura abaixo apresenta um vetor de tamanho 5, no qual se realiza um deslocamento de tamanho 2.
-3 7 11 0 8
Após o deslocamento de 3 posições, fica:
0 8 -3 7 11

sou bem noob em java, por isso preciso de vossa ajuda xD
desde já agradeço pela atenção.

9 Respostas

E

Você está rodando as posições, certo?

A primeira coisa que você tem de fazer é pegar um pedaço de papel e um lápis ou caneta, e simular o problema.

Vamos ter um array de 5 posições, que tem os valores:
a[0] = -3
a[1] = 7
a[2] = 11
a[3] = 0
a[4] = 8
Você precisa escrever um programa que no final consiga chegar ao resultado:
a[0] = 0
a[1] = 8
a[2] = -3
a[3] = 7
a[4] = 11
Provavelmente você terá de usar uma variável intermediária para guardar o resultado enquanto você passa os valores de uma posição para outra.
Para facilitar seu raciocínio, tente fazer um programa que, em vez de rodar o array de 2 posições, rode de uma posição só.

jonasben
jonasben

entanglement:
Você está rodando as posições, certo?

A primeira coisa que você tem de fazer é pegar um pedaço de papel e um lápis ou caneta, e simular o problema.

Vamos ter um array de 5 posições, que tem os valores:
a[0] = -3
a[1] = 7
a[2] = 11
a[3] = 0
a[4] = 8
Você precisa escrever um programa que no final consiga chegar ao resultado:
a[0] = 0
a[1] = 8
a[2] = -3
a[3] = 7
a[4] = 11
Provavelmente você terá de usar uma variável intermediária para guardar o resultado enquanto você passa os valores de uma posição para outra.
Para facilitar seu raciocínio, tente fazer um programa que, em vez de rodar o array de 2 posições, rode de uma posição só.

tah…me liguei, mas tipo, como eu declaro a variável a com a propriedade que permita eu fazer array?

jonasben

entanglement:
Você está rodando as posições, certo?

A primeira coisa que você tem de fazer é pegar um pedaço de papel e um lápis ou caneta, e simular o problema.

Vamos ter um array de 5 posições, que tem os valores:
a[0] = -3
a[1] = 7
a[2] = 11
a[3] = 0
a[4] = 8
Você precisa escrever um programa que no final consiga chegar ao resultado:
a[0] = 0
a[1] = 8
a[2] = -3
a[3] = 7
a[4] = 11
Provavelmente você terá de usar uma variável intermediária para guardar o resultado enquanto você passa os valores de uma posição para outra.
Para facilitar seu raciocínio, tente fazer um programa que, em vez de rodar o array de 2 posições, rode de uma posição só.

Preciso de deslocamento variável…não de deslocamento fixo

E

Eu sei que você precisa de deslocamento variável. Mas eu também sei que, para resolver um problema complicado, é bom você primeiro resolver o problema mais simples, e depois entender como é que você muda a solução para conseguir resolver o problema mais complicado. E é por isso que pedi para você resolver o problema com o deslocamento = 1. Se conseguir resolver para 1, pode conseguir resolver para 2, e para 3, etc. É só você botar a cabeça para funcionar.

R

blz jonas aqui e o rafael n pude ir a aula pq estou com sinusite pode ser um pouco tarde para isso mas o meu programa ficou assim:

package javaapplication2;

import java.util.Scanner;

public class JavaApplication2 {

public static void main(String[] args) {

Scanner input =new Scanner(System.in);

int m, w;

System.out.println (Digite tamanho do vetor);

m = input.nextInt();

int p[] = new int [m];

for( int i =0;  i < m; i++){

System.out.println (Digite um valor para a posição " + i + " do vetor);

p[i] = input.nextInt();

}

System.out.println (vetor normal);

for( w =0;  w < m; w++){

System.out.printf(" " + p[w]);

}

System.out.println ("\nvetor deslocado");

for( w =0;  w < m-3; w++){

System.out.printf(" " + p[w+3]);

}

for( w =0;  w < 3; w++){

System.out.printf(" " + p[w]);

}

}

}
E

Rafael, o programa mostra o resultado desejado, mas a rigor não está de acordo com o enunciado (não, não sou o professor que pediu esse exercício).

Se ele valesse 1 ponto, eu daria 0.5 porque imprime o resultado no caso de teste, mas não faz o que foi pedido (ou seja, deslocar o array de acordo com o deslocamento entrado via teclado).

R

pior que tens razão meu caro entanglement e modifiquei meu programa e creio que agora esteja correto:

package javaapplication2;

import java.util.Scanner;

public class JavaApplication2 {

public static void main(String[] args) {

Scanner input =new Scanner(System.in);

int m, w;

System.out.println (Digite tamanho do vetor);

m = input.nextInt();

int v[] = new int [m];

for( int i =0;  i < m; i++){

System.out.println (Digite um valor para a posição " + i + " do vetor);

v[i] = input.nextInt();

}

System.out.println (vetor normal);

for( w =0;  w < m; w++){

System.out.printf(" " + v[w]);

}

System.out.println ("\nvetor deslocado");

for( w =0;  w < (m+(2-m)); w++){

System.out.printf(" " + v[w+(m-2)]);

}

for( w =0;  w < m-2; w++){

System.out.printf(" " + v[w]);

}

}

}
E

Rafael,

Ele ainda não está deslocando o array. Por deslocar o array, o professor queria dizer que, dado um array com o conteúdo

a[0] = -3
a[1] = 7
a[2] = 11
a[3] = 0
a[4] = 8

ele quer que o array seja modificado para que ele fique como:

a[0] = 0
a[1] = 8
a[2] = -3
a[3] = 7
a[4] = 11

Do jeito que você fez, o array não foi mudado.

De qualquer maneira, acredito que o Jonas, se for esperto como acho que ele seja, vai conseguir criar um deslocamento a partir do seu programa.

Criado 28 de novembro de 2012
Ultima resposta 28 de nov. de 2012
Respostas 9
Participantes 3