Ir ao conteúdo

Posts recomendados

Postado

1)   Guarde os seguintes valores em um vetor, na ordem em que estão: 5, 4, 7, 3, 2, 6, 1, 8. Ordene crescente e decrescente estes valores.(USANDO VETORES)

 

Código por enquanto ta assim :

algoritmo "Ordem Crescente e Decrescente"
       numero:vetor[1..8] de inteiro
       indice:inteiro
var
       para indice de 1 ate 8 faca
              escreva("Digite um número:")
              leia(numero[indice])
       fimpara

fimalgoritmo

 

Postado

@dereguejhosonsó consegui organizar em ordem crescente 😕

Var 
numero:vetor[1..8] de inteiro
   indice,indice2,temp:inteiro
Inicio
   //colocando os numeros nos vetores
   // colocando os numeros no vetor
   para indice de 1 ate 8 faca
      escreva("Digite um numero para a posicao", indice, ":")
      leia(numero[indice])
   fimpara

   //organizando em ordem crescente
   para indice de 1 ate 8-1 faca
      para indice2 de indice+1 ate 8 faca
         se numero[indice] > numero[indice2] entao
            temp<- numero[indice]
            numero[indice]<- numero[indice2]
            numero[indice2]<- temp
         fimse
      fimpara
   fimpara

   //organizando em ordem decresecente
   para indice2 de 8 ate 1-8 faca
      para indice de indice2-1 ate 8 faca
         se numero[indice] < numero[indice2] entao
            temp<- numero[indice]
            numero[indice]<- numero[indice2]
            numero[indice2]<- temp
         fimse
      fimpara
   fimpara


   escreval("=====ORDEM CRESCENTE=======")
   para indice de 1 ate 8 faca

      escreval(numero[indice])
   fimpara

   escreval("=====ORDEM DECRESCENTE=======")
   para indice de 1 ate 8 faca
   escreval(numero[indice2])
   fimpara

 

  • Curtir 1
  • Membro VIP
Postado
Em 02/10/2020 às 13:34, dereguejhoson disse:

1)   Guarde os seguintes valores em um vetor, na ordem em que estão: 5, 4, 7, 3, 2, 6, 1, 8. Ordene crescente e decrescente estes valores.(USANDO VETORES)

 

Galera, o segredo para resolver um (e qualquer problema) é SEMPRE entender o problema... é comum no dia-a-dia focamos na solução... mas isso não funciona! A única forma de resolvermos algo que não entendemos seria pela sorte!!! :D

 

 

 

Vamos tentar seguir um exemplo de fluxo.

 

Vejam o que tem no enunciado:

Em 02/10/2020 às 13:34, dereguejhoson disse:

Guarde os seguintes valores em um vetor, na ordem em que estão: 5, 4, 7, 3, 2, 6, 1, 8.

 

 

Vocês implementaram:

Em 02/10/2020 às 13:34, dereguejhoson disse:

 


   para indice de 1 ate 8 faca
      escreva("Digite um número:")
      leia(numero[indice])
   fimpara

 

e

 

Em 03/10/2020 às 11:35, Alice Braga disse:

   para indice de 1 ate 8 faca
      escreva("Digite um numero para a posicao", indice, ":")
      leia(numero[indice])
   fimpara

 

Então, se os valores já estão estipulados, para que ler dados do usuário? Percebem? Vocês não estariam entendendo o problema corretamente. O código tem que ser coerente enunciado...

 

Poderia fazer algo como:

 

algoritmo "Ordem Crescente e Decrescente"
var
   numeros: vetor[1..8] de inteiro
   indice: inteiro
var
   numeros[1] <- 5
   numeros[2] <- 4
   numeros[3] <- 7
   numeros[4] <- 3
   numeros[5] <- 2
   numeros[6] <- 6
   numeros[7] <- 1
   numeros[8] <- 8


fimAlgoritmo

 

 

Vejam que no próprio VisualG conseguimos visualizar o conteúdo das variáveis

 

image.png

 

 

 

Pronto... uma etapa já temos... 

 

"Ah!, mas eu não sabia como atribuir valores para um vetor". Normal, entretanto a ideia é que deveria entender que o vetor é fixo!!! Não saber como deixar o vetor fixo seria um subproblema em si, mas o que não poderia é fazer algo que estaria fora do propósito do problema ;)

 

Pesquisaria no Google como criar um vetor com os dados já preenchidos, perguntaria num fórum... até mesmo veria se esse entendimento de deixar o vetor fixo está correto etc.

 

 

Poderia algo assim também:

 

   escreval("Insira os números '5, 4, 7, 3, 2, 6, 1 e 8' em sequência.")
   escreval("Digite cada número separado por um ENTER")
   escreval("")
   para indice de 1 ate 8 faca
      escreva("Digite um número:")
   leia(numeros[indice])
   fimpara

 

 

Entendem? As coisas necessariamente devem fazer sentido... ficar amarradas...

 

 

Para exibir os dados, poderia fazer pelo modo clássico:

 

algoritmo "Ordem Crescente e Decrescente"
var
   numeros: vetor[1..8] de inteiro
   indice: inteiro

inicio
   numeros[1] <- 5
   numeros[2] <- 4
   numeros[3] <- 7
   numeros[4] <- 3
   numeros[5] <- 2
   numeros[6] <- 6
   numeros[7] <- 1
   numeros[8] <- 8

   para indice de 1 ate 8 faca
      escreva (numeros[indice])
   fimPara

fimAlgoritmo

 

image.png

 

 

 

A outra etapa:

 

Em 02/10/2020 às 13:34, dereguejhoson disse:

Ordene crescente e decrescente estes valores.(USANDO VETORES)

 

Idem... entenda o problema... o que seria "Ordene crescente e decrescente estes valores"? Não me parece preciso... mas poderia fazer assim:

 

algoritmo "Ordem Crescente e Decrescente"
var
   numeros: vetor[1..8] de inteiro
   indice: inteiro

inicio
   numeros[1] <- 5
   numeros[2] <- 4
   numeros[3] <- 7
   numeros[4] <- 3
   numeros[5] <- 2
   numeros[6] <- 6
   numeros[7] <- 1
   numeros[8] <- 8

   para indice de 1 ate 8 faca
      escreva (numeros[indice])
   fimPara
   escreval("")
   escreval("")

   numeros[1] <- 1
   numeros[2] <- 2
   numeros[3] <- 3
   numeros[4] <- 4
   numeros[5] <- 5
   numeros[6] <- 6
   numeros[7] <- 7
   numeros[8] <- 8

   para indice de 1 ate 8 faca
      escreva (numeros[indice])
   fimPara
   escreval("")
   escreval("")

   numeros[1] <- 8
   numeros[2] <- 7
   numeros[3] <- 6
   numeros[4] <- 5
   numeros[5] <- 4
   numeros[6] <- 3
   numeros[7] <- 2
   numeros[8] <- 1

   para indice de 1 ate 8 faca
      escreva (numeros[indice])
   fimPara

fimAlgoritmo

 

image.png

 

 

Pronto! O problema está resolvido! Certo?

 

 

Entretanto, a análise do problema também inclui o contexto de onde ele surgiu, ou seja: apensar de possivelmente esse código acima ser UMA solução válida, é pressuposto que provavelmente o autor estaria estimulando que o programa se aprofunde no assunto... A ideia é treinar "ordenação de vetores".

 

Se ele quer um vetor ordenado, o que poderíamos fazer seria "pesquisar como se ordena vetores"... Ir no Google é descobrir que existem "diversos algoritmos de ordenação de vetores"... daí, analisar e escolher um e implementar.. por aí vai... essa é ideia...

 

 

Minha sugestão seria:

  • Deem uma pesquisa sobre algoritmos de ordenação. Vejam as diferenças entre eles. Vantagens e desvantagens;
  • De antemão, sugiro utilizar o Bubble Sort... não tentem achar o código pronto em VisualG, apenas pesquise sobre esse método e implemente ele no código. 

 

Qualquer dúvida é só perguntar aqui que tentamos ajudar.

 

No aguado.

 

  • Curtir 4
  • Obrigado 1
Postado

@Alice Braga Muito Obrigado Alice , eu mudei seu código e agora faz a Ordem Crescente e a Decrescente:

 

var
   numero:vetor[1..8] de inteiro
   ordemDecrescente:vetor[1..8] de inteiro
   indice,indice2,temp:inteiro
inicio
    //colocando os numeros nos vetores
   // colocando os numeros no vetor
   para indice de 1 ate 8 faca
      escreva("Digite um numero para a posicao", indice, ":")
      leia(numero[indice])
   fimpara

   //organizando em ordem crescente
   para indice de 1 ate 8-1 faca
      para indice2 de indice+1 ate 8 faca
         se numero[indice] > numero[indice2] entao
            temp<- numero[indice]
            numero[indice]<- numero[indice2]
            numero[indice2]<- temp
         fimse
      fimpara
   fimpara

   //organizando em ordem decresecente
   para indice2 de 8 ate 1-8 faca
      para indice de indice2-1 ate 8 faca
         se numero[indice] < numero[indice2] entao
            temp<- numero[indice]
            numero[indice]<- numero[indice2]
            numero[indice2]<- temp
         fimse
      fimpara
   fimpara


   escreval("=====ORDEM CRESCENTE=======")
   para indice de 1 ate 8 faca
      escreval(numero[indice])
      ordemDecrescente[indice] <- numero[indice]
   fimpara
   escreval("-----Ordem Decrescente------")
       para indice de 8 ate 1 passo -1 faca
              escreval(ordemDecrescente[indice])
       fimpara

fimalgoritmo

 

  • Curtir 1
  • Obrigado 1
  • Membro VIP
Postado

@dereguejhoson, algoritmo está indo num caminho bom, mas tem alguns pontos:

 

1# 

O algoritmo está ordenando duas vez seguidas o mesmo vetor:

 

20 horas atrás, dereguejhoson disse:

   //organizando em ordem crescente
   para indice de 1 ate 8-1 faca
      para indice2 de indice+1 ate 8 faca
         se numero[indice] > numero[indice2] entao
            temp<- numero[indice]
            numero[indice]<- numero[indice2]
            numero[indice2]<- temp
         fimse
      fimpara
   fimpara

   //organizando em ordem decresecente
   para indice2 de 8 ate 1-8 faca
      para indice de indice2-1 ate 8 faca
         se numero[indice] < numero[indice2] entao
            temp<- numero[indice]
            numero[indice]<- numero[indice2]
            numero[indice2]<- temp
         fimse
      fimpara
   fimpara

 

Logo, a primeira ordenação não tem qualquer utilidade, já que ela será perdida logo em seguida. (Erro de lógica.)

 

 

 

2#

O vetor ordemDecrescente não está com os elementos em ordem decrescente, logo teríamos no mínimo um problema de semântica.

 

 

 

3#

O enunciado pede para "ordenar um vetor", o que é diferente de "criar outro vetor com elementos do primeiro ordenado". Ou seja: além da questão supracitada, de qualquer forma seria para utilizar o próprio vetor.

 

 

Segue correções:

 

algoritmo "Vetor em ordem Crescente e Decrescente"
var
   numeros: vetor[1..8] de inteiro
   indice, indice2, temp: inteiro
inicio
   //atribuindo valores para o vetor
   numeros[1] <- 5
   numeros[2] <- 4
   numeros[3] <- 7
   numeros[4] <- 3
   numeros[5] <- 2
   numeros[6] <- 6
   numeros[7] <- 1
   numeros[8] <- 8

   escreval("=====ORDEM ORIGINAL=======")
   para indice de 1 ate 8 faca
      escreval(numeros[indice])
   fimPara


   //organizando em ordem crescente
   para indice de 1 ate 8-1 faca
      para indice2 de indice+1 ate 8 faca
         se numeros[indice] > numeros[indice2] entao
            temp <- numeros[indice]
            numeros[indice] <- numeros[indice2]
            numeros[indice2] <- temp
         fimSe
      fimPara
   fimPara

   escreval("=====ORDEM CRESCENTE=======")
   para indice de 1 ate 8 faca
      escreval(numeros[indice])
   fimPara

   //organizando em ordem crescente
   para indice de 1 ate 8-1 faca
      para indice2 de indice+1 ate 8 faca
         se numeros[indice] < numeros[indice2] entao
            temp <- numeros[indice]
            numeros[indice] <- numeros[indice2]
            numeros[indice2] <- temp
         fimSe
      fimPara
   fimPara

   escreval("=====ORDEM DECRESCENTE=======")
   para indice de 1 ate 8 faca
      escreval(numeros[indice])
   fimPara

fimalgoritmo

 

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!