Ir para conteúdo
Fórum Script Brasil
  • 0

Comparar, Qual é O Maior


Pires

Pergunta

Galera, se puderem me ajudar. Minha primeira prova de Java foi desenvolver o código para um algoritmo que lê 6 números via teclado e mostra na tela qual desses números é o maior. Eu até consegui fazer, mas comparando número por número, ou seja, 64 possibilidades... e isso não é prático, já q meu professor falou q existe uma maneira de resolver em poucas linhas, comparando 2 com 2.

Será q vocês poderiam me ajudar? Eu postei o começo do meu código pra vocês verem:

import javax.swing.JOptionPane;
public class Desafio
{
	public static void main (String args[])
	{
  String out
  int a, b, c, d, e, f;

  a=Integer.parseInt(JOptionPane.showInputDialog("Número"));
  b=Integer.parseInt(JOptionPane.showInputDialog("Número"));
  c=Integer.parseInt(JOptionPane.showInputDialog("Número"));
  d=Integer.parseInt(JOptionPane.showInputDialog("Número"));
  e=Integer.parseInt(JOptionPane.showInputDialog("Número"));
  f=Integer.parseInt(JOptionPane.showInputDialog("Número"));

  // agora aqui meu código fica gigantesco

  if ((a > b) && (a > c) && (a > d) && (a > e) && (a > f))
  	{sout="O maior é "+a;}
  
  else{
  	if ((b > a) && (b > c) && (b > d) && (b > e) && (b > f))
    {sout="O maior é "+b;}

  	else{

  // e a sequencia continua, comparando a variável c, d, e, f, com as demais...

Por acaso eu poderia criar outra variável (maior), comparar de 2 em 2 e ir jogando o maior valor nessa variável até acabar a comparação?

Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 0

o q você pode fazer, é criar uma vaziavel x e iniciala com um valor q obrigatoriamente tem q ser menor q os numeros q seram testados, dai você usa um for q verifica se a variavel testada (aconselho por em um array pra ficar mais facil no for) é maior q x, se for, poe o valor dela em x, depois, você poe outro for, e verifica qual delas tem o valor igual a x, ela é a maior...

fiz um ex pra você q retorna o indica da maior:

public int veMaior(int array[]){

int x = -1000; // se todas as variaveis forem menores q -1000 n vai encontrar

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

  if (array > x) x = array;

}

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

  if (x == array) return i;

}

System.out.println("Todas as variaveis são menores q -1000!");

return -1;

}

desse jeito, alem de dar menos trabalho, a quantidade de numeros q podem ser comparados é ilimitada...

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu, cara, mas eu ainda não cheguei em Array e nem sei como fazer isso.

Queria saber mesmo usando apenas if/else

Embaçado, né?

Link para o comentário
Compartilhar em outros sites

  • 0

você pode fazer desse jeito tb:

compara um por um e depois mostra o valor:

int aux;
int x1, x2, x3, x4, x5, x6;
// aki você coloca os valores nas variaveis
aux = x1;
if (x2 > aux) aux = x2;
if (x3 > aux) aux = x3;
if (x4 > aux) aux = x4;
if (x5 > aux) aux = x5;
if (x6 > aux) aux = x6;
System.out.println(aux);

Link para o comentário
Compartilhar em outros sites

  • 0

Então, cara, consegui desenvolver o código, deu um pouquinho de trabalho, mas queria fazer mesmo da maneira q meu prof. falou, só usando if/else.

O cógido é esse:

if (x1 < x2)
maior=x2;

else
maior=x1;

if (maior < x3)
{maior=x3;}

else{

 if (maior < x4)
 {maior=x4;} 

 else{

  if (maior < x5)
  {maior=x5;}
  
  else{

   if (maior < x6) 
   {maior=x6;}

   else{

   }
  }
 }
}

out="O maior é "+maior;
JOptionPane.showMessageDialog(null,out);

E tb usei o código q você postou. É uma das várias maneiras de se resolver esse problema. Mas valeu pela ajuda! laugh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo , você ta indo ao s poucos treinando isso é muito bom, mas aconcelho você já ir prestando atenção como fazer a mesma coisa , no caso o if else, mais avançadamente, como foi feito acima pelo fbafelipe.....Porque as declarações .condicionais if e else , em demasia prejudicam a performace do programa , porque ele sempre vai ter que checar todas as declaraçõe if e else , até ver qual é verdadeira...funcionar funciona, mas o mais correto é com array e for...Mas relaxe primeiro treine passo a passo assim como vbc ta fazendo, mas já v[a abrindo o olho para esse tipo de sintaxe mais enchuta e melhor em performace....Se ta no caminho ceto..Falowe rolleyes.gif

Link para o comentário
Compartilhar em outros sites

  • 0

beleza kabelo. valeu ae wink.gif

se bem q pra esse exemplo já está definido quantos números serão comparados. Array é fácil, ou tem alguma complicação? E tive q desenvolver um exercício parecido; a diferença é q eu defino qtos números serão comparados através de uma caixa de diálogo (texto). Aí fiz usando for ou while. Até q é fácil.

Bem, vamu ve até q ponto vou manjar java... biggrin.gif

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0
beleza kabelo. valeu ae wink.gif

se bem q pra esse exemplo já está definido quantos números serão comparados. Array é fácil, ou tem alguma complicação? E tive q desenvolver um exercício parecido; a diferença é q eu defino qtos números serão comparados através de uma caixa de diálogo (texto). Aí fiz usando for ou while. Até q é fácil.

Bem, vamu ve até q ponto vou manjar java... biggrin.gif

[]'s

Cara mais para frente se você quiser entender muito do java, aconcelho você a comprar esse livro, depois que li ele minha mente abriu , tongue.gif

http://www.submarino.com.br/books_productd...Id=209051&ST=SE

já li ele de cabo a rabo....Recomendado

Link para o comentário
Compartilhar em outros sites

  • 0
o q você pode fazer, é criar uma vaziavel x e iniciala com um valor q obrigatoriamente tem q ser menor q os numeros q seram testados, dai você usa um for q verifica se a variavel testada (aconselho por em um array pra ficar mais facil no for) é maior q x, se for, poe o valor dela em x, depois, você poe outro for, e verifica qual delas tem o valor igual a x, ela é a maior...

fiz um ex pra você q retorna o indica da maior:

public int veMaior(int array[]){

int x = -1000; // se todas as variaveis forem menores q -1000 n vai encontrar

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

  if (array > x) x = array;

}

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

  if (x == array) return i;

}

System.out.println("Todas as variaveis são menores q -1000!");

return -1;

}

Olha só cara, veja o q notei:

Se eu fosse um cara chato, diria q esse exemplo dado pelo fbafelipe não é tão prático se pensássemos como um "analista programador". Sabe porque? Se eu iniciar com x = -1000 e um dos números a serem comparados for menor q esse número, -1001, -2000, -15000, entende, vai dar pau. O cara q programa precisa pensar em todas as possibilidades. wink.gif

Porém, o segundo código do fbafelipe e o meu são práticos, porque compara qualquer número, positivo ou não, menor q 1000 ou não. Sacou? cool.gif

Sobre o livro, tem qtas páginas? Na biblioteca da facul tem aquele gigantesco do Deitel e Deitel: Java, Como Programar (capa verde ou bege). O q você acha?

Eu ainda não comecei a ler porque falta tempo mesmo.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0
o q você pode fazer, é criar uma vaziavel x e iniciala com um valor q obrigatoriamente tem q ser menor q os numeros q seram testados, dai você usa um for q verifica se a variavel testada (aconselho por em um array pra ficar mais facil no for) é maior q x, se for, poe o valor dela em x, depois, você poe outro for, e verifica qual delas tem o valor igual a x, ela é a maior...

fiz um ex pra você q retorna o indica da maior:

public int veMaior(int array[]){

int x = -1000; // se todas as variaveis forem menores q -1000 n vai encontrar

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

  if (array > x) x = array;

}

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

  if (x == array) return i;

}

System.out.println("Todas as variaveis são menores q -1000!");

return -1;

}

Olha só cara, veja o q notei:

Se eu fosse um cara chato, diria q esse exemplo dado pelo fbafelipe não é tão prático se pensássemos como um "analista programador". Sabe porque? Se eu iniciar com x = -1000 e um dos números a serem comparados for menor q esse número, -1001, -2000, -15000, entende, vai dar pau. O cara q programa precisa pensar em todas as possibilidades. wink.gif

Porém, o segundo código do fbafelipe e o meu são práticos, porque compara qualquer número, positivo ou não, menor q 1000 ou não. Sacou? cool.gif

Sobre o livro, tem qtas páginas? Na biblioteca da facul tem aquele gigantesco do Deitel e Deitel: Java, Como Programar (capa verde ou bege). O q você acha?

Eu ainda não comecei a ler porque falta tempo mesmo.

[]'s

sim... tanto é q eu falei q os numeros tem q ser maiores q -1000... mas eu fiz assim porque eu fiz rapido pra você sacar a logica, tanto é q no segundo post o problema ta resolvido... e dava pra resolver esse problema usando array mesmo, é por:


aux = array[0];

e quanto ao livro, eu li o do Deitel (falta umas 30 pag pra mim acabar o livro, depois vai faltar os capitulos extras no CD), eu tenho a 4ed (o bege), e eu achei muito bom!

Link para o comentário
Compartilhar em outros sites

  • 0

PIRES, O QUE Estou tentando mostrar não é isso , é que compare a maneira que foi feita os dois códigos, repare que o do array é bem mais enxhuto.

Volto a repetir condicionbais If e else em demasia , pode deixar o sistema com performace compromentida, porque ele checa todas as alternativas , mesmo que já tenha achado a verdadeira...Mas ambos funcionam sem problema

Cara tenho o deiitel , já li ele tam,bém, é o melhor livro para programar , swing e muitas outras coisas ,,..Ele é bem pático e grande..O que eu falei acima , ele é mais teórico, com a bordagens OO, para a certificação!!

Valeu!!

Link para o comentário
Compartilhar em outros sites

  • 0

sim... tanto é q eu falei q os numeros tem q ser maiores q -1000... mas eu fiz assim porque eu fiz rapido só pra você sacar a logica, tanto é q no segundo post o problema já ta resolvido
Volto a repetir condicionbais If e else em demasia , pode deixar o sistema com performace compromentida, porque ele checa todas as alternativas , mesmo que já tenha achado a verdadeira...Mas ambos funcionam sem problema

Legal, eu entendi o recado e saquei a lógica wink.gif

quanto tempo vocês levaram pra ler o Deitel? Cara, tem mta página! blink.gif

Mas o conteúdo deve ser ótimo mesmo. Acho q ensina de tudo...

Sobre o if/else, eu concordo tb q para algumas aplicações, esses condicionais não são recomendados. Mas meu prof. falou q a vantagem do if/else é o contrário do q você falou, Kabelera. Ele disse q quando encontra o "verdadeiro", ele pula o restante. Agora você disse q ele checa tudo, mesmo encontrando o verdadeiro... huh.gifhuh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

eu levei uns 10 meses pra ler o Deitel (e ainda n terminei)... mas teve varios meses q nem li nada... e teve dias q detonei capitulos inteiros hehehehe biggrin.gif

é só você ir lendo q quando você se der conta, já vai estar nas ultimas paginas...

e quanto ao if/else, agora q eu vi o seu codigo com mais calma, se x3 for maior q x1 e x2, os outros numeros n serao testados, portando se tivermos:

x1 = 1;
x2 = 2;
x3 = 3;
x4 = 4;
x5 = 5;
x6 = 6;

o resultado erroneamente sera 3, pois n serao verificados os valores de x4, x5, x6...

alem de q do jeito q eu fiz com array, o metodo n fica limitado a 6 comparacoes, fica ilimitado...

Link para o comentário
Compartilhar em outros sites

  • 0
eu levei uns 10 meses pra ler o Deitel (e ainda n terminei)... mas teve varios meses q nem li nada... e teve dias q detonei capitulos inteiros hehehehe biggrin.gif

é só você ir lendo q quando você se der conta, já vai estar nas ultimas paginas...

e quanto ao if/else, agora q eu vi o seu codigo com mais calma, se x3 for maior q x1 e x2, os outros numeros n serao testados, portando se tivermos:

x1 = 1;
x2 = 2;
x3 = 3;
x4 = 4;
x5 = 5;
x6 = 6;

o resultado erroneamente sera 3, pois n serao verificados os valores de x4, x5, x6...

alem de q do jeito q eu fiz com array, o metodo n fica limitado a 6 comparacoes, fica ilimitado...

Eu tembém ainda não teminei uso ele muito para consulta!!

Não o deitel não tem tudo, por exemplo banco de dados , não tem ..

È verdade cara, quando ele acha o verdadeiro ele para mesmo!!!

Mesmo caso do switch

Mas a maneira mais correta e dinamica continua sendo aquela mesmo!!

Link para o comentário
Compartilhar em outros sites

  • 0
e quanto ao if/else, agora q eu vi o seu codigo com mais calma, se x3 for maior q x1 e x2, os outros numeros n serao testados, portando se tivermos:

x1 = 1;
x2 = 2;
x3 = 3;
x4 = 4;
x5 = 5;
x6 = 6;
o resultado erroneamente sera 3, pois n serao verificados os valores de x4, x5, x6... alem de q do jeito q eu fiz com array, o metodo n fica limitado a 6 comparacoes, fica ilimitado...
Então cara, na verdade, eu esqueci apenas de colocar as chaves {} no else. Ou seja, se o if for falso, não acontece nada, o maior continua sendo o anterior. Mas eu dei uma arrumada no código, agora tá + preciso.
if (x1 < x2)
	maior=x2;
else
	maior=x1;

if (maior < x3)
	{maior=x3;}
else{}

if (maior < x4)
	{maior=x4;} 
else{}

if (maior < x5)
	{maior=x5;}
else{}

if (maior < x6) 
	{maior=x6;}

else{}

out="O maior é "+maior;
JOptionPane.showMessageDialog(null,out);

Agora tá certo né?! wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0
e quanto ao if/else, agora q eu vi o seu codigo com mais calma, se x3 for maior q x1 e x2, os outros numeros n serao testados, portando se tivermos:

x1 = 1;
x2 = 2;
x3 = 3;
x4 = 4;
x5 = 5;
x6 = 6;
o resultado erroneamente sera 3, pois n serao verificados os valores de x4, x5, x6... alem de q do jeito q eu fiz com array, o metodo n fica limitado a 6 comparacoes, fica ilimitado...
Então cara, na verdade, eu esqueci apenas de colocar as chaves {} no else. Ou seja, se o if for falso, não acontece nada, o maior continua sendo o anterior. Mas eu dei uma arrumada no código, agora tá + preciso.
if (x1 < x2)
	maior=x2;
else
	maior=x1;

if (maior < x3)
	{maior=x3;}
else{}

if (maior < x4)
	{maior=x4;} 
else{}

if (maior < x5)
	{maior=x5;}
else{}

if (maior < x6) 
	{maior=x6;}

else{}

out="O maior é "+maior;
JOptionPane.showMessageDialog(null,out);

Agora tá certo né?! wink.gif

agora ta certo... só q o else{} ta lá de bobera... se você tirar n vai mudar nada.. deixa só o if q vai ficar mais legivel...

e ficou exatamente igual ao meu... só q o meu usa array...

Link para o comentário
Compartilhar em outros sites

  • 0

agora ta certo... só q o else{} ta lá de bobera... se você tirar n vai mudar nada.. deixa só o if q vai ficar mais legivel...

e ficou exatamente igual ao meu... só q o meu usa array...

cara não testei , mas acho que se tem que fazer assim:

if (maior < x3)
{maior=x3;

}
else if(maior < x4){
maior=x4
}

Vai usando else if até o final no ultimo você usa apenas o else!! Testa ai }

beleza, testei sem o else e funcionou;)

Tb fiz usando else if até o final. Tb funcionou (Nesse caso fiz pra praticar mesmo if/else wink.gif

Mas ae, galera, valeu pela ajuda!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...