Ajuda no código do exercício: Crie um algoritmo recursivo para imprimir os elementos de um array com N posições na ordem crescente
16 respostasResolvido
java
A
av120
Estou com dificuldade nesse código. As linhas: 6, 30, 34 estão com erro. Já revirei o eclipse pra ajeitar e nada. Alguém me ajuda na resolução do meu código? No momento não estou conseguindo resolver o problema.
importjava.util.Scanner;publicclassexercício1{Scannersc=newScanner(System.in);intx=10;inti,j,temp;/* Leitura do Vetor */for(i=0;i<10;i++){{System.out.println("Digite um numero:");i=sc.nextInt();}//ordenando o vetorfor(i=0;i<10;i++)for(j=i+1;j<10;j++){int[]x;if(x[i]>x[j]){temp=x[i];x[i]=x[j];x[j]=temp;}}}publicintImprimirVetor(intx,inti){/* Impressão do Vetor Ordenado */System.out.println("Vetor em ordem crescente: \n");for(i=0;i<10;i++)System.out.println(x[i]);return0;}}
Nome de classe deve sempre começar com letra maiúscula e não pode conter caracteres especiais, como acentos. O correto seria: Exercicio1
No System.out onde vc imprime o texto: Digite um numero, não precisa dessas chaves extras. Remova elas.
Mantenha a identação. Eu prefiro que as chaves fique no final das linhas em vez de colocar no início, mas não tenho certeza se isso eh uma convenção ou não.
Comentário de linha, faça com // em vez de /* */. Use da forma como fez, se for para colocar um comentário com um texto maior com mais detalhes.
A
av120
Ok, consegui implementar suas considerações, ficou dessa forma:
Depois do ultimo fechamento de chave eu posso colocar o método ImprimirVetor?
darlan_machado
Linha 6: você criou a classe, mas a classe sozinha não aceita código. Precisa colocar isso num método.
Linha 30: o método que você construiu está fora da classe
Linha 34: x nãéo ã vetor, logo, no dá para acessar a iésima posição dele.
Solucao aceita
Lucas_Camara
importjava.util.Scanner;publicclassExercicio1{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);inttamanho=5;int[]numeros=newint[tamanho];// Leiturafor(inti=0;i<tamanho;i++){System.out.printf("Digite um numero (%d/%d): ",(i+1),tamanho);numeros[i]=sc.nextInt();}// Ordenaçãointtemp;for(inti=0;i<tamanho;i++){for(intj=i+1;j<tamanho;j++){if(numeros[i]>numeros[j]){temp=numeros[i];numeros[i]=numeros[j];numeros[j]=temp;}}}imprimir(numeros);sc.close();}/** * Imprime o vetor de números no console */privatestaticvoidimprimir(int[]numeros){System.out.println("\nVetor em ordem crescente: ");for(inti=0;i<numeros.length;i++){System.out.println("- "+numeros[i]);}}}
A
av120
Muito obrigado por me ajudar a melhorar o código!
Lucas_Camara
Dê uma olhada nele, e, se alguma parte do código não estiver claro, pode perguntar.
Esse algoritmo, faz a troca dos valores entre as posições, caso o primeiro valor (numeros[i]) seja maior do que o segundo valor (numeros[j]), pq j é igual a i + 1, então o valor da posição i será trocado com o valor da posição j, utilizando a variável temp para armazenar o valor temporariamento (para não perder o valor antes que a troca seja realizada)
Pense nesse array (vetor):
01234<-posiçõesdoarrayvetor->[5,4,8,1,9]ij
Nesse array, quando o algoritmo for executado, o valor de i e j será trocado, pois 5 é maior do que 4. E esse ciclo se repete até o final do array, fazendo a ordenação sempre seguindo a mesma lógica.
A
av120
Ok obrigado, consegui entender melhor agora.
Lucas_Camara1 like
Qualquer coisa, soh perguntar.
Não se esqueça de marcar a resposta que te ajudou como Solução