Foto de Andrielli B.
Andrielli há 4 anos
Enviada pelo
Site

Portugol

Está dando algum erro quando calcula o menor e o maior aí a média tá dando errado.

programa

 funcao inicio()
 {
  real n, menor=0, maior=0,  media
  caracter s

          escreva ("Digite 'S' para começar :")
  leia(s)

  faca{
   escreva("Número:")
   leia(n)

          
  se(n<=maior){
  maior = menor
  menor = n 
   }se(n>=menor){ 
   menor = maior
   maior = n
    
   }
   media = (maior + menor)/2
   escreva ("Deseja continuar? 'Y' se sim e 'N' se não:")
   leia (s)
  }enquanto(s== 'y' ou s=='Y')
  
  escreva("Número maior: ", maior," - ", "Número menor: ", menor)
  escreva("\n\nMédia entre o menor e o maior: ", media)
 }
}

2 respostas
Professora Jéssica O.
Respondeu há 4 anos
Contatar Jéssica

Boa tarde, Andrielli.

Achei sua dúvida muito interessante. Porém aqui tiramos as dúvidas mais especificas. Essa necessita mais tempo. Sugiro que você coloque na parte de tarefas, fica melhor para tirar todas as duvidas e exemplificar. Abraços!!!

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Tire dúvidas com IA
Resposta na hora da Minerva IA
Enviar dúvida
Professor Vitor S.
Respondeu há 4 anos
Contatar Vitor

Olá, tudo bem?

Essa dúvida é um pouco complicada de explicar por aqui porque existem diversos pontos no código que interferem no funcionamento.
Porém, o principal é a lógica para definir qual valor vai ser o menor e o maior.

Neste trecho, está misturada a lógica relacionada ao menor e ao maior valor:

se(n<=maior){
  maior = menor
  menor = n 
 }se(n>=menor){ 
   menor = maior
   maior = n  
   }

Minha sugestão é separar as regras de maior e menor:

Exemplo: se o valor digitado (n) for maior que o valor da variável maior, a variável maior recebe o valor digitado (n);

se(n > maior){
  maior = n
}

e se o valor digitado (n) for menor que o valor da variável menor, a variável menor recebe o valor digitado (n);

se(n < menor){
  menor = n
}

Colocando desta forma fica mais simples, porém ainda não vai funcionar como esperado porque a variável menor é iniciada com 0, então de acordo com a lógica que mandei, a variavel menor vai continuar como 0 até o usuário digitar um número negativo.
Para que isso não ocorra, você pode alterar o programa para que quando o usuário digitar o primeiro número, o valor digitado seja colocado tanto na variável menor, quanto na variável maior:

se(primeiroValorDigitado){
  maior = n
  menor = n
  primeiroValorDigitado = falso
}

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Prefere professores para aulas particulares ou resolução de atividades?
Aulas particulares
Encontre um professor para combinar e agendar aulas particulares Buscar professor
Tarefas
Envie sua atividade, anexe os arquivos e receba ofertas dos professores Enviar tarefa