Visualg Exercise Solved :: Wanted tips on how to improve it

Asked

Viewed 169 times

1

Description

We needed to get some data, which we can check below:

  • Relate the item;
  • City code;
  • Number of passenger cars;
  • Number of traffic accidents with victims;

It was wondered yet:

  • What is the highest and lowest rate of traffic accidents and to which cities they belong;
  • What is the average vehicle in cities together;
  • Average traffic accidents in cities with less than 2000 vehicles.

I resolved it this way:

    var
    codcidade1,codcidade2,codcidade3:caractere
    numveicid1,numveicid2,numveicid3:inteiro
    opcao:inteiro
    acvit1,acvit2,acvit3:inteiro
    mediaacidentes,mediaveiculos:real
    inicio
    opcao<-0
    escreval(":::IBGE::::")
    escreva("Código da 1° cidade: ")
    leia(codcidade1)
    escreva("Qual a quantidade de veículos de passeio da 1° Cidade:")
    leia(numveicid1)
    escreva("Quantidade de acidentes de transito com vítima na 1° cidade:")
    leia(acvit1)
    limpatela
    escreva("Código da 2° cidade: ")
    leia(codcidade2)
    escreva("Qual a quantidade de veículos de passeio da 2° Cidade:")
    leia(numveicid2)
    escreva("Quantidade de acidentes de transito com vítima na 2° cidade:")
    leia(acvit2)
    limpatela
    escreva("Código da 3° cidade: ")
    leia(codcidade3)
    escreva("Qual a quantidade de veículos de passeio da 3° Cidade:")
    leia(numveicid3)
    escreva("Quantidade de acidentes de transito com vítima na 3° cidade:")
    leia(acvit3)
    limpatela

    se((acvit1 > acvit2) e (acvit1 > acvit3)) entao
         escreval(acvit1," maior indice de acidentes de transito, pertencentes a cidade de codigo ",codcidade1)
       senao
            se((acvit2 > acvit1) e (acvit2 > acvit3)) entao
             escreval(acvit2," maior indice de acidentes de transito, pertencentes a cidade de codigo ",codcidade2)
             senao
                  escreval(acvit3," maior indice de acidentes de transito, pertencentes a cidade de codigo ",codcidade3)
             fimse
    fimse
    se((acvit1 < acvit2) e (acvit1 < acvit3)) entao
         escreval(acvit1," menor indice de acidentes de transito, pertencentes a cidade de codigo ",codcidade1)
       senao
            se((acvit2 < acvit1) e (acvit2 < acvit3)) entao
             escreval(acvit2," menor indice de acidentes de transito, pertencentes a cidade de codigo ",codcidade2)
             senao
                  escreval(acvit3," menor indice de acidentes de transito, pertencentes a cidade de codigo ",codcidade3)
             fimse
    fimse
    escreval()
    mediaveiculos<-(numveicid1+numveicid2+numveicid3)/3
    escreval("A média de veículos nas cidades é ",mediaveiculos)
    escreval()
    se((numveicid1<2000) e (numveicid2<2000) e (numveicid3<2000)) entao
       mediaacidentes <- (acvit1+acvit2+acvit3)/3
       senao
           se((numveicid1<2000) e (numveicid2<2000)) entao
           mediaacidentes <- (acvit1+acvit2)/2
           senao
               se((numveicid1<2000) e (numveicid3<2000)) entao
               mediaacidentes <- (acvit1+acvit3)/2
               senao
                   se((numveicid2<2000) e (numveicid3<2000)) entao
                   mediaacidentes <- (acvit1+acvit3)/2
                   senao
                       se(numveicid1<2000) entao
                       mediaacidentes <-acvit1
                       senao
                          se(numveicid2<2000) entao
                          mediaacidentes <-acvit2
                          senao
                          mediaacidentes <-acvit3
                          fimse
                       fimse
                   fimse
               fimse
           fimse
       fimse

       escreval("a média de acidentes de trânsito nas cidades ")
       escreval("com menos de 2000 veículos de passeio é:",mediaacidentes)
    fimalgoritmo
  • Using vectors will certainly make your code much more generic, as you won’t have to define new variables if you want to treat more cities, not just these three. Imagine if you had to deal with 200 cities.

  • In the stretch codcidade1,codcidade2,codcidade3:caractere pq does not make a matrix? 1 to 3 and dynamically inserts the name of the cities?

1 answer

1


One way to specifically address your problem, for an undetermined number of cities, is to:

algoritmo "Exercício"
var
    codcidade, codcidademaior, codcidademenor: caractere
    numveic, numveicmaior, numveicmenor, qtdtotalveic: inteiro
    n, n2000: inteiro
    outra: caractere
    acvit, acvitmaior, acvitmenor, qtdacid2000: inteiro
    mediaacidentes2000, mediaveiculos: real
inicio
    qtdtotalveic <- 0
    qtdacid2000 <- 0
    n2000 <- 0
    n <- 1
    repita
        escreva("Código da ", n, "ª cidade: ")
        leia(codcidade)
        escreva("Qual a quantidade de veículos de passeio da ", n, "ª cidade: ")
        leia(numveic)
        escreva("Quantidade de acidentes de transito com vítimas na ", n, "ª cidade: ")
        leia(acvit)
        se (n = 1) entao
            codcidademenor <- codcidade
            numveicmenor <- numveic
            acvitmenor <- acvit
            codcidademaior <- codcidade
            numveicmaior <- numveic
            acvitmaior <- acvit
        senao
            se (acvit < acvitmenor) entao
                codcidademenor <- codcidade
                numveicmenor <- numveic
                acvitmenor <- acvit
            fimse
            se (acvit > acvitmaior) entao
                codcidademaior <- codcidade
                numveicmaior <- numveic
                acvitmaior <- acvit
            fimse
        fimse
        qtdtotalveic <- qtdtotalveic + numveic
        se (numveic < 2000) entao
            qtdacid2000 <- qtdacid2000 + numveic
            n2000 <- n2000 + 1
        fimse
        n <- n + 1
        escreva("Outra cidade [S/N]: ")
        leia(outra)
    ate ((outra = "n") ou (outra = "N"))
    escreval("Maior índice de acidentes de trânsito: ", acvitmaior, " na cidade: ", codcidademaior)
    escreval("Menor índice de acidentes de trânsito: ", acvitmenor, " na cidade: ", codcidademenor)
    mediaveiculos <- qtdtotalveic / n
    escreval("Média de veículos em todas as cidades: ", mediaveiculos)
    mediaacidentes2000 <- qtdacid2000 / n2000
    escreval("Média de acidentes de trânsito nas cidades com menos de 2000 veículos de passeio: ", mediaacidentes2000)
fimalgoritmo

Browser other questions tagged

You are not signed in. Login or sign up in order to post.