Ajuda para revisar um algoritmo sobre ordenação de strings, no VisuAlg

3 respostas
Z

Então, esse algoritmo, é a resposta de um exercício da Etec, o professor nos pediu para fazer no VisuAlg, mas tem momentos que ele repete a mesma palavra quando vai ordena-las, seria isso um problema com o VisuAlg ou com meu algoritmo? Se alguém puder me ajudar a descobrir o problema aqui fico muito grato. :D

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

3 Respostas

Z

E

Tio, minha capacidade de atenção está muito ruim (portanto, não consegui ler seu programa até o fim - eu tenho problemas com programas muito compridos) - e de qualquer maneira, se não me engano, no VisuAlg dá para usar matrizes.
Será que daria para usar matrizes em vez de uma variável para cada string?
É que os algoritmos clássicos para fazer ordenação (como a ordenação por bolha) precisam de matrizes.

Z

Eu sei que é possível mas tenho que utilizar apenas o que o professor ensinou até agora.

Criado 7 de agosto de 2012
Ultima resposta 7 de ago. de 2012
Respostas 3
Participantes 2