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

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. :smiley:

[code]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[/code]

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.

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