Comparar valores dentro de um único array/vetor

10 respostas
juliomendes90

Galera,

Sou iniciante em JAVA, e uma das coisas que mais odeio em programação é VETOR/ARRAY.
Estou com um exercício da faculdade para fazer.

Segue o código:

package FEUC;

import java.util.Scanner;

public class Exerc4 {

	/* Escreva um programa que calcula o máximo, 
	 * o mínimo, a soma e a média de um conjunto 
	 * de valores inteiros. O número de valores a 
	 * introduzir deve ser também pedido ao utilizador. */
	
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int[] valores = new int[5]; // vetor de 5 posições
		int maximo = 0;
		int minimo = 0;
		int soma;
		double media;
		int i;
		
		for (i=0;i<5;i++) {
			System.out.println("Informe o valor do " + (i+1) + "º valor: " );
			valores[i] = scan.nextInt();		
		}

	}

}

Minha dificuldade é fazer a comparação entre os valores de um único array.

Poderiam me dá o "caminho das pedras"?

Abs.

10 Respostas

Rodrigo_Sasaki

O que você quer comparar? por que? pra que? :slight_smile:

juliomendes90

O usuário vai entrar com 5 valores, e estes serão guardados no vetor.
Destes 5 valores, quero saber o maior e o menor, fazer a soma e a média.

Segue abaixo o enunciado:

/* Escreva um programa que calcula o máximo,
* o mínimo, a soma e a média de um conjunto
* de valores inteiros. O número de valores a
* introduzir deve ser também pedido ao utilizador. */

Abs,

Rodrigo_Sasaki

Sabe comparar valores? maior, maior ou igual… coisas assim?

juliomendes90

Sim!

fabiocortolan

Faça mais um laço no seu sistema percorrendo o vetor e comparando os números, dentro do laço vc tbm pode fazer a soma dentro deste mesmo laço e qdo for mostrar o resultado calcula a média, simples assim!

juliomendes90

Olhem como eu fiz:

package FEUC;

import java.util.Scanner;

public class Exerc4 {

	/* Escreva um programa que calcula o máximo, 
	 * o mínimo, a soma e a média de um conjunto 
	 * de valores inteiros. O número de valores a 
	 * introduzir deve ser também pedido ao utilizador. */
	
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int[] valores = new int[5]; // vetor de 5 posições
		int maior  = 0;
		int menor  = 0;
		int soma;
		double media;
		int i;
		
		for (i=0;i<5;i++) {
			System.out.println("Informe o valor do " + (i+1) + "º valor: " );
			valores[i] = scan.nextInt();		
		}
		
		if ((valores[1] > valores[2]) && (valores[1] > valores[3]) && (valores[1] > valores[4]) && (valores[1] > valores[5])) {
			maior = valores[1];
			System.out.println("O maior valor é " + valores[1]);
		}			
		if ((valores[2] > valores[1]) && (valores[2] > valores[3]) && (valores[2] > valores[4]) && (valores[2] > valores[5])) {
			maior = valores[2];
			System.out.println("O maior valor é " + valores[2]);
		}
		if ((valores[3] > valores[1]) && (valores[3] > valores[3]) && (valores[3] > valores[4]) && (valores[3] > valores[5])) {
			maior = valores[3];
			System.out.println("O maior valor é " + valores[3]);
		}
		if ((valores[4] > valores[1]) && (valores[4] > valores[2]) && (valores[4] > valores[3]) && (valores[4] > valores[5])) {
			maior = valores[4];
			System.out.println("O maior valor é " + valores[4]);
		}
		if ((valores[5] > valores[1]) && (valores[5] > valores[2]) && (valores[5] > valores[3]) && (valores[5] > valores[4])) {
			maior = valores[5];
			System.out.println("O maior valor é " + valores[5]);
		}
		
		if ((valores[1] < valores[2]) && (valores[1] < valores[3]) && (valores[1] < valores[4]) && (valores[1] < valores[5])) {
			menor = valores[1];
			System.out.println("O menor valor é " + valores[1]);
		}
		if ((valores[2] < valores[1]) && (valores[2] < valores[3]) && (valores[2] < valores[4]) && (valores[2] < valores[5])) {
			menor = valores[2];
			System.out.println("O menor valor é " + valores[2]);
		}
		if ((valores[3] < valores[1]) && (valores[3] < valores[3]) && (valores[3] < valores[4]) && (valores[3] < valores[5])) {
			menor = valores[3];
			System.out.println("O menor valor é " + valores[3]);
		}
		if ((valores[4] < valores[1]) && (valores[4] < valores[2]) && (valores[4] < valores[3]) && (valores[4] < valores[5])) {
			menor = valores[4];
			System.out.println("O menor valor é " + valores[4]);
		}
		if ((valores[5] < valores[1]) && (valores[5] < valores[2]) && (valores[5] < valores[3]) && (valores[5] < valores[4])) {
			menor = valores[5];
			System.out.println("O menor valor é " + valores[5]);
		}
		
		media = (valores[1] + valores[2] + valores[3] + valores[4] + valores[5]) / 5;
		soma = (valores[1] + valores[2] + valores[3] + valores[4] + valores[5]);
		
		System.out.println("A média dos valores é " + media + " e a soma dos valores é " + soma);
		
	}

}

Tem como melhorar?

Abs,

fabiocortolan

juliomendes90:
Olhem como eu fiz:
Tem como melhorar?

Com certeza tem:

public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in);  
        int[] valores = new int[5]; // vetor de 5 posições  
        int maior  = 0;  
        int menor  = 0;  
        int soma;  
        double media;  
          
        for (int i = 0; i < 5; i++) {  
            System.out.println("Informe o valor do " + (i + 1) + "º valor: " );  
            valores[i] = scan.nextInt();          
        }

        // Add os primeiros valores às variáveis
        menor = valores[0];
        maior = valores[0];

        for (int i = 0; i < valores.length(); i++) {
            soma += valores[i]; //soma os valores
            
            if (menor > valores[i]) menor = valores[i]; // Verifica e add o menor valor
            if (maior < valores[i]) maior = valores[i]; // Verifica e add o maior valor
        }

        // Calcula a média
        media = soma / valores.length;

        // print para mostrar os valores, soma e média...
    }

Uma obs, vc pode declarar o “int i” diretamente dentro do laço for, é uma variável a menos no scopo do método.

ViniGodoy

Por favor, não abuse do CAPS LOCK no título das suas mensagens.

juliomendes90

fabiocortolan:
juliomendes90:
Olhem como eu fiz:
Tem como melhorar?

Com certeza tem:

public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in);  
        int[] valores = new int[5]; // vetor de 5 posições  
        int maior  = 0;  
        int menor  = 0;  
        int soma;  
        double media;  
          
        for (int i = 0; i < 5; i++) {  
            System.out.println("Informe o valor do " + (i + 1) + "º valor: " );  
            valores[i] = scan.nextInt();          
        }

        // Add os primeiros valores às variáveis
        menor = valores[0];
        maior = valores[0];

        for (int i = 0; i < valores.length(); i++) {
            soma += valores[i]; //soma os valores
            
            if (menor > valores[i]) menor = valores[i]; // Verifica e add o menor valor
            if (maior < valores[i]) maior = valores[i]; // Verifica e add o maior valor
        }

        // Calcula a média
        media = soma / valores.length;

        // print para mostrar os valores, soma e média...
    }

Uma obs, vc pode declarar o “int i” diretamente dentro do laço for, é uma variável a menos no scopo do método.

Valeu amigo, obrigado.

juliomendes90

Beleza, obrigado. Até então, não sabia dessa regra. Abs,

Criado 20 de setembro de 2013
Ultima resposta 25 de set. de 2013
Respostas 10
Participantes 4