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.
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ó.
[quote=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ó.
[/quote]
tah…me liguei, mas tipo, como eu declaro a variável a com a propriedade que permita eu fazer array?
[quote=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ó.
[/quote]
Preciso de deslocamento variável…não de deslocamento fixo
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.
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]);
}
}
}
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).
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]);
}
}
}
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.