Gostaria de saber se é possível fazer o seguinte exercício [...] no VisuAlg

9 respostas
Z

Olá, :D
Meu professor do curso de Técnico em Informática na Etec Lauro Gomes (caso alguém conheça) em São Bernardo, pediu para nós resolver-mos o seguinte exercício:

Construir um algoritmo para ordenar uma lista com 5 nomes em ordem crescente.
,
Gostaria de saber se é possível fazer este exercício no VisuAlg, que é um editor e interpretador de pseudocódigos. :?:

Então galera para contribuir com o fórum coloquei aqui o algoritmo que fiz para resolver esse problema: :thumbup:

algoritmo "Ordenar5Nomes"

var word1, word2, word3, word4, word5, p1word, p2word, p3word, p4word, p5word : caractere
    cont : inteiro
inicio
      // cabeçário
      escreval("            ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")
      escreval("            || Programa para ordenar 5 palavras em ordem alfabética ||")
      escreval("            ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")

      escreval("__________________________________________________________________________________")
      escreval("")

      // solicitação da palavras ao usuário
      escreva("Entre com a primeira palavra: ")
      leia(word1)
      escreva("Entre com a segunda palavra: ")
      leia(word2)
      escreva("Entre com a terceira palavra: ")
      leia(word3)
      escreva("Entre com a quarta palavra: ")
      leia(word4)
      escreva("Entre com a quinta palavra: ")
      leia(word5)

      escreval("__________________________________________________________________________________")
      escreval("")
      
      se(word1 = word2) ou (word1 = word3) ou (word1 = word4) ou (word1 = word5) ou (word2 = word3) ou (word2 = word4) ou (word2 = word5) ou (word3 = word4) ou (word3 = word5) ou (word4 = word5) entao
      escreval("Existem palavras iguais na sequência inserida, ")
      escreval("por favor verifique e tente novamente.")
      senao
      // descobrindo a posição da primeira palavra
      se(word1 < word2) entao
      cont <- cont + 1
      fimse
      
      se(word1 < word3) entao
      cont <- cont + 1
      fimse
      
      se(word1 < word4) entao
      cont <- cont + 1
      fimse
      
      se(word1 < word5) entao
      cont <- cont + 1
      fimse
      
      // atribuindo a palavra à variável de posição adequada
      se(cont = 4) entao
      p1word <- word1
      fimse

      se(cont = 3) entao
      p2word <- word1
      fimse

      se(cont = 2) entao
      p3word <- word1
      fimse
      
      se(cont = 1) entao
      p4word <- word1
      fimse
      
      se(cont = 0) entao
      p5word <- word1
      fimse

      cont <- 0 // reiniciando o contador
      
      // descobrindo a posição da segunda palavra
      se(word2 < word1) entao
      cont <- cont + 1
      fimse

      se(word2 < word3) entao
      cont <- cont + 1
      fimse

      se(word2 < word4) entao
      cont <- cont + 1
      fimse

      se(word2 < word5) entao
      cont <- cont + 1
      fimse

      // atribuindo a palavra à variável de posição adequada
      se(cont = 4) entao
      p1word <- word2
      fimse

      se(cont = 3) entao
      p2word <- word2
      fimse

      se(cont = 2) entao
      p3word <- word2
      fimse

      se(cont = 1) entao
      p4word <- word2
      fimse

      se(cont = 0) entao
      p5word <- word2
      fimse
      
      cont <- 0 // reiniciando o contador
      
      // descobrindo a posição da terceira palavra
      se(word3 < word1) entao
      cont <- cont + 1
      fimse

      se(word3 < word2) entao
      cont <- cont + 1
      fimse

      se(word3 < word4) entao
      cont <- cont + 1
      fimse

      se(word3 < word5) entao
      cont <- cont + 1
      fimse

      // atribuindo a palavra à variável de posição adequada
      se(cont = 4) entao
      p1word <- word3
      fimse

      se(cont = 3) entao
      p2word <- word3
      fimse

      se(cont = 2) entao
      p3word <- word3
      fimse

      se(cont = 1) entao
      p4word <- word3
      fimse

      se(cont = 0) entao
      p5word <- word3
      fimse
      
      cont <- 0 // reiniciando o contador

      // descobrindo a posição da quarta palavra
      se(word4 < word1) entao
      cont <- cont + 1
      fimse

      se(word4 < word2) entao
      cont <- cont + 1
      fimse

      se(word4 < word3) entao
      cont <- cont + 1
      fimse

      se(word4 < word5) entao
      cont <- cont + 1
      fimse

      // atribuindo a palavra à variável de posição adequada
      se(cont = 4) entao
      p1word <- word4
      fimse

      se(cont = 3) entao
      p2word <- word4
      fimse

      se(cont = 2) entao
      p3word <- word4
      fimse

      se(cont = 1) entao
      p4word <- word4
      fimse

      se(cont = 0) entao
      p5word <- word1
      fimse
      
      cont <- 0 // reiniciando o contador
      
      // descobrindo a posição da quinta palavra
      se(word5 < word1) entao
      cont <- cont + 1
      fimse

      se(word5 < word2) entao
      cont <- cont + 1
      fimse

      se(word5 < word3) entao
      cont <- cont + 1
      fimse

      se(word5 < word4) entao
      cont <- cont + 1
      fimse

      // atribuindo a palavra à variável de posição adequada
      se(cont = 4) entao
      p1word <- word5
      fimse

      se(cont = 3) entao
      p2word <- word5
      fimse

      se(cont = 2) entao
      p3word <- word5
      fimse

      se(cont = 1) entao
      p4word <- word5
      fimse

      se(cont <= 0) entao
      p5word <- word5
      fimse

      cont <- 0 // reiniciando o contador
      
      escreval("1ª palavra:", p1word)
      escreval("2ª palavra:", p2word)
      escreval("3ª palavra:", p3word)
      escreval("4ª palavra:", p4word)
      escreval("5ª palavra:", p5word)
      
      fimse
      
      escreval("__________________________________________________________________________________")
fimalgoritmo

9 Respostas

D

É.

Z

Valeu pela resposta. :thumbup:

D

Um adendo, resolver-mos não existe. É resolvermos mesmo, tudo junto.
Segundo, é possível, porém, o processo é meio complicado.
Acho o visualg meio chatinho para certas coisas.
Enfim, você precisa de um pouco de dedicação nele, até entender a lógica.

E

Para ordenar 5 números o processo é o mesmo que para ordenar 1000 ou um milhão de números.

Uma forma bem boboca de fazer isso é o seguinte: pense nos seguintes números em uma matriz do VisuAlg:

Posição 1 - 3
Posição 2 - 1
Posição 3 - 4
Posição 4 - 1
Posição 5 - 5

Só de você olhar, sabe que o resultado tem de ser 1, 1, 3, 4, 5. Mas como você chegaria a esse resultado?
Eu faria o seguinte (não é um método muito bonito, na verdade é bem ineficiente, mas é o que você faria no braço): a partir da primeira posição, ache no resto da matriz o menor número, e troque o valor dessa posição com o número que você achou. (É claro que você só troca se o número que você achou for menor que o número que você já tem.)
No exemplo de cima:
(3), 1, 4, 1, 5 - você tem de olhar os números 1, 4, 1, e 5. Você sabe que o menor número é 1, e a posição dele é 4 (ok, existe um menor número na posição 2, mas vou dizer depois por que é assim.
Então você troca de lugar os números 3 (que está na posição 1) e o 1 (que está na posição 4). Ficaria:
1, (1), 4, 3, 5
Agora você começa a olhar o número que está na segunda posição (que é 1) e achar o menor número que está a partir da terceira posição.
Como você deve ter percebido, o número que está na segunda posição é 1, e o menor número (a partir da terceira posição) é 3, então você não deve trocar os números de lugar.
Agora vamos examinar o número que está na terceira posição (que é 4) e examinar o menor número a partir da quarta posição.
O menor número é 3, então podemos trocar os números de lugar. Vai ficar:
1, 1, (3), 4, 5
Agora vamos examinar o número que está na quarta posição (que é 4) e examinar o menor número a partir da quinta posição.
O menor número é 5, então não se deve trocar os números. Vai ficar:
1, 1, 3, (4), 5.

Pronto! Agora só falta você descobrir como achar o menor número a partir de uma determinada posição e achar sua posição. Acho que você tem cabeça suficiente para entender como fazer.

E

Ha ha ha, você deu a resposta lógica que eu gostaria de dar

Z

Galera consegui fazer vou colocar o algoritmo aqui daqui a pouco.

Z

Acho melhor não pois depois algum espertinho na minha sala pega a resposta aqui e ganha crédito também :wink:

D

Acho melhor não pois depois algum espertinho na minha sala pega a resposta aqui e ganha crédito também :wink:
Não é preciso colocar o algoritmo aqui.
Coloque apenas uma descrição.
A implementação é algo inerente a cada um, agora, não seja egoísta.
O fórum tem como objetivo o compartilhamento de informações, não a cópia do esforço de alguns.
Compartilhe uma idéia geral do que foi feito, já basta.

H

Acho melhor não pois depois algum espertinho na minha sala pega a resposta aqui e ganha crédito também :wink: E você é o espertinho que queria a lógica de alguém aqui…

Criado 2 de agosto de 2012
Ultima resposta 2 de ago. de 2012
Respostas 9
Participantes 4