Determinar em cinco digitos qual é o maior e o menor

Olá!
Estou estudando o livro do Java como programar, e deparei com o seguinte exercicio:

“Escreva um aplicativo que lê cinco inteiros, determina e imprime o maior e o menor inteiro no grupo. Utilize somente as técnicas de programação que você aprendeu neste capítulo.”

Bom, o exercicio pede que use as técnicas básicas para fazer o exercicio, então a minha lógica é a seguinte: Por exemplo, a = 5 e b = 6, logo seria: a > b, então, a é menor que b, porque o 5 é menor que 6. Agora tenho que determinar se o resultado de a e b, é maior ou menor que c. Sendo que o exercicio pede técnicas simples, nesse caso pensei: então, eu pego o resultado de a e b, e coloca na memória resultab, para fazer que resultab seja maior que c. Nesse caso como eu faria ?
OBS: Não quero resposta do problema, necessito de ajuda para resolve-lo.

Bom dia a todos!

[quote=hackum]Olá!
Estou estudando o livro do Java como programar, e deparei com o seguinte exercicio:

“Escreva um aplicativo que lê cinco inteiros, determina e imprime o maior e o menor inteiro no grupo. Utilize somente as técnicas de programação que você aprendeu neste capítulo.”

Bom, o exercicio pede que use as técnicas básicas para fazer o exercicio, então a minha lógica é a seguinte: Por exemplo, a = 5 e b = 6, logo seria: a > b, então, a é menor que b, porque o 5 é menor que 6. Agora tenho que determinar se o resultado de a e b, é maior ou menor que c. Sendo que o exercicio pede técnicas simples, nesse caso pensei: então, eu pego o resultado de a e b, e coloca na memória resultab, para fazer que resultab seja maior que c. Nesse caso como eu faria ?
OBS: Não quero resposta do problema, necessito de ajuda para resolve-lo.

Bom dia a todos![/quote]

Já vez algo !!!

abx !!!

Alguem está disposto a ajudar ?

Você deve usar 5 variáveis: a, b, c, d e e. (Lembre-se, não pode usar matrizes ou arrays).
A seguir, você vai ver as combinações entre essas variáveis, para poder determinar qual é a maior ou a menor. Provavelmente você vai ter algo bem emaranhado, cheio de níveis; não sei se você pode usar operadores lógicos como && .

Se puder usar &&, vou dar um exemplo com 3 variáveis:

if (a <= b && b <= c) --> a é o menor, c é o maior
if (b <= c && c =< a) --> b é o menor, a é o maior
if (c <= a && a <= b) --> c é o menor, b é o maior
if (a <= c && c <= b) --> a é o menor, b é o maior

e assim por diante. Você viu que este método “combinatório” é meio pesadinho - para 3 variáveis, você teria 3! = 6 permutações, e para 5 variáveis, você teria 5! = 120 permutações. Ou seja, não é o melhor jeito. Mas de propósito estou mostrando um jeito complicado, para você pensar um pouco e achar um jeito mais simples.

Outra forma, que é exatamente como você está pensando, e que é mais simples, envolve você ter 7 variáveis: a, b, c, d, e, max, e min.

Você inicia as variáveis max e min com o valor de a.
A seguir, você compara max com b, e vê se max é menor que b. Se for menor, então troque o seu valor por b (ou seja, max = b). E assim por diante, até chegar à variável e.
Para achar o mínimo, o processo é semelhante.

Também estou com a mesma dúvida, mas não podemos usar &&, so recursos com if, >,<… etc.

Tentei

if (x>y>z)
System.out.printf( " O maior e %d/n", x );

Repetindo o comando e mudando a ordem de x, y e z. Mas não deu certo!!!

Por onde devo começar?

Obrigado!

Olá.

Antes de tudo, evite ressucitar tópicos, crie o seu próprio tópico com sua dúvida.

Segundo, isso não funciona if (x>y>z) . Diferente da nossa linguagem, o computador é redundante, vc precisa escrever explicitamente sua condição usando os operadores lógicos &&, ||, == etc.

Terceiro, vc escreveu algum código? Se sim, posta ai.

E, por último, sua lógica deve ser algo assim: Leia um número, se ele for o primeiro número lido, coloque-o como maior, leia outro número, se ele for maior do que o maior número lido, atribua o maior sendo o número que acabou de ser lido, leia outro número, se ele for maior do que o maior número lido, atribua o maior sendo o número que acabou de ser lido, … e assim vai até acabar a quantidade de números que vc quer ler…

ok?

Ok, vou apenas responder.

O código que usei é mais ou menos assim:

Com 3 variáveis.

int x;
int y;
int z;
int maior1 = 0;
int maior2 = 0;

if(x>y)
maior1=x;

if(x<y)
maior1=y;

if(maior1>z)
maior2=maior1;

if(maior1<z)
maior2=z;

System.out.printf( "O maior e: %d/n ", maior2 )

Você está comparando valores nulos sem inicializa-los

public String calc(int... numero){
		int maior=0, menor=0;
		for(int i=0; i<numero.length; i++){
			if(numero[i]>maior){
				maior = numero[i];
			}
			if(numero[i]<menor){
				menor = numero[i];
			}
		}
		return "Maior: "+maior+" Menor: "+menor;
	}
public static void main(String[] args) {
	System.out.println(new Calculo().calc(9,-1,3,-2,7));
}

A saída gerada pelo código acima: Maior: 9 Menor: -2>

Não posso usar estes métodos.

Somente <, >, e outros operadores, assim como if.

Não posso usar calc.

Resolvi mesmo assim, o que postei funcionou.

Muito obrigado

Abraços!!!

Vou postar exatamente como funcionou, só que com 3 variáveis:

// Fig. 2.7: Maior.java

import java.util.Scanner; // program uses class Scanner

public class Maior
{
// main method begins execution of Java application
public static void main( String args[] )
{
// create Scanner to obtain input from command window
Scanner input = new Scanner( System.in );

  int x;
  int y;
  int z;
  int xy = 0;
  int xyz = 0;

  // Insere as variaveis

  System.out.print( "Insira o primeiro numero: " ); // prompt 
  x = input.nextInt();

  System.out.print( "Insira o segundo numero: " ); // prompt 
  y = input.nextInt();

  System.out.print( "Insira o terceiro numero: " ); // prompt 
  z = input.nextInt();

  // Compara o primeiro e o segundo numero e da o maior
  if(x>y)
      xy=x;

  if(x<y)
      xy=y;

  if(x==y)
      xy=x;

 // Acaba a primeira comparacao

  // Compara o terceiro e o maior dos anteriores

  if(xy>z)
      xyz=xy;
      
  if(xy<z)
      xyz=z;
      
  System.out.printf("O maior e %d", xyz);

  

 } // end method main

} // end class Maior

[quote=hackum][quote=hackum]Olá!
Estou estudando o livro do Java como programar, e deparei com o seguinte exercicio:

“Escreva um aplicativo que lê cinco inteiros, determina e imprime o maior e o menor inteiro no grupo. Utilize somente as técnicas de programação que você aprendeu neste capítulo.”

Bom, o exercicio pede que use as técnicas básicas para fazer o exercicio, então a minha lógica é a seguinte: Por exemplo, a = 5 e b = 6, logo seria: a > b, então, a é menor que b, porque o 5 é menor que 6. Agora tenho que determinar se o resultado de a e b, é maior ou menor que c. Sendo que o exercicio pede técnicas simples, nesse caso pensei: então, eu pego o resultado de a e b, e coloca na memória resultab, para fazer que resultab seja maior que c. Nesse caso como eu faria ?
OBS: Não quero resposta do problema, necessito de ajuda para resolve-lo.

Bom dia a todos![/quote][/quote]

Passei pelo mesmo ex a pouco.
(pelo que entendi só podemor utilizar o “if” para comparação e nada mais)

criei as variáveis normalmente sem inicializalas
inicializa-se maior como -100000000;

logo apos cada entrada(n1) do usuario… faz-se a comparação (if n1>maior) case for verdadeira – n1=maior; se nao segue para a proxima intrução e n1 permanece com o valor digitado
a isso se repete a cada entrada de dado…

no final basta mostrar o resultado;

espero ter ajudado

Olá, bom, também sou iniciante em Java e estou estudando no livro Deitel java como programar 8, então fiz esse exercício também, quebrei muito a cabeça por só poder usar a estrutura simples do if. Então vamos a ela.

OBS.: Se alguém tiver uma ideia melhor, por favor me mostre, será muito bem vinda.

Usei as variáveis max, max1 e max2, para não me confundir no decorrer do código. Esse é meu código:

import java.util.Scanner;
public class MaioresMenoresInteiros
{
public static void main(String[] args)
{
// Cria um Scanner para obter entrada na janela de comando
Scanner input = new Scanner(System.in);

    int a;
    int b;
    int c;
    int d;
    int e;
    int max;
    int max1;
    int max2;
    int min;
    
    System.out.print("Enter first integer: "); // prompt
    a = input.nextInt(); // lê o primeiro número fornecido pelo usuário
    
    System.out.print("Enter second integer: "); // prompt
    b = input.nextInt(); // lê o segundo número fornecido pelo usuário
    
    System.out.print("Enter third integer: "); // prompt
    c = input.nextInt(); // lê o terceiro número fornecido pelo usuário
    
    System.out.print("Enter fourth integer: "); // prompt
    d = input.nextInt(); // lê o quarto número fornecido pelo usuário
    
    System.out.print("Enter fifth integer: "); // prompt
    e = input.nextInt(); // lê o quinto número fornecido pelo usuário
    
    max = a;
    max1 = 0;
    max2 = 0;
    min = a;
    
    
    if (a > b)
        min = b;
    
    if (a < b)
        max = b;
    
    if (max < c)
        max1 = c;
    
    if (min > c)
        min = c;
    
    if (max1 < d)
        max2 = d;
   
    if (min > d)
        min = d;
    
    if (max2 < e)
        max2 = e;
    
    if (min > e)
        min = e;
    
    System.out.printf("The largest number is : %d\n", max2);
    System.out.printf("The less number is: %d", min);
}

}

Testei aqui e funcionou bem!!!

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.

1 curtida

Acredito que essa seja a forma mais simples, sem usar vetores.

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);

    int num1, num2, num3, num4, num5;
    int maior, menor;

    System.out.println("Digite 5 inteiros: ");
    num1 = input.nextInt();
    num2 = input.nextInt();
    num3 = input.nextInt();
    num4 = input.nextInt();
    num5 = input.nextInt();

    maior = num1;
    menor = num1;

    if(num1 > maior) {
        maior = num1;
    } else if(num1 < menor) {
        menor = num1;
    }
    if(num2 > maior) {
        maior = num2;
    } else if(num2 < menor){
        menor = num2;
    }
    if(num3 > maior) {
        maior = num3;
    } else if(num3 < menor) {
        menor = num3;
    }
    if(num4 > maior) {
        maior = num4;
    } else if(num4 < menor) {
        menor = num4;
    }
    if(num4 > maior) {
        maior = num4;
    } else if(num4 < menor) {
        menor = num4;
    }
    if(num5 > maior) {
        maior = num5;
    } else if(num5 < menor) {
        menor = num5;
    }

    System.out.printf("maior: %d%nmenor: %d%n", maior, menor);

}

}