Dúvida sobre vetores

2 respostas
Felipe_Vandrilho

Boa noite, é o seguinte eu tenho que fazer 1 programa para ler 1 seqüência de números positivos digitados pelo usuário e imprimir os
mesmos números em ordem, do menor para o maior. O usuário deverá usar o número 0 para indicar o final da entrada. O programa deve suportar no máximo 100 entradas.

Eu tentei fazer a questão sem a parte do número 0 para indicar final de entrada de dados, porque estava me enrolando mesmo assim não saiu se vocês conseguirem implementar esse código agradeço.
nota: fiz apenas um vetor[4]; para testar e tentei fazer imprimir apenas o menor e maior número.

package pacoteprova;

import java.util.Scanner;

public class Questao1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double menor;
		double maior;
		double vet[] = new double[4];
		Scanner leia = new Scanner(System.in);
		maior = vet[0];
		menor = vet[1];

		for (int i = 0; i <=vet.length; i++) {

			System.out.println("Dig " + i + " número");
			vet[i] = leia.nextDouble();

			if (vet[i] > maior) {
				maior = vet[i];
			}

			if (vet[i] < menor) {
				menor = vet[i];
			}
		}

		System.out.println("Maior: " + maior);
		System.out.println("Menor: " + menor);

	}

}

Se possível respondam ainda hoje, agradeço.

2 Respostas

CrOnNoS
Primeiro: Um vetor com 4 posições vai de 0 a 3, portanto no seu for, coloque i < length e não <= Segundo: Neste caso do exemplo (que não é o que você quer), você não pode atribuir os valores de menor e maior a valores qualquer salvos no vetor como você fez (que nesse caso ambos são 0) pois se o usuário digitar apenas números a cima de 0, por exemplo, o resultado final seria o menor valor = 0 e ele nem foi digitado. Terceiro: Cuidado com essa atribuição que você fez aqui -
double vet[] = new double[4];
		maior = vet[0];
		menor = vet[1];
É padrão do java iniciar as variáveis dos objetos com valores default e SÓ por isso, essa sua atribuição deu certo e os valores de maior e menor ficaram = 0. Se você tinha conhecimento disso e foi intencional, sem problema, mas tente evitar usar valores de variáveis sem inicia-las explicitamente. Quarto: Para colocar a parada com o valor "0", você poderia iniciar uma para variável receber o int lido do teclado, antes do for, com um valor diferente de 0, e adicionar ao for a condição de continuação "variavel != 0"
double valorLido = -1;

		for (int i = 0; i < vet.length && valorLido != 0; i++) {

			System.out.println("Dig " + i + " número");
			valorLido = leia.nextDouble();
			vet[i] = valorLido;

Por último sobre o problema em si, tem soluções extremamente simples em java mas como isso parece um exercício de aula, o que o seu professor deve estar querendo é que você leia todos os valores, salve eles em um vetor, e depois chame um método mandando esse vetor por parâmetro para ordena-lo.
E essa parece toda a questão do exercício ao ponto que se alguém resolver para você tiraria o sentido do exercício.
Se for isso o seu professor deve ter especificado um algoritmo de ordenação para usar, e se não especificou ele REALMENTE está querendo que você pense em um hehe
http://pt.wikipedia.org/wiki/Algoritmo_de_ordenação -> Informação sobre algoritmos de ordenação
Se não foi especificado um e você ainda precisar de ajuda para pensar em como fazer .. well ... sinta-se livre para tirar as dúvidas (mas não peça resoluções prontas)

Felipe_Vandrilho

Obrigado pela ajuda e pelo link me ajudou e muito! :smiley:

Criado 15 de dezembro de 2009
Ultima resposta 15 de dez. de 2009
Respostas 2
Participantes 2