Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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
Postado
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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!