Ir ao conteúdo
  • Cadastre-se

VisualG Colocar em ordem crescente


Posts recomendados

Boa noite pessoal do Clube, seguinte estou tendo dificuldades em colocar esse seguinte problema em ordem. 

Imprima os três nomes em ordem crescente de alturas .

Ele pediu também para escrever a altura menor e a altura maior e os nomes de ambos, isso eu ja consegui fazer, o que não estou conseguindo e colocar em ordem crescente. Ai esta o código do programa.

 

Algoritmo "semnome"
// Disciplina  :  [Linguagem e Lógica de Programação] 
// Professor   : Antonio Carlos Nicolodi 
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 16/03/2018


Var
// Seção de Declarações das variáveis 
altura1, altura2, altura3, maxAltura, meAltura:real
maxnome, menome, nome1, nome2, nome3:caractere
cres1, cres2, cres3: real
Inicio


// Seção de Comandos, procedimento, funções, operadores, etc... 
escreva ("Digite o nome da primeira pessoa: ")
leia (nome1)
escreva ("Digite a altura da primeira pessoa: ")
leia (altura1)
escreva ("Digire o nome da segunda pessoa: ")
leia (nome2)
escreva ("Digite a altura da segunda pessoa: ")
leia (altura2)
escreva ("Digite o nome da terceira pessoa: ")
leia (nome3)
escreva ("Digite a altura da terceira pessoa: ")
leia (altura3)


//define a altura maior e a pessoa que tem ela.
maxaltura <- 1
mealtura <- 1


se (maxaltura < altura1) então
maxaltura <- altura1
maxnome <- nome1
fimse


se (maxaltura < altura2) então
maxaltura <- altura2
maxnome <- nome2
fimse


se (maxaltura < altura3) então
maxaltura <- altura3
maxnome <- nome3
fimse



//define a altura menor e a pessoa que tem ela
se (altura1 < altura2) e (altura1 < altura3)então
mealtura <- altura1
menome <- nome1
fimse


se (altura2 < altura1) e (altura2 < altura3)então
mealtura <- altura2
menome <- nome2
fimse


se (altura3 < altura2) e (altura3 < altura1)então
mealtura <- altura3
menome <- nome3
fimse
limpatela


 

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

@Kazoii    para colocar em ordem crescente usando apenas variáveis simples tem como fazer , mas vai precisar usar muitas linhas e variáveis para controlar,  e seu código está bom, ficou faltando colocar em ordem , então seu código com essa parte do código  ficaria assim :

Algoritmo "ordem crescente"
// Disciplina  :  [Linguagem e Lógica de Programação]
// Professor   : Antonio Carlos Nicolodi
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 16/03/2018
Var
  altura1, altura2, altura3, maxAltura, meAltura:real
  maxnome, menome, nome1, nome2, nome3:caractere
  cres1, cres2, cres3,h: real
Inicio
  escreva ("Digite o nome da primeira pessoa: ")
  leia (nome1)
  escreva ("Digite a altura da primeira pessoa: ")
  leia (altura1)
  escreva ("Digire o nome da segunda pessoa: ")
  leia (nome2)
  escreva ("Digite a altura da segunda pessoa: ")
  leia (altura2)
  escreva ("Digite o nome da terceira pessoa: ")
  leia (nome3)
  escreva ("Digite a altura da terceira pessoa: ")
  leia (altura3)
  //define a altura maior e a pessoa que tem ela.
  maxaltura := altura1
  maxnome := nome1
  se (maxaltura < altura2) ENTÃO
    maxaltura <- altura2
    maxnome <- nome2
  fimse
  se (maxaltura < altura3) ENTÃO
    maxaltura <- altura3
    maxnome <- nome3
  fimse
  //define a altura menor e a pessoa que tem ela
  mealtura := altura1
  menome := nome1
  se altura2 < mealtura ENTÃO
    mealtura <- altura2
    menome <- nome2
  fimse
  se altura3 < mealtura ENTÃO
    mealtura <- altura3
    menome <- nome3
  fimse
  //colocar em ordem crescente
  se (altura1 < altura2) e (altura1 < altura3) ENTÃO
    escreval(altura1,"  -  ",nome1)
    h := 1
  fimse
  se (altura2 < altura1) e (altura2 < altura3) ENTÃO
    escreval(altura2,"  -  ",nome2)
    h := 2
  fimse
  se (altura3 < altura1) e (altura3 < altura2) ENTÃO
    escreval(altura3,"  -  ",nome3)
    h := 3
  fimse
  se h=1 ENTÃO
    se altura2 < altura3 ENTÃO
      escreval(altura2,"  -  ",nome2)
      escreval(altura3,"  -  ",nome3)
    senao
      escreval(altura3,"  -  ",nome3)
      escreval(altura2,"  -  ",nome2)
    fimse
  fimse
  se h=2 ENTÃO
    se altura1 < altura3 ENTÃO
      escreval(altura1,"  -  ",nome1)
      escreval(altura3,"  -  ",nome3)
    senao
      escreval(altura3,"  -  ",nome3)
      escreval(altura1,"  -  ",nome1)
    fimse
  fimse
  se h=3 ENTÃO
    se altura1 < altura2 ENTÃO
      escreval(altura1,"  -  ",nome1)
      escreval(altura2,"  -  ",nome2)
    senao
      escreval(altura2,"  -  ",nome2)
      escreval(altura1,"  -  ",nome1)
    fimse
  fimse
Fimalgoritmo

se você puder usar vetor seria bem mais fácil,  então esse código ficaria assim :

Algoritmo "ordem crescente com vetor"
Var
  i,j : inteiro
  nome_e_altura,aux : vetor[1..3,1..2] de caracter
Inicio
  para j de 1 ate 3 faca
    escreva("Digite o nome da ",  j,"ª pessoa: ")
    leia(nome_e_altura[j,1])
    escreva("Digite a altura da ",j,"ª pessoa: ")
    leia(nome_e_altura[j,2])
  fimpara
  para i de 1 ate 3 faca
    para j de i+1 ate 3 faca
      se caracpnum(nome_e_altura[i,2]) > caracpnum(nome_e_altura[j,2]) ENTÃO
        aux[1] := nome_e_altura[i,2] // coloca o nome em ordem
        nome_e_altura[i,2] := nome_e_altura[j,2]
        nome_e_altura[j,2] := aux[1]
        
        aux[1] := nome_e_altura[i,1]  // coloca a altura em ordem
        nome_e_altura[i,1] := nome_e_altura[j,1]
        nome_e_altura[j,1] := aux[1]
      fimse
    fimpara
  fimpara
  escreval("Nomes e Altura Em Ordem Crescente")
  para j de 1 ate 3 faca
    escreval(j," - ",nome_e_altura[j,1]," - ",nome_e_altura[j,2])
  fimpara
  escreva("O Nome Com Menor Altura é : ",nome_e_altura[1,1])
  escreval(" e A Menor Altura é : "     ,nome_e_altura[1,2])
  escreva("O Nome Com Maior Altura é : ",nome_e_altura[3,1])
  escreval(" e A Maior Altura é : "     ,nome_e_altura[3,2])
Fimalgoritmo

 

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

17 horas atrás, devair1010 disse:

se (altura1 < altura2) e (altura1 < altura3) ENTÃO

Eu tinha começado a fazer assim, mais nao conseguir dar continuidade aos comandos, Muito obrigado pela ajuda parceiro. :D

 

adicionado 2 minutos depois
17 horas atrás, devair1010 disse:

@Kazoii    para colocar em ordem crescente usando apenas variáveis simples tem como fazer , mas vai precisar usar muitas linhas e variáveis para controlar,  e seu código está bom, ficou faltando colocar em ordem , então seu código com essa parte do código  ficaria assim :

Spoiler


Algoritmo "ordem crescente"
// Disciplina  :  [Linguagem e Lógica de Programação]
// Professor   : Antonio Carlos Nicolodi
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 16/03/2018
Var
  altura1, altura2, altura3, maxAltura, meAltura:real
  maxnome, menome, nome1, nome2, nome3:caractere
  cres1, cres2, cres3,h: real
Inicio
  escreva ("Digite o nome da primeira pessoa: ")
  leia (nome1)
  escreva ("Digite a altura da primeira pessoa: ")
  leia (altura1)
  escreva ("Digire o nome da segunda pessoa: ")
  leia (nome2)
  escreva ("Digite a altura da segunda pessoa: ")
  leia (altura2)
  escreva ("Digite o nome da terceira pessoa: ")
  leia (nome3)
  escreva ("Digite a altura da terceira pessoa: ")
  leia (altura3)
  //define a altura maior e a pessoa que tem ela.
  maxaltura := altura1
  maxnome := nome1
  se (maxaltura < altura2) ENTÃO
    maxaltura <- altura2
    maxnome <- nome2
  fimse
  se (maxaltura < altura3) ENTÃO
    maxaltura <- altura3
    maxnome <- nome3
  fimse
  //define a altura menor e a pessoa que tem ela
  mealtura := altura1
  menome := nome1
  se altura2 < mealtura ENTÃO
    mealtura <- altura2
    menome <- nome2
  fimse
  se altura3 < mealtura ENTÃO
    mealtura <- altura3
    menome <- nome3
  fimse
  //colocar em ordem crescente
  se (altura1 < altura2) e (altura1 < altura3) ENTÃO
    escreval(altura1,"  -  ",nome1)
    h := 1
  fimse
  se (altura2 < altura1) e (altura2 < altura3) ENTÃO
    escreval(altura2,"  -  ",nome2)
    h := 2
  fimse
  se (altura3 < altura1) e (altura3 < altura2) ENTÃO
    escreval(altura3,"  -  ",nome3)
    h := 3
  fimse
  se h=1 ENTÃO
    se altura2 < altura3 ENTÃO
      escreval(altura2,"  -  ",nome2)
      escreval(altura3,"  -  ",nome3)
    senao
      escreval(altura3,"  -  ",nome3)
      escreval(altura2,"  -  ",nome2)
    fimse
  fimse
  se h=2 ENTÃO
    se altura1 < altura3 ENTÃO
      escreval(altura1,"  -  ",nome1)
      escreval(altura3,"  -  ",nome3)
    senao
      escreval(altura3,"  -  ",nome3)
      escreval(altura1,"  -  ",nome1)
    fimse
  fimse
  se h=3 ENTÃO
    se altura1 < altura2 ENTÃO
      escreval(altura1,"  -  ",nome1)
      escreval(altura2,"  -  ",nome2)
    senao
      escreval(altura2,"  -  ",nome2)
      escreval(altura1,"  -  ",nome1)
    fimse
  fimse
Fimalgoritmo

 

 

se você puder usar vetor seria bem mais fácil,  então esse código ficaria assim :

Spoiler


Algoritmo "ordem crescente com vetor"
Var
  i,j : inteiro
  nome_e_altura,aux : vetor[1..3,1..2] de caracter
Inicio
  para j de 1 ate 3 faca
    escreva("Digite o nome da ",  j,"ª pessoa: ")
    leia(nome_e_altura[j,1])
    escreva("Digite a altura da ",j,"ª pessoa: ")
    leia(nome_e_altura[j,2])
  fimpara
  para i de 1 ate 3 faca
    para j de i+1 ate 3 faca
      se caracpnum(nome_e_altura[i,2]) > caracpnum(nome_e_altura[j,2]) ENTÃO
        aux[1] := nome_e_altura[i,2] // coloca o nome em ordem
        nome_e_altura[i,2] := nome_e_altura[j,2]
        nome_e_altura[j,2] := aux[1]
        
        aux[1] := nome_e_altura[i,1]  // coloca a altura em ordem
        nome_e_altura[i,1] := nome_e_altura[j,1]
        nome_e_altura[j,1] := aux[1]
      fimse
    fimpara
  fimpara
  escreval("Nomes e Altura Em Ordem Crescente")
  para j de 1 ate 3 faca
    escreval(j," - ",nome_e_altura[j,1]," - ",nome_e_altura[j,2])
  fimpara
  escreva("O Nome Com Menor Altura é : ",nome_e_altura[1,1])
  escreval(" e A Menor Altura é : "     ,nome_e_altura[1,2])
  escreva("O Nome Com Maior Altura é : ",nome_e_altura[3,1])
  escreval(" e A Maior Altura é : "     ,nome_e_altura[3,2])
Fimalgoritmo

 

Eu ainda não aprendi vetor na faculdade, por isso nao soube usar ele, mais obrigado pela dica, quando eu for usar vetores ja vou ter uma base. :D

 

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!