Comparar valores dentro de um único array/vetor

10 respostas
J

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

R

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

J

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,

R

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

J

Sim!

F

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!

J

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,

F

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.

V

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

J

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.

J

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