Ir ao conteúdo
  • Cadastre-se

Visualg - identificação de maiores, menores e média do restante.


Posts recomendados

Boa tarde, estou com uma dúvida terrível e espero que vocês possam me ajudar.

 

1 - Eu preciso construir um algoritmo que leia 10 números e identifique e imprima os 2 maiores e os 2 menores.

2 - E depois em um outro arquivo para ficar mais fácil, descartar esses 2 maiores e os 2 menores e calcular a média dos números restantes.

 

Eu consegui fazer com que imprima os 2 maiores números, só que estou agarrado na hora de imprimir os dois menores, dentro desse mesmo código. E aproveitar para pedir uma ajuda lógica de como fazer esse segundo na hora de descartar os dois. Obrigado!!

var
Num, cont : inteiro
Maior1, Maior2, Menor1, Menor2 : real

inicio

cont <- 0

repita
cont <- cont + 1
escreva("Digite um número: ")
leia(Num)
   se ((Num > Maior1) e (Num > Maior2)) então
      Maior2 <- Maior1
      Maior1 <- Num
   senao
        se ((Num = Maior1) e (Num > Maior2)) então
           Maior2 <- Num
        senao
             se ((Num > Maior2) e (Num < Maior1)) então
                 Maior2 <- Num
             fimse
        fimse
   fimse
ate (cont = 10)

escreva("")
escreval("O maior número digitado foi: ", Maior1)
escreval("O segundo maior número digitado foi: ", Maior2)
//escreval("O menor número digitado foi: ", Menor1)
//escreval("O segundo menor número digitado foi: ", Menor2)
fimalgoritmo

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Wallysson Santos    se você fizer com vetores fica mais fácil.
coloque esse vetor lá nas variáveis

numero :vetor [1..10] de inteiro

e dentro do repita depois do leia coloque

numero[cont]:=num

e depois do ate (cont=10) na linha de baixo coloque

para a de 1 ate 10 faca
  para b de a+1 ate 10 faca
    c:=numero[b]
    se c < numero[a] então
      numero[b]:=numero[a]
      numero[a]:=c
    fimse
  fimpara
  escreval(a,"  numero --> ",numero[a])
fimpara

no vetor numero estará os números digitados em ordem crescente

então podes imprimir o maior numero assim

escreval("O maior número digitado foi: ",numero[10])// Maior1)

o menor numero estará na primeira posição do vetor numero.

e a média é a soma de  numero[3] até numero[8] dividido por 6

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@devair1010, muito obrigado, eu consegui fazer do jeito que você disse, realmente, por vetores é mais fácil. 

Se não for incomodar, para que eu possa entender melhor o funcionamento deste código, você pode me explica esta parte.

A colocação das variáveis "para b de a+1 ate 10 faca" ... essas coisas, de maneira resumida, por favor? Obrigado!

 

para a de 1 ate 10 faca 
	para b de a+1 ate 10 faca 

	c:=numero[b] 

	se (c < numero[a]) então 
	numero[b]:=numero[a] 
	numero[a]:=c 
	fimse 
                  
	fimpara 

escreval(a," numero --> ",numero[a]) 
        
fimpara 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Wallysson Santos   basicamente esses loop vai pegar cada numero e testar se ele é menor que o outro numero; o A aponta para o primeiro numero e B aponta para o segundo numero, depois o terceiro e assim até o décimo, e ele vai comparando o primeiro numero com todos eles a partir do segundo, e se for menor ele troca eles de posição, colocando o menor antes do maior.  Depois o A passa a apontar para o segundo numero e B aponta para o terceiro, fazendo as mesmas comparações, e indo assim até A apontar para o nono numero já que B só vai até dez, então quando A for dez o B não será executado, mas isso não dá nenhum erro e passa sem problema.

aqui está o desenho do vetor numero

vetor.jpg

em cada posição desse vetor ficará um dos números digitados
por exemplo

vetor2.jpg

assim os números estão todos desorganizados então esses dois loops vão colocar os números organizados de acordo com cada posição.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...