Desenvolva um programa que realize n (entrada) sorteios de um número inteiro pertencente ao intervalo de 1 a 100. Seu programa deve ler o valor (valor) a ser sorteado, e em seguida realizar n sorteios. Ele deve apresentar a média entre o maior e o menor número sorteado. O caso especial deve ser tratado através de mensagem de erro (valor inserido de valor ser negativo). (3)

Passo 1

Aqui está o que o enunciado pede e quais dados ele fornece (vou listar ponto a ponto para ficar claro):
  • O programa deve realizar n sorteios, onde n é uma entrada do usuário.
  • Cada sorteio gera um número inteiro no intervalo de 1 a 100 (inclusivo).
  • O programa deve ler o valor inteiro que indica quantos sorteios serão feitos — isto é, ler n.
  • Depois de realizar os n sorteios, o programa deve apresentar a média aritmética entre o maior e o menor número sorteado.
  • Há um caso especial: se o valor inserido (isto é, n) for negativo, deve ser mostrada uma mensagem de erro.
  • Não há mais especificações sobre formato de saída, então uma saída clara em texto é suficiente (por exemplo, imprimir a média).
Observação importante: se n=0 não há nenhum sorteio para obter maior e menor; isso gera ambiguidade prática (não dá para calcular máximo/minimo). O enunciado só exige tratar o caso negativo explicitamente, mas na prática é melhor tratar também n=0 para evitar erro de execução. Vou explicar e implementar esse tratamento extra.

Passo 2

Escolhendo a abordagem e os conceitos básicos (sem usar jargão complicado):
  • Como precisamos de números aleatórios no intervalo 1 a 100, vamos usar a função que gera inteiros uniformes nesse intervalo, por exemplo em Python: \texttt{random.randint(1,100)}. Isso devolve um inteiro x tal que 1 \le x \le 100.
  • Precisamos acompanhar o menor e o maior número sorteado enquanto os sorteios acontecem. Em vez de guardar todos os números, é eficiente atualizar apenas duas variáveis: \text{min} e \text{max}. A cada sorteio x:
    • se x < \text{min} então atualizar \text{min} \leftarrow x;
    • se x > \text{max} então atualizar \text{max} \leftarrow x.
  • Para iniciar \text{min} e \text{max} podemos:
    • fazer o primeiro sorteio e atribuir esse valor tanto a \text{min} quanto a \text{max}, e só depois repetir os n-1 sorteios;
    • ou iniciar \text{min} com um valor muito alto (por exemplo +\infty) e \text{max} com um valor muito baixo (por exemplo -\infty) e comparar sempre. A primeira alternativa (usar o primeiro sorteio para inicializar) evita pensar em extremos e é simples.
  • Fórmula da média entre o maior e o menor: se \text{min} é o menor e \text{max} é o maior, a média pedida é
\text{média} = \frac{\text{min} + \text{max}}{2}.é
  • Validação de entrada: se n < 0 imprimir uma mensagem de erro conforme pedido. Também vou tratar n=0 imprimindo uma mensagem que indique que nenhum sorteio foi realizado (para evitar divisão/uso de min/max inexistentes).

Passo 3

Pseudocódigo passo a passo (para fixar a lógica antes do código real):
  1. Ler n (converter para inteiro).
  2. Se n < 0 então:
    • imprimir a mensagem de erro (por exemplo: “Erro: valor negativo”) e terminar.
  3. Se n = 0 então:
    • imprimir uma mensagem como “Erro: nenhum sorteio realizado” e terminar (tratamento prático).
  4. Fazer o primeiro sorteio x com valor aleatório em 1\ldots100.
  5. Atribuir \text{min} \leftarrow x e \text{max} \leftarrow x.
  6. Para i de 2 até n (ou seja, repetir mais n-1 vezes):
    • sortear x = inteiro aleatório em 1\ldots100;
    • se x < \text{min} então \text{min} \leftarrow x;
    • se x > \text{max} então \text{max} \leftarrow x.
  7. Calcular a média \text{média} = \dfrac{\text{min} + \text{max}}{2}é.
  8. Imprimir \text{média}é (em formato numérico, por exemplo com ponto decimal se necessário).
Explicação do porquê isso funciona:
  • Ao inicializar \text{min} e \text{max} com o primeiro sorteio, garante-se que existem valores válidos para comparar com os sorteios seguintes. As atualizações garantem que, ao final, \text{min} será o menor de todos os n sorteios e \text{max} será o maior.
  • A média entre dois números é simplesmente a soma dividida por 2, o que resulta em um número real se a soma for ímpar (por exemplo (3+4)/2 = 3,5).

Passo 4

Vou exemplificar com um exemplo numérico pequeno para ficar claro:
  • Suponha n=4. Os quatro sorteios deram (por exemplo): 10, 87, 42, 3.
  • Primeiro sorteio =10 então \text{min}=10, \text{max}=10.
  • Segundo sorteio =87: 87> \text{max} então \text{max}=87.
  • Terceiro sorteio =42: 42 não altera \text{min} nem \text{max}.
  • Quarto sorteio =3: 3<\text{min} então \text{min}=3.
  • No final temos \text{min}=3 e \text{max}=87. A média pedida é
\text{média} = \frac{3 + 87}{2} = \frac{90}{2} = 45.é
  • Resultado a imprimir: 45.

Passo 5

Detalhes de implementação e boas práticas (para você aplicar na prova/entregar):
  • Em Python usar \texttt{import random} e \texttt{random.randint(1,100)}.
  • Ler entrada sem prompt (para ser compatível com corretores automáticos) usando \texttt{int(input().strip())}.
  • Tratar exceções de conversão pode ser opcional, mas para uma versão de prova basta assumir que a entrada será um inteiro.
  • Para saída, é suficiente imprimir a média com \texttt{print(média)}é. Se quiser formatar com 1 ou 2 casas decimais, usar \texttt{format} ou \texttt{f-strings}, mas não é obrigatório.

Resposta

import random
import sys

# Ler número de sorteios (n)
try:
    n = int(input().strip())
except Exception:
    print("Erro: entrada inválida")
    sys.exit()

# Caso especial: valor negativo
if n < 0:
    print("Erro: valor negativo")
    sys.exit()

# Tratamento prático para n == 0 (nenhum sorteio possível)
if n == 0:
    print("Erro: nenhum sorteio realizado")
    sys.exit()

# Primeiro sorteio para inicializar min e max
x = random.randint(1, 100)
min_val = x
max_val = x

# Realizar os restantes n-1 sorteios
for _ in range(n - 1):
    x = random.randint(1, 100)
    if x < min_val:
        min_val = x
    if x > max_val:
        max_val = x

# Calcular e imprimir a média entre o menor e o maior sorteado
media = (min_val + max_val) / 2
print(media)

Exercícios relacionados