Ola, estou inpacado em um exercício do livro do Deitel Java como programar 8° Ed.
[color=red]O exercício é o seguinte:[/color] (Localize o menor valor) Escreva um aplicativo que localize o menor de vários números inteiros. Assuma que o primeiro valor lido especifica o número de valores a serem inseridos pelo usuário.
Então eu devo escrever esse aplicativo utilizando somente if, if…else, switch / while, do…while, for / operadores relacionais, e operadores lógicos, só o que o livro ensinou ate agora.
Não passei um exercicio se quer sem resolver e os de desenho ate levaram dias, mais esse ai nem imagino como fazer.
Então… como escrevo esse aplicativo, pessoalmente acho que não é possivel sem saber a quantidade de numeros que vai ser inserida.
Dúvida de lógica
12 Respostas
o menor valor sera o numero de valores a inserir ?
Olá CoderMaster 
Você vai saber sim, segundo o enunciado:
Além de usar estas estruturas e operadores, você aprendeu tbm sobre vetores :?:
flw :thumbup:
na hora de procurar o menor…verifique o tamanho do vetor.
assuma que o primeiro valor é o menor e o compare com todos os outros se algum for menor que ele troque.
ainda não cheguei em Vetores… estou no cap.6 (120 paginas pra chegar nele) o livro do deitel repete muito as mesmas coisas e tenho medo de pular essas coisas e acabar pulando algo de novo junto, então sem vetores não é possivel resolver esse exercicio?
Você pode fazer assim. Você terá uma variável chamada “valor”. O segundo número inserido (já que o primeiro número indica a quantidade de valores à ser inserido) é atribuido à variável valor. Daí em diante, toda vez que um número foi inserido você compara com o valor da variável valor. Se ele for menor que valor, você atribui esse número na variável valor. No fim, você terá o menor número.
Para pegar o menor valor entre 2 numeros basta usar a classe Math
Math.min(valor1, valor2));
[color=red]O exercício é o seguinte:[/color] (Localize o menor valor) Escreva um aplicativo que localize o menor de vários números inteiros. Assuma que o primeiro valor lido especifica o número de valores a serem inseridos pelo usuário.
e se o usuario inserir primeiro numero 5, dai dps ele inserir 1,2,3,4
vai ser comparado 5 com 1 , 5 com 2 etc... sendo que cada valor comparado vai substuir o antecessor comparado na variavel em que tiver sendo armazenado.
então se o usuario inserir 1,2,3,4 o menor valor vai ser 4 pois foi o ultimo a ser comparado.
talves eu nao tenha entendido certo como deveria fazer, vc poderia escrever o codigo e me mostrar?
[color=red]
julianolandim[/color]: tenho que usar só o que o livro ensinou ate agora… caso não seja possivel resolver o problema assim, o exercicio está no cap. errado.
seria mais ou menos isso em um jogo rapido:
public class JavaApplication3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int max;
max = Integer.parseInt(JOptionPane.showInputDialog("digite o primeiro numero"));
int[] nums = new int[max];
nums[0] = max;
for (int i = 1; i < max; i++) {
nums[i] = Integer.parseInt(JOptionPane.showInputDialog("digite o proximo numero"));
}
int menor = max;;
for (int i = 0; i < (max); i++) {
if (nums[i] <= menor) {
menor = nums[i];
}
System.out.println(nums[i]);
}
JOptionPane.showMessageDialog(null, menor + " <--- menor");
}
}
da uma verificada e ve se entende bem o que acontece....
caso nao, eu te explico passo a passo
[]'s
package Capitulo5;
import java.util.Scanner;
public class teste {
public static void main(String[] args)
{
Scanner Input = new Scanner(System.in);
System.out.println("Digite um Número.");
int Length = Input.nextInt();
int N1 = 0,N2=9999;
int MenorNumero = Length;
for(int contador = 1;contador < Length ;contador++)
{
System.out.println("Digite um Número.");
N1 = Input.nextInt();
if(Length < N1)
{
MenorNumero = Length;
}
else if(N1 < N2)
{
MenorNumero = N1;
}
N2 = N1;
}
System.out.println("O menor numero é: " + MenorNumero);
}
}
pow como eu num pensei nisso kkkk, testar cada novo valor com o que inseri antes dele, mais aposto que se eu ficasse mais tempo eu sacava...
feito por adilsonpackage Capitulo5; import java.util.Scanner; public class teste { public static void main(String[] args) { Scanner Input = new Scanner(System.in); System.out.println("Digite um Número."); int Length = Input.nextInt(); int N1 = 0,N2=9999; int MenorNumero = Length; for(int contador = 1;contador < Length ;contador++) { System.out.println("Digite um Número."); N1 = Input.nextInt(); if(Length < N1) { MenorNumero = Length; } else if(N1 < N2) { MenorNumero = N1; } N2 = N1; } System.out.println("O menor numero é: " + MenorNumero); } }pow como eu num pensei nisso kkkk, testar cada novo valor com o que inseri antes dele, mais aposto que se eu ficasse mais tempo eu sacava...
foi quase igual o que fiz, diferença que ele pega o primeiro valor para definir o limite do laço, e dentro do laço que vai solicitando os numeros.
ja o que fiz é definido o tamanho do laço tambem e solicitado todos os numeros armazenando em um vetor e depois os compara para ver o menor.
o seu é um pouco mais eficiente pois gasta menos memoria com as variaveis
[]'s
CoderMaster,
Você conhece fluxograma? As vezes, quando tenho um problema de lógica na cabeça, pego uma folha e começo a desenhar o fluxo enquanto penso…
Só para não me perder depois. Acho que facilita bastante quando se tem que fazer algo com muitas etapas ou decisões.
Fica a dica!
Já foi resolvido este tópico até pelo tempo,
Então segue uma ajuda aí para quem precisar e acho que fiz este de acordo com o exercício do Deitel!
import java.util.Scanner;
public class LocalizadorMenorValor {
public static void main(String[] args) {
int total, num, numenor, menor, i;
Scanner input = new Scanner(System.in);
i = 1;
menor = 0;
System.out.println("Informe a quantidade de valores que deseja inserir:");
total = input.nextInt();
total = total - 1;
System.out.println("Informe um valor inteiro:");
num = input.nextInt();
menor = num;
while ( i <= total ) {
System.out.println("Informe um valor inteiro:");
numenor = input.nextInt();
if ( menor > numenor ) {
menor = numenor;
}
i++;
}
System.out.println("O menor número informado foi: " + menor);
}
}