Como seria um código para imprimir um valor entre 3 ou mais inteiros, que fosse o maior deles?
Acho que a saída seria criar uma variável auxiliar para guardar o maior número e fazer as comparações em uma repetição.
[code]public class Testes {
public static int Maior(int a, int b){
if(a>=b) return a;
else return b;
}
public static void main(String[] args) {
int[] valores = {0, 12, 5, -3, 10, 0};
int maior = valores[0];
for(int i = 0; i<valores.length; i++){
maior = Maior(maior, valores[i]);
}
System.out.println(maior);
}
}[/code]
Resultado: 12.
É só colocar o valor da variável “maior” como o primeiro valor e ir comparando com todos os valores, e se for maior, muda o valor dela.
O importante é visualizar como acontece o processo. Esse é um passo de um algoritmo de ordenação bem ineficiente chamado BubbleSort.
Na verdade, as variáveis seriam captadas pelo Scanner, numa sequencia aleatória. É um exercicio do segundo capítulo do livro: JAVA COMO PROGRAMAR.
O exercicio pede a soma, produto, média, maior e menor. Só não estou conseguindo fazer para exibir MAIOR e MENOR.
Aguardo !!!
- Leia uma variável;
- Guarde ela em outra como o maior valor;
- Leia outra variável;
- Compare se ela é maior que o maior valor já lido. Se for, atribua ela ao maior valor;
- Repita o passo 3 até ler todas as variáveis solicitadas pelo problema.
De forma análoga você faz para o menor valor.
[quote=ViniGodoy]1. Leia uma variável;
2. Guarde ela em outra como o maior valor;
3. Leia outra variável;
4. Compare se ela é maior que o maior valor já lido. Se for, atribua ela ao maior valor;
5. Repita o passo 3 até ler todas as variáveis solicitadas pelo problema.
De forma análoga você faz para o menor valor.[/quote]
Como implemento isso no código abaixo?
[code]
import java.util.Scanner;
public class SomaMediaMaiorMenor {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double num1;
double num2;
double num3;
double soma;
double media;
double produto;
boolean maior;
boolean menor;
System.out.println(" Digite o primeiro numero: ");
num1 = input.nextDouble();
System.out.println(" Digite o segundo numero: ");
num2 = input.nextDouble();
System.out.println(" Digite o terceiro numero: ");
num3 = input.nextDouble();
soma = num1 + num2 + num3;
media = (num1 + num2 + num3)/3;
produto = num1 * num2 * num3;
if (num1 > num2)
System.out.println(num1);
System.out.printf("%s\n%s\n%s\n",
"SOMA: " + soma, "MEDIA: " + media, "PRODUTO: " + produto);
}
}[/code]
Aí está o comecinho. O resto vc mesmo descobre.
[code]
import java.util.Scanner;
public class SomaMediaMaiorMenor {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println(" Digite o primeiro numero: ");
double num1 = Double.parseDouble(input.nextLine());
double maior = num1; //O maior até agora é o num1
System.out.println(" Digite o segundo numero: ");
double num2 = Double.parseDouble(input.nextLine());
if (num2 > maior) { //Verificamos se num2 maior do que o maior já lido
maior = num2; //Se for, então num2 passa a ser o maior já lido até agora.
}
System.out.println(" Digite o terceiro numero: ");
double num3 = Double.parseDouble(input.nextLine());
double soma = num1 + num2 + num3;
double media = soma /3;
double produto = num1 * num2 * num3;
System.out.printf("%s\n%s\n%s\n",
"SOMA: " + soma, "MEDIA: " + media, "PRODUTO: " + produto);
}
}[/code]
Incrível como a solução foi tão simples. Vou ter que me empenhar mais em lógica !!!