Maior e Menor Com ARRAY

12 respostas
Jasoncard

Ola Pessoal sou novo aqui e la vai uma duvida!
Fiz esse codigo e falta apenas fazer com que o programa identifique o maior e menor dentro de uma ARRAY segue o Codigo:

//Elaborado poe Alex Maramaldo
import javax.swing.*;
public class Exc4{
  public static void main(String args[]){
    int num;
    double soma=0,media;
    String teste3;
    String teste2;
    
    teste3 = JOptionPane.showInputDialog("Digite quantidade de Valores:");
	num= Integer.parseInt(teste3);
    
    double notas[] = new double[(num)];
    
    for (int i=0; i<=num-1;i++){
		teste2 = JOptionPane.showInputDialog("Digite o Valor do Dado " + (i+1)); 
		notas[i] = Double.parseDouble(teste2);
		soma = (soma + notas[i]);   
    	}
    	media = (soma/num);
    JOptionPane.showMessageDialog(null,"A soma é: " + soma + "\n" + 
    									"a Media é: " + media + "\n" +
    									"O Maior é: " + "\n" +
    									"O menor é: " + "\n");
    System.exit(0);
    }
}

Qria de Possivel esse codigo corrigido, ou seja, ja acrescentado como encontrar o Maior e no Menor dentro de uma Array.
Grato!!!!

12 Respostas

T

blz.

vc pode criar uma variavel:

A - para o maior numero, incializa ela com o primeiro elemeneto do array.
B - para o menor numero, vc inicializa ela com 0.

e dentro do for vc verifica, se o elemento do array é menor ou maoir que as variaveis.

é ± por aí. qualquer duvida pode perguntar.

até mais.

ViniGodoy

Você também pode iniciar a variável do menor número com o primeiro elemento do Array.
Além disso, 0 não seria o melhor número e sim Integer.MAX_INTEGER.

quikkoo

e eu ganho quantos pontos na matéria de programação se eu entregar até sábado?
acho q ninguem aqui vai passar o codigo do seu trabalho

vo t da uma dica de algoritmo, vc mesmo escreve o fonte:

max rece um valor muito grande, ex: 9999
min recebe um valor muito pequeno, ex: -1

faz um laço que percorre todo o vetor
	se o valor atual é maior que max entao atualiza max
	se o valor atual é menor que min entao atualiza min

no fim das contas max vai ter a maior nota e min vai ter a menor

flw, t+

peczenyj

max e min podem receber o valor do primeiro argumento também.

ViniGodoy

Não era ao contrário?

Se Max receber um valor muito grande, o valor final será esse valor muito grande!
O mesmo vale para min. Então o macete é inverter…

min começa com um valor muito grande. Assim, qualquer valor do vetor será menor que o valor inicial. Sugestão comece com min = Integer.MAX_INTEGER; que é o maior valor que um int pode possuir.

max começa com um valor muito pequeno Integer.MIN_INTEGER, que é o menor valor de um inteiro.

Ou então, faça como nosso colega falou, inicie as variáveis com os valores do primeiro elemento do vetor. E você ainda ganha a vantagem de poder começar a iteração a partir do segundo elemento. :wink:

peczenyj

Ou então ordene o array e peque os elementos extremos.

Tem umas 1024 formas de fazer isso :slight_smile:

LPJava

pode usar um ArrayList e deixa esse codigo mais limpo… e depois ordenar a lista e pegar o primeiro e outro cara…
realmente muitas formas…

quikkoo

“ViniGodoy”:
Não era ao contrário?
era sim, erro meu

Jasoncard

E aew Galera, desculpa pela demora para responder
mas segue como eu Fiz
Primeiro Criei ja mais Duas Variaveis inicializando com 0;

No Primeiro Looping ambas as Variaveis vao receber o msm Valor, apartir do Segundo, ele ja vai organizando cada valor em seu lugar, sempre atualizando so Dados a Cada no Looping.

double maior=0,menor=0;

depois vamos a pratica

for (int i=0; i<=num-1;i++){
		teste2 = JOptionPane.showInputDialog("Digite o Valor do Dado " + (i+1)); 
		notas[i] = Double.parseDouble(teste2);
		if (i==0)
		{
			maior = notas[i];
			menor = notas[i];
    	}
		
		soma = (soma + notas[i]);
		
		//Grava o Maior Valor de notas[i] em Maior   
		if (notas[i]>maior){   
		       maior=notas[i];   
		}   
		//Grava o Menor Valor de notas[i] em menor   
		if (notas[i]<menor){   
		       menor=notas[i];   
		}
                }

No Final Basta Imprimir

JOptionPane.showMessageDialog(null,"A soma é: " + soma + "\n" +     							      "a Media é: " + media + "\n" +
                                                      "O Maior é: " + maior + "\n" +
    			      "O menor é: " + menor + "\n");

VLW pelas Dicas

quikkoo

é mas como eu tinha dito (e depos corrigido pelo ViniGodoy) a variável menor tem q começar com um valor muito grande, (se as notas estiveres entre 0 e 10 esse tal valor grande pode ser 11), isso pq se a variável começa com zero então ela nunca será atualizada para a menor nota, pois nunca haverá um nota menor doq zero, sacou?

flw, t+

Jasoncard

Concordo com vc, mas no exemplo acima, eu fiz com que no primeiro looping, asmbas as variaveis (maior e menor) recebem o msm valor, ex:
o Usuario vaDigitar 3 numeros:

Primeiro Looping: Valor Digitado 3
O Sistema Vai Gravar o Valor 3 nas Duas Variaveis.
MAIOR = 3
MENOR = 3

Segundo Looping: Valor Digitado 5

Vai ser verificado o Primeiro IF, onde se o Valor Digitado for Maior q a Variavel Maior (no caso MAIOR E IGUAL A 3) entao ele grava em MAIOR, descartando o segundo IF

Terceiro Looping: Valor Digitado 1

Vai ser Verificafo o Primeiro IF, vai ver que nao BATE, entao passa par o Segundo, onde se o Valor digitado for menor que a variavel MENOR (no caso MENOR E IGUAL A 3) entao ele grava em MENOR, descartando o Valor que ele TInha,
rsrsrsr, VLW GALERA, vcs me ajudaram e muito aew!

quikkoo

eu ando muito sonso ultimamente, desculpa ae mais uma vez, eu jurava q tinha visto as dias variaveis serem iniciadas com zero

flw, t+

Criado 26 de outubro de 2007
Ultima resposta 30 de out. de 2007
Respostas 12
Participantes 6