Criar uma função chamada inverte que receba um vetor de números
inteiros como parâmentro e seu tamanho. A função deve inverter a ordem dos
elementos do vetor de modo que o 1º vire o último e o 2º vire o penúltimo e
assim sucessivamente.
packagealgo487;importjava.util.Scanner;/** * @author daniel */publicclassMain{publicstaticvoidmain(String[]args){// TODO code application logic hereScannerx=newScanner(System.in);System.out.println("informe quantidade de valores ");intqt=x.nextInt();inta[]=newint[qt];intb[]=newint[qt];// o vetor b é o inverso de a. Essa declaração é feita no metodo mais abaixo 'inverte'for(inti=0;i<qt;i++){System.out.println("Informe valor "+(i+1));a[i]=x.nextInt();}for(inti=0;i<qt;i++){System.out.println(inverte(b[i]));//erro nessa parte }}publicstaticvoidinverte(inta[],intb[],intqt){// aqui os valores são invertidosintj=qt-1;for(inti=0;i><qt;i++){b[j]=a[i];j=j-1;}for(inti=0;i><qt;i++){// nao é para ser >< e sim <System.out.println(b[i]);}}}
Você não criou uma função nomeada como “inverte” que recebe como parâmetro um vetor de inteiros e seu tamanho.
Você não implementou a função.
mauricionarcizo
bah cara, tu ta dando tiro no escuro né, tem coisas ai muito faceis de ver o erro e voce esta errando…
por exemplo quando voce cria um método que recebe parametros, se voce tem 2 valores que irão receber como parametros, obrigatoriamente voce tem que passar 2 valores ao chamar esse método, assim como no teu metodo inverte que tem 3 parametros a serem recebidos, mas no momento que voce chama esse método voce apenas passa um valor… tem que estudar mais cara…
dfarias
mauricionarcizo:
bah cara, tu ta dando tiro no escuro né, tem coisas ai muito faceis de ver o erro e voce esta errando…
por exemplo quando voce cria um método que recebe parametros, se voce tem 2 valores que irão receber como parametros, obrigatoriamente voce tem que passar 2 valores ao chamar esse método, assim como no teu metodo inverte que tem 3 parametros a serem recebidos, mas no momento que voce chama esse método voce apenas passa um valor… tem que estudar mais cara…
kkkk , pra que eu vou passar A pra main se eu só preciso exibir B (que é o inverso de a).
mauricionarcizo
for(inti=0;i<qt;i++){System.out.println(inverte(b[i]));//aqui voce esta chamando o metodo inverte e passando um parametro, mas no seu metodo requer 3 parametros, dois vetores e um inteiro!!!!!!!}}publicstaticvoidinverte(inta[],intb[],intqt){// aqui os valores são invertidos intj=qt-1;for(inti=0;i><qt;i++){b[j]=a[i];j=j-1;}
JM4X
o enunciado pede DOIS parametros: VETOR DE INTEIROS e TAMANHO DO VETOR.
seria desnecessário o tamanho do vetor, mas o enunciado pede.
tenta fazer assim, e posta teu código, se precisar de ajuda.
dfarias
eu vou precisa colocar um return dentro do for do metodo inverte?
JM4X
escreve o código cara, não tenha medo!
a força está com você!
tente só assim se aprende.
depois que tentar, posta seu código que agente vai te ajudando.
mas é importante que você tente!
dfarias
/*algo487-Criar uma função chamada inverte que receba um vetor de númerosinteiros como parâmentro e seu tamanho. A função deve inverter a ordem doselementos do vetor de modo que o 1º vire o último e o 2º vire o penúltimo eassim sucessivamente. */packagealgo487;importjava.util.Scanner;/** * @author daniel */publicclassMain{publicstaticvoidmain(String[]args){// TODO code application logic hereScannerx=newScanner(System.in);System.out.println("informe quantidade de valores ");intqt=x.nextInt();inta[]=newint[qt];intb[]=newint[qt];intc[]=newint[qt];for(inti=0;i<qt;i++){System.out.println("Informe valor "+(i+1));a[i]=x.nextInt();}for(inti=0;i><qt;i++){c[i]=inverte(b[i]);System.out.println(c[i]);}}publicstaticintinverte(inta[],intb[],intqt){intj=qt-1;for(inti=0;i><qt;i++){b[j]=a[i];j=j-1;//lembrado que nao é >< mas sim <return(b[i]);}}}
>
mauricionarcizo
deu certo??? agora esta ao inves de dar tiro no escuro está dando tiro no pé… cara lê seu código tente ver o que está acontecendo
mauricionarcizo
importjava.util.Scanner;/** * * @author Mauricio */publicclassMain{publicstaticvoidmain(String[]args){// TODO code application logic hereScannerx=newScanner(System.in);System.out.println("informe quantidade de valores ");intqt=x.nextInt();inta[]=newint[qt];intb[]=newint[qt];// o vetor b é o inverso de a. Essa declaração é feita no metodo mais abaixo 'inverte'for(inti=0;i<qt;i++){System.out.println("Informe valor "+(i+1));a[i]=x.nextInt();}inverte(a,b,qt);}publicstaticvoidinverte(inta[],intb[],intqt){// aqui os valores são invertidosintj=qt-1;for(inti=0;i<qt;i++){b[i]=a[j];j-=1;}for(inti=0;i<qt;i++){System.out.println("A[]"+a[i]);}for(inti=0;i<qt;i++){System.out.println("B[]"+b[i]);}}}
sei que não deveria, mas está ai, para ver o que eu estava te falando sobre passagem de parametros, da uma olhada e tenta entender o que foi feito...
mauricionarcizo
tenta ver a diferença da forma como voce está chamando o seu metodo inverte, para o jeito que eu coloquei agora…
isaiaspf
Farias,
Você pode fazer da seguinte forma:
publicstaticint[]invertArray(int[]array){
int[]invertedArray=newint[array.length];for(inti=array.length; i > 0; i--) {invertedArray[array.length-i]=array[i-1];}
returninvertedArray;
}
Você poderia me dizer para que serve o ‘:’ no java?
mauricionarcizo
vou responder por ele, é uma forma mais limpa e bonita de se implementar o for, que faz exatamente a mesma coisa, porem mais elegante por assim dizer, voce declara um tipo do mesmo tipo que quer percorrer coloca essas “:” e o tal bixo que voce quer percorrer. Então é a mesma coisa que o for que voce implementou, tem a mesma função. E dizendo que o i irá percorrer o b.
dfarias
entendi cara, seu passo uma certa quantidade, eu tenho que retornar a mesma quantidade.
isaiaspf
No caso do “for(int i : b)” é pra definir um foreach.
Seria a mesma coisa que fazer: for(int i = 0; i < b.length; i++) {
System.out.println(b[i]);
}
dfarias
Agora eu entendi!
eu preciso retornar a, b,qt.Senão o codigo nao funfa.
Então funciona perfeitamente. Vlw mauricio.
packageJavaApplication32;importjava.util.Scanner;/**** @author Mauricio*/publicclassMain{publicstaticvoidmain(String[]args){// TODO code application logic hereScannerx=newScanner(System.in);System.out.println("informe quantidade de valores ");intqt=x.nextInt();inta[]=newint[qt];intb[]=newint[qt];// o vetor b é o inverso de a. Essa declaração é feita no metodo mais abaixo 'inverte'for(inti=0;i<qt;i++){System.out.println("Informe valor "+(i+1));a[i]=x.nextInt();}inverte(a,b,qt);}publicstaticvoidinverte(inta[],intb[],intqt){// aqui os valores são invertidosintj=qt-1;for(inti=0;i<qt;i++){b[i]=a[j];j-=1;}for(inti=0;i<qt;i++){System.out.println("B[]"+b[i]);}}}
dfarias
vlw pessoal … vcs são fodões!!!
JM4X
a principal diferença é que quando se usa o for aprimorado (esse for com “:”) o for se encarreca de encontrar a melhor forma de iterar sobre a estrutura.
quando vc usa o for convencional, ele simplesmente chama cada “indice” da estrutura, um a um… no caso de uma lista ligada, isso é custoso…
para arrays e implementações estáticas de listas, o for convencional e o for aprimorado agem exatamente iguais.