Eu estou tentando rodar os elementos de um vector para a direita mas só consigo trocar o último elemento.
Eu queria que o meu programa fizesse isto:
vector original: 3 2 1
vector rodado para a direita: 1 3 2
public static int[] rotacao(int[] v, int N) {
int[] v_rod = new int[N];
for (int i = N - 1; i >= 0; i--) {
v_rod[N - 1 - i] = v[i];
}
return v_rod;
}
Este método recebe como parâmetro um vector e a sua respectiva capacidade, depois limita-se a rodar os elementos do vector para a direita e retornar o vector rodado.
Conto com vossa ajuda.
Obrigado.
Cumps
Para remover um nó de uma lista, esta lista deve conter, no mínimo, 1 nó, ou seja, n>0.
A remoção do k-ésimo nó de uma lista implica no deslocamento para frente os nós xk+1, xk+2, …, xn-2, xn-1.
int lstRemover(Lista * l, int k, lstInfo * val) {
if((k >= 0) && (k < l->n)){ /* Não é necessário testar se n > 0, pois
* se n = 0, então k < n é falso para k >= 0
*/
int i;
*val = l->itens[k];
for(i = k; i < l->n-1; i++) {
l->itens[i] = l->itens[i+1];
}
(l->n)--;
return TRUE;
}
return FALSE;
}
Este Trecho:
[code]
for(i = k; i < l->n-1; i++) {
l->itens[i] = l->itens[i+1];
} [/code]
Dê uma olhada, bastaria guardar o ultimo elemento da lista.
Antes de mais peço desculpa pelos erros ortográficos entanglement, e sim, o seu exemplo veio esclarecer melhor as coisas.
douglaskd, o seu método deu-me o seguinte erro:
[list]Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 2
at PL6ex4.rotacao(PL6ex4.java:59)
at PL6ex4.main(PL6ex4.java:16)
Java Result: 1
[/list]
e tive que o alterar para esta forma, mas continuou dando erro:
public static int[] rotacao(int[] v){
int i = N -1;
int[] v_rod = new int[i];
for(int cont = 0;cont<=i;cont++){
if(cont+1 != N{
v_rod[cont+1] = v[cont];
}else{
v_rod[cont-i] = v[i];
}
}
return v_rod;
}
Amigo getAdicted, não entendi os seus exemplos, nomeadamente quando escreve coisas do género:
[list]l->n l->n-1 *val = l->itens[k];[/list]
Não dava para me dar um exemplo do género do douglaskd?
[list]Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 4
at PL6ex4.rotacao(PL6ex4.java:58)
at PL6ex4.main(PL6ex4.java:16)
Java Result: 1
[/list]
e eu tive que mudar isto no código senão dava erro na atribuição de valor da variavel “i” quando a está a iniciar na segunda linha:
public static int[] rotacao(int[] v,int N){
int i = N;//foi aqui que mudei
int tmp;
for(int cont = 0;cont<=i;cont++){
tmp = v[cont];
v[cont] = v[i-cont-1];
v[i-cont-1] = tmp;
}
return v;
}
estava enrolado com o serviço… Esquece o que eu falei, é burocracia, inclusive os exemplos que te mandei estavam em linguagem C, escuta os caras que te deram as respostas.
Obs. Lista circular é aquela em que o ultimo elemento da lista volta para o começo.
douglaskd, usei o sei método e o output pretendido foi o seguinte:
[list]Quantos nº deseja ler?
4
Insira um nº:
4
Insira um nº:
3
Insira um nº:
2
Insira um nº:
1
Elementos do vector invertido:
1
2
3
4
Elementos do vector rodado
1
4
3
2
[/list]