Ir ao conteúdo

Posts recomendados

Postado

Olá! 

 

Sou mega iniciante e gostaria de saber como posso relacionar um dado de entrada a outro numa espécie de lista. Por exemplo: ao executar esse algoritmo, o município que se relaciona ao maior número aparece como sendo o mesmo do menor número. Como soluciono? Criando outra variável? Segue:

 

Algoritmo "IBGE: Acidentes de trânsito no estado do Paraná"
Var

   mun: Caractere
   codmun, veic, acid, contador, maior, menor: Inteiro
   soma, media: Real

Inicio
   contador <- 0
   soma <- 0
   enquanto (contador <= 1) faca
      escrevaL ("Insira o nome do município: ")
      leia (mun)
      escrevaL ("Insira o código do município: ")
      leia (codmun)
      escrevaL ("Insira o número de veículos de passeio de ", mun, ":")
      leia (veic)
      escrevaL ("Insira o número de acidentes de trânsito com vítimas de ", mun, ":")
      leia (acid)
      se (acid > maior) entao
         maior <- acid
      senao (acid < menor) entao
         menor <- acid
      fimse
      soma <- soma + veic
      contador <- contador + 1
      media <- soma/contador
   fimenquanto
   escrevaL ("O maior número de acidentes de trânsito com vítimas é: ", maior,", referente à cidade de ", mun, ".")
   escrevaL ("O menor número de acidentes de trânsito com vítimas é: ", menor,", referente à cidade de ", mun, ".")
   escrevaL ("A média de veículos de passeio de todas as cidades juntas é: ", media)
Fimalgoritmo

 

  • Curtir 1
  • Membro VIP
Postado
14 horas atrás, BiancaV. disse:

[...] ao executar esse algoritmo, o município que se relaciona ao maior número aparece como sendo o mesmo do menor número. Como soluciono? Criando outra variável? Segue:

 

Vejamos o código:

14 horas atrás, BiancaV. disse:
   escrevaL ("O maior número de acidentes de trânsito com vítimas é: ", maior,", referente à cidade de ", mun, ".")
   escrevaL ("O menor número de acidentes de trânsito com vítimas é: ", menor,", referente à cidade de ", mun, ".")
   escrevaL ("A média de veículos de passeio de todas as cidades juntas é: ", media)

 

Então, na primeira linha, está sendo exibido o conteúdo da memória correspondente ao identificador mun. Lá tem, por exemplo, "Salvador". Logo em seguida está sendo utilizando a mesma variável... o esperado é que saia o mesmo valor mesmo, entende? O computador só vai lá no endereço de memória e tenta exibir o que está lá...

 

Dica: no VisualG vá pressionando F8. No lado direito do problema tem uma "tabela com os valores das variáveis"... a medida que vai alterando uma variável, os valores vão atualizando lá.

 

Resumidamente: uma sugestão seria utilizar outras variáveis mesmo.. ex.: munMaior e munMenor. Assim como maior recebe o "valor atual de acidentes", essas duas variáveis receberia o nome do município quando necessário. Algo como:

 

      se (acid > maior) entao
         maior <- acid
         munMaior <- mun
      senao (acid < menor) entao
         menor <- acid
         munMenor <- num
      fimse

 

E utiliza as variáveis lá na hora de exibir.

Adendo: depois faça alguns teste para confirmar se o cálculo do menor e maior está funcionando bem. 
 

  • Curtir 2
Postado

Maravilha! Consegui entender bem a lógica com a explicação, muito obrigada! Fiz alguns testes e agora o problema parece ter sido solucionado: 

 

Inicio
  contador <- 0
  soma <- 0
  menosVeiculos <- 2000
           enquanto (contador <= 2) faca
                    escreval ("Insira o nome do município: ")
                    leia (mun)
                    escreval ("Insira o código do município: ")
                    leia (codmun)
                    escreval ("Insira o número de veículos de passeio de ", mun, ":")
                    leia (veic)
                    escreval ("Insira o número de acidentes de trânsito com vítimas de ", mun, ":")
                    leia (acid)
                         se (acid > maior) entao
                         maior <- acid
                         munMaior <- mun
                         senao (acid < menor) entao
                         menor <- acid
                         munMenor <- mun
                         fimse
                    soma <- soma + veic
                    contador <- contador + 1
                    media <- soma/contador
           fimenquanto
           mediaAcid <- acid/contador
           menosVeiculos <- 2000
           se (veic < menosVeiculos) entao
              menormediaAcid <- mediaAcid
           fimse
           escreval ("O maior número de acidentes de trânsito com vítimas é: ", maior,", referente à cidade de ", munMaior, ".")
           escreval ("O menor número de acidentes de trânsito com vítimas é: ", menor,", referente à cidade de ", munMenor, ".")
           escreval ("A média de veículos de passeio de todas as cidades juntas é: ", media, ".")
           se (veic < menosVeiculos) entao
              escreval ("Não há cidades com menos de 2000 veículos.")
           senao
                escreval ("A média de acidentes de trânsito nas cidades com menos de 2000 veículos de passeio é :", menormediaAcid, ".")
           fimse
Fimalgoritmo

Ainda, estou com um problema no último bloco: algumas vezes, o senao é acusado como estando errado, e outras roda normal. De resto, tudo como esperado. 

  • Membro VIP
Postado

Sempre mantenha o código indentado. No VisuaLG, para ajudar, pressiona Ctrl+G.

 

 

Eu nem reparei. A sintaxe está errada:
 

Em 22/11/2021 às 23:40, BiancaV. disse:
      se (acid > maior) entao
         maior <- acid
      senao (acid < menor) entao
         menor <- acid
      fimse

 

Seria algo assim:

      se (acid > maior) entao
         maior <- acid
      senao
         se (acid < menor) entao
            menor <- acid
         fimSe
      fimSe


Ou, como para o primeiro município precisa atualizar ambos, poderia ficar assim:

      se (acid > maior) entao
         maior <- acid
         munMaior <- mun
      fimSe
      
      se (acid < menor) entao
         menor <- acid
         munMenor <- mun
      fimSe

 

 

 

@BiancaV., qual o enunciado completo da questão?

Postado

O enunciado diz:

 

Citação

(...)

qual o maior e o menor índice de acidentes e a que cidades pertencem;

qual a média de veículos nas cidades juntas;

qual a média de acidentes de trânsito nas cidades com menos de 2000 veículos de passeio.

 

E minha solução: 

 

Inicio
   contador <- 0
   soma <- 0
   enquanto (contador <= 1) faca
      escreval ("Insira o nome do município: ")
      leia (mun)
      escreval ("Insira o código do município: ")
      leia (codmun)
      escreval ("Insira o número de veículos de passeio de ", mun, ":")
      leia (veic)
      escreval ("Insira o número de acidentes de trânsito com vítimas de ", mun, ":")
      leia (acid)
      se (acid > maior) entao
         maior <- acid
         munMaior <- mun
      fimSe
      se (acid < menor) entao
         menor <- acid
         munMenor <- mun
      fimSe
      soma <- soma + veic
      contador <- contador + 1
      mediaVeic <- soma/contador
   fimenquanto
   veicMenor <- 2000
   somaAcid <- soma + acid
   somaAcidMenor <- somaAcid - somaAcidMaior
   contadorMenor <- contador - contadorMaior
   se (veic < veicMenor) entao
      contadorMenor <- contador
      somaAcidMenor <- somaAcid
      mediaAcid <- somaAcidMenor/contadorMenor
   fimse
   escreval ("O maior número de acidentes de trânsito com vítimas é: ", maior,", referente à cidade de ", munMaior, ".")
   escreval ("O menor número de acidentes de trânsito com vítimas é: ", menor,", referente à cidade de ", munMenor, ".")
   escreval ("A média de veículos de passeio de todas as cidades juntas é: ", mediaVeic, ".")
   se (veic > veicMenor) entao
      escreval ("Não há cidades com menos de 2000 veículos.")
   senao
      se (veic < veicMenor) entao
         escreval ("A média de acidentes de trânsito nas cidades com menos de 2000 veículos de passeio é :", mediaAcid, ".")
      fimse
   fimse
Fimalgoritmo

 

Mas sigo errando: o menor número de acidentes acusa sempre como 0 e com a média de acidentes para cidades com menos de 2000 veículos estou com problemas em "isolar" o contador.

  • Membro VIP
Postado
8 horas atrás, BiancaV. disse:

O enunciado diz:

 

Citação

(...)

qual o maior e o menor índice de acidentes e a que cidades pertencem;

qual a média de veículos nas cidades juntas;

qual a média de acidentes de trânsito nas cidades com menos de 2000 veículos de passeio.

 

 

Poste o enunciado completo.

Além disso faltou a declaração das variáveis lá no código... poste ele completo também.

 

 

 

 

8 horas atrás, BiancaV. disse:

o menor número de acidentes acusa sempre como 0

 

Inicialize o menor com valor bem alto. Algo como:

menor <- 9999999
enquanto (contador <= 1) faca


Uma outra forma é inicializar o menor (e o maior) com o valor primeiro valor.

 

 

 

8 horas atrás, BiancaV. disse:

com a média de acidentes para cidades com menos de 2000 veículos estou com problemas em "isolar" o contador.


Você precisa primeiro "contar a quantidade de cidades" e "calcular a soma dos acidentes dessas cidades". O cálculo da média é feito apenas uma vez... após ter esses dois dados.


 

   se (veic > veicMenor) entao
      escreval ("Não há cidades com menos de 2000 veículos.")
   senao
      se (veic < veicMenor) entao
         escreval ("A média de acidentes de trânsito nas cidades com menos de 2000 veículos de passeio é :", mediaAcid, ".")
      fimse
   fimse

 

Na condição da primeira linha, você precisa verificar se existem cidades com esse critério ou não. Algo como:

 

se (qtdCidadesMenos2000VeiculosPasseio = 0) entao

ou

se (não (qtdCidadesMenos2000VeiculosPasseio > 0)) entao

 

Postado

O enunciado completo:

 

Citação

O IBGE (Instituto Brasileiro de Geografia e Estatística) desejou realizar uma estatística nas cidades pertencentes ao estado do Paraná, verificando dados sobre acidentes de trânsito. Neste estudo, precisava-se obter alguns dados, que podemos verificar abaixo:

código da cidade;

número de veículos de passeio;

número de acidentes de trânsito com vítimas.

Desejava-se saber ainda:

qual o maior e o menor índice de acidentes de trânsito e a que cidades pertencem;

qual a média de veículos nas cidades juntas;

qual a média de acidentes de trânsito nas cidades com menos de 2000 veículos de passeio.

 

Estou errando ainda a contagem das cidades com menos de 2000 veículos:

 

Algoritmo "IBGE: Acidentes de trânsito no estado do Paraná"
// Disciplina   : Lógica de Programação
Var
   mun, munMaior, munMenor: Caractere
   codmun, veic, acid, acid2000, contador, maior, menor, cidadesMenos2000Veic: Inteiro
   soma, somaAcid2000, mediaVeic, mediaAcid: Real

Inicio
   contador <- 0
   soma <- 0
   menor <- 9999999
   enquanto (contador <= 1) faca
      escreval ("Insira o nome do município: ")
      leia (mun)
      escreval ("Insira o código do município: ")
      leia (codmun)
      escreval ("Insira o número de veículos de passeio de ", mun, ":")
      leia (veic)
      escreval ("Insira o número de acidentes de trânsito com vítimas de ", mun, ":")
      leia (acid)
      se (acid > maior) entao
         maior <- acid
         munMaior <- mun
      fimse
      se (acid < menor) entao
         menor <- acid
         munMenor <- mun
      fimse
      soma <- soma + veic
      contador <- contador + 1
      mediaVeic <- soma/contador
   fimenquanto
   escreval ("O maior número de acidentes de trânsito com vítimas é: ", maior,", referente à cidade de ", munMaior, ".")
   escreval ("O menor número de acidentes de trânsito com vítimas é: ", menor,", referente à cidade de ", munMenor, ".")
   escreval ("A média de veículos de passeio de todas as cidades juntas é: ", mediaVeic, ".")
   se (cidadesMenos2000Veic = 0) entao
      escreval ("Não há cidades com menos de 2000 veículos.")
   senao
      se (cidadesMenos2000Veic > 0) entao
         acid2000 <- acid
         soma <- soma + acid2000
         mediaAcid <- soma/cidadesMenos2000Veic
         escreval ("A média de acidentes de trânsito nas cidades com menos de 2000 veículos de passeio é :", mediaAcid, ".")
      fimse
   fimse
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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!