Faça um programa que pergunte ao usuário a quantidade de números ( N ) que ele deseja digitar. Em seguida, o usuário deverá digitar esses N números, que podem ou não ter casas decimais. Finalmente, seu programa deverá imprimir na tela o maior e o menor valor dentre os números digitados. Obs: Utilize no máximo cinco variáveis para resolver esse exercício e não utilize array/vetor.
Passo 1
O enunciado pede que eu escreva um programa que:
- Pergunte ao usuário a quantidade de números
que ele deseja digitar. - Leia esses
números (podem ter casas decimais). - Imprima na tela o maior e o menor valor dentre os números digitados.
Informações relevantes fornecidas:
- Os números podem ser reais (com casas decimais).
- Deve ser usada no máximo cinco variáveis e não é permitido usar array/vetor.
- Presume-se que a questão está bem formulada (ou seja, faz sentido pedir
números). Porém, podemos considerar casos limites como ou e tratá-los.
As perguntas que o programa precisa responder ao final:
- Qual é o maior valor digitado?
- Qual é o menor valor digitado?
Passo 2
Escolha do método (resumo do raciocínio): vamos fazer uma varredura única (uma única passagem) sobre os
números. Esse é o método mais simples e eficiente: enquanto lemos cada número, comparamos com o maior e o menor atuais e atualizamos quando necessário. Isso usa tempo linear
e espaço constante
(nenhum vetor).
Como vamos respeitar a restrição de no máximo cinco variáveis? Vamos usar exatamente cinco variáveis:
-
— quantidade de números a ler. -
— contador de iteração (laço). -
— número lido atualmente. -
— maior valor encontrado até agora. -
— menor valor encontrado até agora.
Nenhuma outra variável é necessária. Não usamos arrays.
Passo 3
Como inicializar
e
sem usar valores sentinela (como infinito) ou variáveis extras? Estratégia padrão e simples: ler o primeiro número fora do laço e atribuí-lo tanto a
quanto a
. A partir do segundo número em diante fazemos as comparações. Isso evita sentinelas e mantém as cinco variáveis.
Detalhes práticos de leitura:
- Primeiro lemos
(inteiro). Se podemos exibir uma mensagem de erro e terminar, ou pedir novamente; aqui vamos tratar imprimindo uma mensagem e saindo porque não há números para determinar maior/menor. - Depois lemos o primeiro número e inicializamos
. - Para os
números restantes fazemos um laço que, a cada iteração: - lê
, - se
então , - se
então .
- lê
Passo 4
Explicando passo a passo a lógica das comparações (a “aula” curta):
- Comparar números: quando escrevemos
estamos perguntando “o novo número é maior que o maior conhecido até agora?”. Se sim, o novo número passa a ser o maior. - Analogamente,
pergunta se o novo número é menor que o menor conhecido. - Por que isso garante que ao final
e sejam corretos? Porque toda vez que aparece um número maior que todos os anteriores atualizamos ; se não aparecer, o maior permanece aquele que realmente era o máximo. Mesmo raciocínio para o mínimo. - Exemplo rápido: se
e os números forem , e . Leio primeiro → , . Leio : então . Leio : então . Resultado: maior , menor , correto.
Passo 5
Tratamento de casos especiais:
- Se
: o único número será simultaneamente maior e menor. O programa deve imprimir o mesmo número nas duas saídas. - Se o usuário digitar valores negativos ou com casa decimal, usamos conversão para ponto flutuante (por exemplo, em Python usamos float()) para manter precisão de números reais.
- Se
: o programa não consegue determinar maior/menor; vamos detectar isso logo após a leitura de e informar ao usuário.
Passo 6
Implementação concreta (explicada para poder copiar na prova). A seguir está um código em Python que usa exatamente as cinco variáveis mencionadas e não usa arrays. Comentários rápidos dentro do código explicam cada linha; na prova, você pode escrever pseudocódigo equivalente se preferir outra linguagem.
Passo 7
Código (implementação final). Copie/execute este código; ele pede entradas do usuário e ao final imprime o maior e o menor valor:
N = int(input("Quantos números você vai digitar? "))
if N <= 0:
print("Quantidade inválida. Deve ser um inteiro positivo.")
else:
x = float(input("Digite o número 1: "))
maior = x
menor = x
i = 2
while i <= N:
x = float(input(f"Digite o número {i}: "))
if x > maior:
maior = x
if x < menor:
menor = x
i += 1
print("Maior:", maior)
print("Menor:", menor)
Resposta
N = int(input("Quantos números você vai digitar? "))
if N <= 0:
print("Quantidade inválida. Deve ser um inteiro positivo.")
else:
x = float(input("Digite o número 1: "))
maior = x
menor = x
i = 2
while i <= N:
x = float(input(f"Digite o número {i}: "))
if x > maior:
maior = x
if x < menor:
menor = x
i += 1
print("Maior:", maior)
print("Menor:", menor)