Ir ao conteúdo
  • Cadastre-se

Ordenação de nomes em Portugol


Posts recomendados

Eis que eu estou precisando de uma ajuda com esse Portugol. Já revirei de tudo que é jeito e sempre da erro depois de entrar os nomes e as idades e não aparece em ordem alfabetica  

var
  a,i,b,d,g,f,n :inteiro
  c :caracter
  nome :vetor [1..10] de caracter
  idade :vetor [1..10] de inteiro
inicio
para a de 1 ate 10 passo 1 faca
   Escreval("Entre com o nome de posição: ", a)
   Leia (nome[a])
fimpara
para d de 1 ate 10 passo 1 faca
   Escreval("Insira a idade da posição: ",d)
   Leia (idade[d])
fimpara
para a de 1 ate 9 passo 1 faca
   para b de a+1 ate 10 passo 1 faca
      se (nome[a] > nome[b]) entao
         c<-nome[c]
         nome[a]<-nome[b]
         nome[b]<-c
      fimse
   fimpara
   para d de 1 ate 9 passo 1 faca
      para g de a+1 ate 10 passo 1 faca
         se (idade[d] > idade[g]) entao
            f<-idade[f]
            idade[d]<-idade[g]
            idade[g]<-f
         fimse
      fimpara
   fimpara
   escreval("A lista de nomes e idades em ordem crescente é:")
   para i de 1 ate 10 passo 1 faca
      escreval (nome[c])
      escreval (idade[f])
   fimpara
fimpara
fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

Olá,

Seguem as dicas.

 

Dica 1: Organize seu código(ele está todo ilegível).

Dica 2: Dentro de um loop(para) utilize para preencher tanto o vetor nome quanto o vetor idade.

Dica 3: Organizar em ordem crescente

para a de 1 ate 10 faca
    para b de 1 ate 10 faca
        se nome[a]>nome[b] entao
            c<- nome[a];
            nome[a]<- nome[b];
            nome[b]<- c;
        fimse               
    fimpara
fimpara

             

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

1) FECHAMENTO DE INSTRUÇÃO

No primeiro para de ordenação, você não fechou no lugar certo (só final), daí a segunda ordenação ficou dentro dele também...

Cada ordenação deveria ser independente... na item 3 demonstro.

 

2) USO INVÁLIDO DE COORDENADA

Em 04/12/2015 às 20:42, Vinicius Esperança disse:

para a de 1 ate 9 passo 1 faca
   para b de a+1 ate 10 passo 1 faca
      se (nome[a] > nome[b]) entao
         c<-nome[c]
         nome[a]<-nome[b]
         nome[b]<-c
         fimse
      fimpara

 

 

Depois do se, você está usando uma coordenada do vetor nome inválida... c é do tipo caractere!

Creio que no lugar do c seja o a.

 

2) USO DE VARIÁVEL NÃO CORRELACIONADA

Em 04/12/2015 às 20:42, Vinicius Esperança disse:

   para d de 1 ate 9 passo 1 faca
      para g de a+1 ate 10 passo 1 faca
         se (idade[d] > idade[g]) entao
            f<-idade[f]
            idade[d]<-idade[g]
            idade[g]<-f
            fimse
         fimpara
      fimpara
   ...
   fimpara

 

 

No segundo para você está usando a+1, mas deveria ser d+1.

 

3) USO MAIS CORRETO DE VARIÁVEIS NOS PARA

Você não precisa criar (e usar) uma variável para cada para. Essas variáveis podem ser ditas como auxiliares, servem justamente para controlar o para e depois não servem mais para nada... ou seja, os valores delas podem ser perdidos e daí não impede de poder reutilizá-las...

Por convenção (não sei o motivo) o padrão é utilizar o i, se precisar de outras, vem o k, j, l etc.

 

Ex.:

para i de 1 ate 9 passo 1 faca
   para j de i+1 ate 10 passo 1 faca


   fimpara
fimpara
   
para i de 1 ate 9 passo 1 faca
   para j de i+1 ate 10 passo 1 faca

   fimpara
fimpara

4) CORRELAÇÃO ENTRE VETORES

Ao cadastrar os dados de uma "pessoa", teoricamente o nome e a idade estarão respectivamente na mesma posição... como citado por @Catí Kurumim 7 você deveria ordenar os dois de uma vez. Usar apenas um para de ordenação.

Em 31/12/2015 às 20:43, Catí Kurumim 7 disse:

Dica 2: Dentro de um loop(para) utilize para preencher tanto o vetor nome quanto o vetor idade.  

 

Ou seja, "nome" ou "idade" é CRITÉRIO de ordenação, ou você ordena por nome ou ordena por idade.

Como dito, os dados estão correlacionados, a idade do cadastro que está no nome 6, terá sua idade também na posição 6 do outro vetor, logo, para ordenar, usando um dos dois critérios, os dois vetores.

 

PS: use variáveis mais sugestivas para auxiliar nas trocas de posições, ex.: Aux_I e Aux_C (de "auxiliar para inteiros" e "caractere").

 

***

 

No aguardo.

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