Como imprimir o menor e o maior número?

Java

09/04/2009

Salve! Estava estudando o livro do [b]Deitel[/b], e num dos exercícios ele pede que: [b]1) [/b]Seja criado um aplicativo que leia 5 números e imprima o [b]menor[/b] deles e o [b]maior[/b] deles; [b]2) Usando apenas o que ele ensinou no Cap. 2;[/b] [i](Não preciso dizer que estou no começo do livro, e ele me "forçou" a ser "braçal" na codificação...)[/i] Sendo assim, olha o que codifiquei:
/* Exercício 2.24, Pág. 55 */

import java.util.Scanner;

public class Pag55e224 {

	public static void main (String args[]) {

		Scanner input = new Scanner (System.in);

		int a;
		int b;
		int c;
		int d;
		int e;

		System.out.print ("Digite o 1o numero: ");
		a = input.nextInt();

		System.out.print ("Digite o 2o numero: ");
		b = input.nextInt();

		System.out.print ("Digite o 3o numero: ");
		c = input.nextInt();

		System.out.print ("Digite o 4o numero: ");
		d = input.nextInt();

		System.out.print ("Digite o 5o numero: ");
		e = input.nextInt();

		if (a < b | a < c | a < d | a < e) { // "a" menor que todos

			System.out.printf ("Este e o menor deles: %d\n", a);

		}

			if (a > b | a > c | a > d | a > e) { // "a" maior que todos

				System.out.printf ("Este e o maior deles: %d\n", a);
                 
                        // E assim sucessivamente...
Mas não consegui o resultado esperado... Sei que existem formas mais inteligentes de criar este tipo de aplicativo, mas, [b]seguindo a orientação dele[/b], como eu deveria codificar este aplicativo? Um forte abraço a todos!
Paulo Cassiano

Paulo Cassiano

Curtidas 0

Respostas

Paulo Cassiano

Paulo Cassiano

09/04/2009

Salve! PessoALL, obrigado pelas dicas. Na verdade, cometi o lapso de trocar [b]&&[/b] por [b]|[/b]... Coisa de principiante. Um forte abraço a todos!
GOSTEI 0
Gustavo Steigert

Gustavo Steigert

09/04/2009

Estude com atenção essas coisinhas... valem para a maioria das linguagens de programação.
GOSTEI 0
Bernardo Rezende

Bernardo Rezende

09/04/2009

eu já ía postar um algoritmo diferente mas agora que eu li ali [b]apenas o que ele ensinou no cap. 2[/b] bom, você pode otimizar esse programa com um laço de repetição e criando uma variável maior e menor, e por aí vai boa sorte nos estudos!
GOSTEI 0
Camilo Lopes

Camilo Lopes

09/04/2009

[quote="pcassiano"]Salve! Estava estudando o livro do [b]Deitel[/b], e num dos exercícios ele pede que: [b]1) [/b]Seja criado um aplicativo que leia 5 números e imprima o [b]menor[/b] deles e o [b]maior[/b] deles; [b]2) Usando apenas o que ele ensinou no Cap. 2;[/b] [i](Não preciso dizer que estou no começo do livro, e ele me "forçou" a ser "braçal" na codificação...)[/i] Sendo assim, olha o que codifiquei:
/* Exercício 2.24, Pág. 55 */

import java.util.Scanner;

public class Pag55e224 {

	public static void main (String args[]) {

		Scanner input = new Scanner (System.in);

		int a;
		int b;
		int c;
		int d;
		int e;

		System.out.print ("Digite o 1o numero: ");
		a = input.nextInt();

		System.out.print ("Digite o 2o numero: ");
		b = input.nextInt();

		System.out.print ("Digite o 3o numero: ");
		c = input.nextInt();

		System.out.print ("Digite o 4o numero: ");
		d = input.nextInt();

		System.out.print ("Digite o 5o numero: ");
		e = input.nextInt();

		if (a < b | a < c | a < d | a < e) { // "a" menor que todos

			System.out.printf ("Este e o menor deles: %d\n", a);

		}

			if (a > b | a > c | a > d | a > e) { // "a" maior que todos

				System.out.printf ("Este e o maior deles: %d\n", a);
                 
                        // E assim sucessivamente...
Mas não consegui o resultado esperado... Sei que existem formas mais inteligentes de criar este tipo de aplicativo, mas, [b]seguindo a orientação dele[/b], como eu deveria codificar este aplicativo? Um forte abraço a todos!
hehe ta gostando do livro eu estou no cap5 iniciando..mas isso ja é de costume do deitel...no inicio colocar o serviço "braçal" mesmo... lembro q o meu exercicio desta questao teve um sintaxe maior que a sua nao usei nenhum dos operadores ||, && pois tentei usar apenas os recursos do cap2" mas de paravens prepara-se para o cap3..muito bom!! infelizmente o forum aki nao permite anexar arquivos, pois postaria um documento q fiz de todos os exercicios que resolvi do deitel 6 edição!! a ideia do exercicio nao é copiar o codigo e sim verificar as maneira existentes de resolver um problema!! :) :razz:
GOSTEI 0
Jedson

Jedson

09/04/2009

cara tipo achei estranho esse exercicio pq ele nao orienta no capitulo 2 a mexer com booleano...dai fiquei me perguntando se tinha algum jeito de fazer sem usar o & ou |...depois de muita pensar nao achei como fazer isso de um modo simples...
GOSTEI 0
Jedson

Jedson

09/04/2009

fazendo desse jeito que vc fez so que trocando o | pelo &&...se tiver dois ou mais numeros iguais o programa nao mostra o menor ou maior
GOSTEI 0
Camilo Lopes

Camilo Lopes

09/04/2009

Ralei um pouquinho, mas sendo iniciante acho q tá valendo ... olhem só! import java.util.Scanner; public class comp { private static Scanner input; public static void main(String[] args) { input = new Scanner( System.in ); int a; int b; int c; int d; int e; int max; System.out.print("Digite Numero A: " ); a = input.nextInt(); System.out.print("Digite Numero B: " ); b = input.nextInt(); System.out.print("Digite Numero C: " ); c = input.nextInt(); System.out.print("Digite Numero D: " ); d = input.nextInt(); System.out.print("Digite Numero C: " ); e = input.nextInt(); /* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< O maior Número >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */ if (a >= b) { max = a; a = max; if (a >= c) { max = a; a = max; if (a >= d) { max = a; a = max; if (a >= e) { max = a; a = max; System.out.printf(" O numero A é maior ou igual, Valor: %d\n", a);}}}} if (b >= a) { max = b; b = max; if (b >= c) { max = b; b = max; if (b >= d) { max = b; b = max; if (b >= e) { max = b; b = max; System.out.printf(" O numero B é maior ou igual, Valor: %d\n", b);}}}} if (c >= a) { max = c; c = max; if (c >= b) { max = c; c = max; if (c >= d) { max = c; c = max; if (c >= e) { max = c; c = max; System.out.printf(" O numero C é maior ou igual, Valor: %d\n", c);}}}} if (d >= a) { max = d; d = max; if (d >= b) { max = d; d = max; if (d >= c) { max = d; d = max; if (d >= e) { max = d; d = max; System.out.printf(" O numero D é maior ou igual, Valor: %d\n", d);}}}} if (e >= a) { max = e; e = max; if (e >= b) { max = e; e = max; if (e >= c) { max = e; e = max; if (e >= d) { max = e; e = max; System.out.printf(" O numero E é maior ou igual, Valor: %d\n", e);}}}} /* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< O menor Número >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */ if (a <= b) { max = a; a = max; if (a <= c) { max = a; a = max; if (a <= d) { max = a; a = max; if (a <= e) { max = a; a = max; System.out.printf(" O numero A é menor ou igual, Valor: %d\n", a);}}}} if (b <= a) { max = b; b = max; if (b <= c) { max = b; b = max; if (b <= d) { max = b; b = max; if (b <= e) { max = b; b = max; System.out.printf(" O numero B é menor ou igual, Valor: %d\n", b);}}}} if (c <= a) { max = c; c = max; if (c <= b) { max = c; c = max; if (c <= d) { max = c; c = max; if (c <= e) { max = c; c = max; System.out.printf(" O numero C é menor ou igual, Valor: %d\n", c);}}}} if (d <= a) { max = d; d = max; if (d <= b) { max = d; d = max; if (d <= c) { max = d; d = max; if (d <= e) { max = d; d = max; System.out.printf(" O numero D é menor ou igual, Valor: %d\n", d);}}}} if (e <= a) { max = e; e = max; if (e <= b) { max = e; e = max; if (e <= c) { max = e; e = max; if (e <= d) { max = e; e = max; System.out.printf(" O numero E é menor ou igual, Valor: %d\n", e);}}}} } }
GOSTEI 0
Camilo Lopes

Camilo Lopes

09/04/2009

tenta isso tbm, embora nao foi passado no capítulo: [i]Scanner ler = new Scanner(System.in); //N esquece de importar a biblioteca! int maior = Integer.MIN_VALUE; //MAIOR = -2147483648 (menor valor de Integer) int menor = Integer.MAX_VALUE; //MENOR = 2147483648 (maior valor de Integer) //Vamos aos valores... for(int i = 0 ; i < 5 ; i++){ // 5 define quantos números você vai ler int aux = ler.nextInt(); //Ler entrada do teclado pelo console if(aux < menor){ menor = aux; //Se o nº digitado for menor que 2147483648, ele passa a ser o menor valor. } if(aux > maior){ maior = aux; //Se o nº digitado for maior que -2147483648, ele passa a ser o maior valor. } }//fim do FOR //Imprime os resultados System.out.println("Maior: "+maior); System.out.println("Menor: "+menor);[/i] cara, nao sei se tem algum erro pq n testei o código, eu digitei ele direto aqui, qual quer coisa me avisa q eu arrumo! tu pode também jogar todos valores dentro de um array, ordená-lo e pegar os valores das extremidades vlw, espero ter ajudado...
GOSTEI 0
Camilo Lopes

Camilo Lopes

09/04/2009

Igrando... É isso aí... mas o intuito do teste no Livro Deitel era exatamente não usar (for, | , &&) ... e determinar qual era o maior e menor entre 5 números... Você teria outra forma não usando (for, | , &&) ... ? Abração! :!:
GOSTEI 0
Camilo Lopes

Camilo Lopes

09/04/2009

ah ok, pro exercício blz, mas acho q é interessante mostrar um algoritmo pra qd precisar pegar maior e menor valor de uma grande quantidade de números.. obs: é [b]L[/b]grando :P
GOSTEI 0
Camilo Lopes

Camilo Lopes

09/04/2009

[quote="lgrando3991"]ah pro exercícios fazer os IFs está ok, mas acho q é interessante saber como pegar maior e menor valor de uma grande quantidade de números... obs: é [b]L[/b]grando :P
Desculpa por errar seu nome!!!! :| Você está completamente certo... esse código q fiz é enorme!!! foi somente uma pegadinha do Livro.... Vlw... :!:
GOSTEI 0
Lucas Dallpizzol

Lucas Dallpizzol

09/04/2009

[quote="lgrando3991"]tenta isso tbm, embora nao foi passado no capítulo: [i]Scanner ler = new Scanner(System.in); //N esquece de importar a biblioteca! int maior = Integer.MIN_VALUE; //MAIOR = -2147483648 (menor valor de Integer) int menor = Integer.MAX_VALUE; //MENOR = 2147483648 (maior valor de Integer) //Vamos aos valores... for(int i = 0 ; i < 5 ; i++){ // 5 define quantos números você vai ler int aux = ler.nextInt(); //Ler entrada do teclado pelo console if(aux < menor){ menor = aux; //Se o nº digitado for menor que 2147483648, ele passa a ser o menor valor. } if(aux > maior){ maior = aux; //Se o nº digitado for maior que -2147483648, ele passa a ser o maior valor. } }//fim do FOR //Imprime os resultados System.out.println("Maior: "+maior); System.out.println("Menor: "+menor);[/i] cara, nao sei se tem algum erro pq n testei o código, eu digitei ele direto aqui, qual quer coisa me avisa q eu arrumo! tu pode também jogar todos valores dentro de um array, ordená-lo e pegar os valores das extremidades vlw, espero ter ajudado...
Seu código tá beleza!!! Valeu pela ajuda... irei dar uma memorizada nisso aqui... :evil:
GOSTEI 0
Camilo Lopes

Camilo Lopes

09/04/2009

nd mw, ninguem acerta o L ahuahauha pode cre mw, esse código ae eu precisei pra uns exercicios no inicio do semestre... é mais facil esse de entender e de codificar :P
GOSTEI 0
Camilo Lopes

Camilo Lopes

09/04/2009

Eu faria assim.
package maiormenor;
import java.util.Scanner;
public class MaiorMenor {
    public static void main(String[] args) {
        
        Scanner input = new Scanner (System.in);  
  
        int numero, menor, maior;  
        System.out.print ("Digite um numero: ");  
        numero = input.nextInt();
        menor = numero;
        maior = numero;
        
        System.out.print ("Digite um numero: ");  
        numero = input.nextInt();
        
        if(numero>maior){
            
            maior = numero;
        }
        if(numero<menor){
            menor = numero;
        }
        
        System.out.print ("Digite um numero: ");  
        numero = input.nextInt();
        
        if(numero>maior) {
            
            maior = numero;
        }
        if(numero<menor) {
            menor = numero;
        }
        
        System.out.print ("Digite um numero: ");  
        numero = input.nextInt();
        
        if(numero>maior){
            
            maior = numero;
        }
        if(numero<menor){
            menor = numero;
        }
        
        System.out.print ("Digite um numero: ");  
        numero = input.nextInt();
        
        if(numero>maior){
            
            maior = numero;
        }
        if(numero<menor){
            menor = numero;
        }
        
        System.out.println("Maior " + maior);
        System.out.println("Menor " + menor);
    }
}
GOSTEI 0
Cássio Alexandre

Cássio Alexandre

09/04/2009

[quote="pcassiano"]PessoALL, obrigado pelas dicas. Na verdade, cometi o lapso de trocar [b]&&[/b] por [b]|[/b]
Vale ressaltar que numa expressão booleana existe diferença entre usar [b]&&[/b] ou [b]&[/b]. O mesmo se aplica para [b]||[/b] ou [b]|[/b]. Veja o exemplo abaixo:
public class AndOr {

	public static void main(String[] args) {

		System.out.println("exemplo com true && true");
		if (trueValue() && trueValue()) {}
		System.out.println();
		System.out.println("exemplo com true && false");
		if (trueValue() && falseValue()) {}
		System.out.println();
		System.out.println("exemplo com false && true");
		if (falseValue() && trueValue()) {}
		System.out.println();
		System.out.println("exemplo com false && false");
		if (falseValue() && falseValue()) {}
		System.out.println();
		System.out.println();

		System.out.println("exemplo com true & true");
		if (trueValue() & trueValue()) {}
		System.out.println();
		System.out.println("exemplo com true & false");
		if (trueValue() & falseValue()) {}
		System.out.println();
		System.out.println("exemplo com false & true");
		if (falseValue() & trueValue()) {}
		System.out.println();
		System.out.println("exemplo com false & false");
		if (falseValue() & falseValue()) {}
		System.out.println();
		System.out.println();

		System.out.println("exemplo com true || true");
		if (trueValue() || trueValue()) {}
		System.out.println();
		System.out.println("exemplo com true || false");
		if (trueValue() || falseValue()) {}
		System.out.println();
		System.out.println("exemplo com false || true");
		if (falseValue() || trueValue()) {}
		System.out.println();
		System.out.println("exemplo com false || false");
		if (falseValue() || falseValue()) {}
		System.out.println();
		System.out.println();

		System.out.println("exemplo com true | true");
		if (trueValue() | trueValue()) {}
		System.out.println();
		System.out.println("exemplo com true | false");
		if (trueValue() | falseValue()) {}
		System.out.println();
		System.out.println("exemplo com false | true");
		if (falseValue() | trueValue()) {}
		System.out.println();
		System.out.println("exemplo com false | false");
		if (falseValue() | falseValue()) {}
	}

	private static boolean trueValue() {
		System.out.print(" t ");
		return true;
	}

	private static boolean falseValue() {
		System.out.print(" f ");
		return false;
	}
}
Se executar este programa, a saída será:
exemplo com true && true
 t t
exemplo com true && false
 t f
exemplo com false && true
 f
exemplo com false && false
 f

exemplo com true & true
 t t
exemplo com true & false
 t f
exemplo com false & true
 f t
exemplo com false & false
 f f

exemplo com true || true
 t
exemplo com true || false
 t
exemplo com false || true
 f t
exemplo com false || false
 f f

exemplo com true | true
 t t
exemplo com true | false
 t f
exemplo com false | true
 f t
exemplo com false | false
 f f
Concluindo: Os operadores [b]&[/b] e [b]|[/b] avaliam todos elementos da expressão. O operador [b]&&[/b] interrompe a avaliação do resto da expressão assim que encontra o primeiro [b]false[/b]. O operador [b]||[/b] interrompe a avaliação do resto da expressão assim que encontra o primeiro [b]true[/b].
GOSTEI 0
Camilo Lopes

Camilo Lopes

09/04/2009

Desculpe se está em inglês, e que estou treinando ele junto ao estudo em java! Como pedido pelo exercício do livro do Deitel, para usar somente o que se havia trabalhado no livro ai vai minha contribuição! abaixo do codigo esta a explicação dele. //Larger and smaller integer import java.util.Scanner; //Program uses class Scanner public class LargerSmaller { //Main method begins execution of Java application public static void main( String[] args ) { //Creates a scanner for input from the command window Scanner input = new Scanner( System.in ); int number1; int number2; int number3; int number4; int number5; int larger; int smaller; System.out.print( "Enter first integer: " ); //prompt number1 = input.nextInt(); //Read the first number provided by the user System.out.print( "Enter second integer: " ); //prompt number2 = input.nextInt(); //Read the second number provided by the user System.out.print( "Enter second integer: " ); //prompt number3 = input.nextInt(); //Read the third number provided by the user System.out.print( "Enter second integer: " ); //prompt number4 = input.nextInt(); //Read the forth number provided by the user System.out.print( "Enter second integer: " ); //prompt number5 = input.nextInt(); //Read the fifth number provided by the user larger = -1000000; smaller = 1000000; //Terms if ( number1 > larger){ larger = number1; } if ( number1 < smaller ){ smaller = number1; } if ( number2 > larger ){ larger = number2; } if ( number2 < smaller ){ smaller = number2; } if ( number3 > larger ){ larger = number3; } if ( number3 < smaller ){ smaller = number3; } if ( number4 > larger ){ larger = number4; } if ( number4 < smaller ){ smaller = number4; } if ( number5 > larger ){ larger = number5; } if ( number5 < smaller ){ smaller = number5; } System.out.printf( "Is larger: %d\n ", larger ); System.out.printf( "Is smaller:%d\n ", smaller ); }// End of the mains method }// End of the class LargerSmaller Declare as cinco variáveis e depois mais duas, sendo as duas a variável maior(larger) e a variavel menor(smaller). Depois de programar a parte onde você inputa os dados vc deve igualar as variaveis larger e smaller à alguma magnitude a qual vc possa compara-las com as outras cinco variaveis, no meu caso igualeias à -1000000 e 1000000 respectivamente. Depois vem as condições, onde a logica é simples! supomos que as variaveis inputadas sejam 3, 5, 10, 7, 2 respectivamente. Se ( o primeiro numero(number1= 3 ) for > que o maior(larger= -1000000){ entao larger = number1, logo, a variavel larger que era -1000000 vai passar a ser 3 } Se ( o primeiro numero(number1= 3 ) for < que o menor(smaller= 1000000){ entao smaller = number1, logo, a variavel smaller que era 1000000 vai passar a ser 3 } Se ( o segundo numero(number2= 5 ) for > que o maior(larger= 3){ entao larger = number2, logo, a variavel larger que era 3 vai passar a ser 5 } Se ( o segundo numero(number2= 5 ) for < que o menor(smaller= 3){ entao smaller = number2, logo, como essa condição nao acontece, a variavel smaller continua a ser 3 } Se ( o terceiro numero(number3= 10 ) for > que o maior(larger= 5){ entao larger = number3, logo, a variavel larger que era 5 vai passar a ser 10 } Se ( o terceiro numero(number3= 10 ) for < que o menor(smaller= 3){ entao smaller = number3, logo, como essa condição nao acontece, a variavel smaller continua a ser 3 } Se ( o quarto numero(number4= 7 ) for > que o maior(larger= 10){ entao larger = number4, logo, como essa condição nao acontece, a variavel larger continua a ser 10 } Se ( o quarto numero(number4= 7 ) for < que o menor(smaller= 3){ entao smaller = number4, logo, como essa condição nao acontece, a variavel smaller continua a ser 3 } Se ( o quinto numero(number5= 2 ) for > que o maior(larger= 10){ entao larger = number5, logo, como essa condição nao acontece, a variavel larger continua a ser 10 } Se ( o quinto numero(number5= 2 ) for < que o menor(smaller= 3){ entao smaller = number5, logo, a variavel smaller que era 3 vai passar a ser 2 } Por fim mostremos as variaveis maior(larger) e a menor (smaller) que será 10 e 2 respectivamente.
GOSTEI 0
Camilo Lopes

Camilo Lopes

09/04/2009

Tinha feito este código abaixo, depois que atentei que era pra usar apenas o conhecimento do capitulo 2, Deitel, Exercicio 2.24. /** * 2.24 - Deitel - 8ª edição * Autor: Leo * Programa exibe recebe 5 inteiros, e exibe o maior e o menor. * Criado 10:33h - Modificado: */ import java.util.Scanner; public class ExerMaioreMenordeCinco { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int num, maior, menor; num = 0; maior = 0; menor = 1; for(int x=1; x<=5 ; x++) { System.out.printf("Digite o %d numero: ", x); num = entrada.nextInt(); if(num > maior) { maior = num; } if(num <= menor) { menor = num; } } System.out.printf("O maior é %d e o menor %d", maior, menor); } } Dai, criei também um código que atendeu os requisitos, QUE SÃO USAR COMPARAÇÃO E NÃO USAR ESTRUTURAS DE REPETIÇÃO. /** * 2.24 - Deitel - 8ª edição * Autor: Leo * Programa exibe recebe 5 inteiros, e exibe o maior e o menor. * Criado 10:33h - Modificado: 17:34 */ import java.util.Scanner; public class ExerMaioreMenordeCincoIf { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int a, b, c, d, e, maior = 0, menor = 0; System.out.print("Digite um numero: "); a = entrada.nextInt(); System.out.print("Digite um numero: "); b = entrada.nextInt(); System.out.print("Digite um numero: "); c = entrada.nextInt(); System.out.print("Digite um numero: "); d = entrada.nextInt(); System.out.print("Digite um numero: "); e = entrada.nextInt(); // VALIDANDO MAIOR VALOR if(a >= b && a >= c && a >= d && a >=e) maior = a; if(b >= a && b >= c && b >= d && b >= e) maior = b; if(c >= a && c >= b && c >= d && c >= e) maior = c; if(d >= a && d >= b && d >= c && d >= e) maior = d; if(e >= a && e >= b && e >= c && e >= d) maior = e; // VALIDANDO O MENOR VALOR if(a <= b && a <= c && a <= d && a <=e) menor = a; if(b <= a && b <= c && b <= d && b <= e) menor = b; if(c <= a && c <= b && c <= d && c <= e) menor = c; if(d <= a && d <= b && d <= c && d <= e) menor = d; if(e <= a && e <= b && e <= c && e <= d) menor = e; System.out.printf("O maior é %d e o menor %d", maior, menor); } }
GOSTEI 0
POSTAR