Ir ao conteúdo

Posts recomendados

Postado
Var
   aprovado, reprovado, final: inteiro
   media, maior, menor: real
   cont_nota, cont_dis : inteiro
   cont_mat, cont_por, cont_geo, cont_fil, cont_his, cont_qui : inteiro
   opc_dis, opc_rep, opc_nota : inteiro
   rep, rep_disc: inteiro
   mediaD, mediaT:real
   Naluno, Ndis:inteiro
   somamedia:inteiro
   log_alun, log_dis, log_nota : logico
   nota, nota1, nota2, N1, N2: real

Inicio
   cont_nota := 0
   log_nota := verdadeiro
   log_alun := verdadeiro
   log_dis := verdadeiro
   Naluno := 0
   Ndis := 0
   aprovado:=0
   reprovado:=0
   final:=0
   menor:= 0

   enquanto log_nota faca
      cont_nota := cont_nota + 1
      escreva ("Informe o nome do aluno: ")
      leia (nota)


      repita
         cont_dis := cont_dis + 1
         escreval ("--------------------")
         escreval ("1-matemática")
         escreval ("2-portugues")
         escreval ("3-geografia")
         escreval ("4-Filosofia")
         escreval ("5-historia")
         escreval ("6-quimica")
         escreval ("--------------------")
         escreva ("Informe qual a disciplina: ")
         leia (opc_dis)

         escolha opc_dis
         caso 1
            cont_mat := cont_mat
         caso 2
            cont_por := cont_por
         caso 3
            cont_geo := cont_geo
         caso 4
            cont_fil := cont_fil
         caso 5
            cont_his := cont_his
         caso 6
            cont_qui := cont_qui
         fimescolha
         ESCREVAL("SISTEMA DE MÉDIAS")
         ESCREVA("DIGITE A PRIMEIRA NOTA: ")
         LEIA(N1)
         ESCREVA("DIGITE A SEGUNDA NOTA: ")
         LEIA(N2)
         MEDIA <- (N1 + N2 ) / 2
         SE (MEDIA >= 7) ENTAO
            ESCREVAL("ALUNO APROVADO!")
         SENAO
            SE (MEDIA <= 3) ENTAO
               ESCREVAL("ALUNO REPROVADO!")
            SENAO
               SE (MEDIA <=5) ENTAO
                  ESCREVAL("ALUNO EM RECUPERAÇÃO...")
               FIMSE
            FIMSE
         FIMSE

         se N1 > N2 entao
            maior:= N1
         senao
            se N1 < N2 entao
               menor:= N1

               se N2 > N1 entao
                  maior:= N2
               senao
                  se N2 < N1 entao
                     menor:=N2
                  fimse
               fimse
            fimse


            escreval("")
            escreval("A média do(a) aluno(a) é:", media)
            escreval("A maior nota do(a) aluno(a) é:", maior)
            escreval("A menor nota do(a) aluno(a) é:", menor)


            mediaD := somamedia/Naluno

            se (media >= 0) entao
               somamediaD := media + somamediaD
            fimse
            mediaT:= somamediaD / (Naluno*Ndis)

            escreva ("Deseja informar outro aluno? (1-Sim ou 2-Não)")
            leia (opc_nota)
            se opc_nota = 2 entao
               log_nota := falso
            fimse


            escreval("")
            escreval("-----------  DISCIPLINA: ",caso,"  ----------")
            escreval("-  QUANTIDADE TOTAL DE ALUNOS: ", Naluno)
            escreval("-  MÉDIA GERAL DA DISCIPLINA: ", mediaD)
            escreval("-  MAIOR MÉDIA DA DISCIPLINA: ", maior)
            escreval("-  MENOR MÉDIA DA DISCIPLINA: ", menor)
            escreval("-  QUANTIDADE ALUNOS REPROVADOS: ", reprovado)
            escreval("-  QUANTIDADE ALUNOS NA FINAL: ", final)
            escreval("-  QUANTIDADE ALUNOS APROVADOS: ", aprovado)
            escreva("")

            maior:= maior - maior
            menor:= menor - menor
            somamedia:= -1
            somamedia:= somamedia + 1

            aprovado := -1
            aprovado := aprovado + 1
            reprovado := -1
            reprovado := reprovado + 1
            final := -1
            final := final + 1
            Naluno := -1
            Naluno := Naluno + 1

            escreva ("Deseja informar outra disciplina? (1-Sim ou 2-Não): ")
            leia (opc_rep)
Fimalgoritmo

[Código reeindentado pela moderação via "Ctrl+G" no VisualG]
 

 

imagem_2022-04-14_005358720.png

  • Amei 1
Postado

@Lauro Viana    esse erro é por que não se pode dividir nenhum número por zero  ,   e o visualG trava quando isso acontece ,  e aí  precisa fecha-lo e abrir novamente ,  e então para evitar isso , você precisa fazer a validação dessa operação de dividir , colocando uma condição , usando o comando  "se"   ,  ex.:

se naluno = 0 entao
  escreval("não eh possível dividir por zero !")
senao
  mediad := somamedia / naluno  // não eh possível dividir por zero !
fimse

outras coisas é que no visualG 3.0 ,  não faz diferença usar nomes de variáveis maiúsculos ou minúsculos ,  e os comando ficam mais agradáveis  ,  de olhar ,  se formem minúsculas ou caixa baixa ,  o comando escreval para pular uma Linha não precisa de parênteses e nem aspas duplas ,  isso é perda de tempo ,  mas porém, contudo ,  isso não é errado ,  você pode fazer do jeito que você bem entender e / ou Quiser .

  e seria melhor se você postasse o EnunciaDo desse exrcício , para um melhor entendimento do Quê se precisa fazer , e seu código modificado ficou assim :

Algoritmo "luar do sertao_41"
Var
  alunos                            : vetor[1..10,1..2] de caractere
  materias                          : vetor[1..8      ] de caractere
  nota,  nota1, nota2, n1, n2       : real
  mediat,mediad,media, maior, menor : real
  log_alun, log_dis, log_nota       : logico
  aprovado, reprovado, final        : inteiro
  rep,cont_nota, cont_dis ,i        : inteiro
  cont_fil, cont_his, cont_qui      : inteiro
  cont_mat, cont_por, cont_geo      : inteiro
  opc_dis, opc_rep, opc_nota        : inteiro
  rep_disc,somamedia,naluno, ndis   : inteiro
  disciplina                        : caractere
Inicio
  // as variaveis sao Globais , assim não precisa inicializar Quando o
  // valor delas forem zero ou falso , pois assim foram criadas e inicializadas
  // pelo compilador e as Logicas com valor falso ou zero tambem
  escreval("essas variaveis antes de inicialiZadas")
  escreval
  escreval("valor de ndis ------: " , ndis     )
  escreval("valor de final -----: " , final    )
  escreval("valor de Menor -----: " , menor    )
  escreval("valor de Naluno ----: " , naluno   )
  escreval("valor de aprovadio -: " , aprovado )
  escreval("valor de cont_nota -: " , cont_nota)
  escreval("valor de Reprovado -: " , reprovado)
  escreval("valor de log_dis ---: " , log_dis  )
  escreval("valor de log_nota --: " , log_nota )
  escreval("valor de log_alun --: " , log_alun )
  escreval
  log_nota := verdadeiro
  log_alun <- verdadeiro // esse simBole "<-" eh iGual a essE ":="
  log_dis  := verdadeiro
  escreval("essas logicas depois de iniciali|adas")
  escreval
  escreval("valor de log_dis ---: " , log_dis  )
  escreval("valor de log_nota --: " , log_nota )
  escreval("valor de log_alun --: " , log_alun )
  escreval

  // cont_nota := 0
  // Naluno    := 0
  // Ndis      := 0
  // aprovado  := 0
  // reprovado := 0
  // final     := 0
  // menor     := 0
  
  materias[1] := "--------------------"     // armazenar no vetor de carecter
  materias[2] := " 1 - matemática     "     // um em cada posicao
  materias[3] := " 2 - portugues      "
  materias[4] := " 3 - geografia      "
  materias[5] := " 4 - Filosofia      "
  materias[6] := " 5 - historia       "
  materias[7] := " 6 - quimica        "
  materias[8] := "--------------------"
  enquanto log_nota faca                    // precisa de "fimenquanto"
    cont_nota := cont_nota + 1
    escreva ("Informe o nome do aluno: ")
    leia( nota )
    repita                                  // precisa de "ate"
      cont_dis := cont_dis + 1
      
      // escreval ("--------------------")
      // escreval ("1-matemática        ")
      // escreval ("2-portugues         ")
      // escreval ("3-geografia         ")
      // escreval ("4-Filosofia         ")
      // escreval ("5-historia          ")
      // escreval ("6-quimica           ")
      // escreval ("--------------------")
      
      para i de 1 ate 8 faca            // escreveRe o Menu
        escreval( materias [ i ] )      // escreve as Disciplinas
      fimpara                           // "para / fimpara" sao colegas
    
      escreva("Informe qual a disciplina: ")
      leia( opc_dis )
      escolha opc_dis
      caso 1
        disciplina := "Matemática"
        cont_mat := cont_mat            // isso aqui não faz naDa
      caso 2
        disciplina := "PortuGuês"
        cont_por := cont_por            // perda de tempo
      caso 3
        disciplina := "Geografia"
        cont_geo := cont_geo            // para quê
      caso 4
        disciplina := "Filosofica"
        cont_fil := cont_fil            // já tem esse valor
      caso 5
        disciplina := "História"
        cont_his := cont_his
      caso 6
        disciplina := "Química"
        cont_qui := cont_qui            // nem precisava
      fimescolha
      escreval("SISTEMA DE MÉDIAS")
      escreva("DIGITE A PRIMEIRA NOTA: ")
      leia(n1)
      escreva("DIGITE A SEGUNDA NOTA: ")
      leia(n2)
      media <- (n1 + n2 ) / 2
      escreval("Aluno -------: " , nota      )
      escreval("Disciplina --: " , disciplina)
      se media >= 7 entao
        escreval("ALUNO APROVADO!")
      senao
        se media <= 3 entao
          escreval("ALUNO REPROVADO!")
        senao
          se media <= 5 entao
            escreval("ALUNO EM RECUPERAÇÃO...")
          fimse
        fimse
      fimse
      se n1 > n2 entao
        maior := n1
      senao
        se n1 < n2 entao
          menor := n1
        se n2 > n1 entao
          maior := n2
        senao
          se N2 < N1 entao
            menor := n2
          fimse
        fimse
      fimse
      escreval
      escreval("A média do(a) aluno(a) é ------: " , media)
      escreval("A maior nota do(a) aluno(a) é -: " , maior)
      escreval("A menor nota do(a) aluno(a) é -: " , menor)
      se naluno = 0 entao
        escreval("não eh possível dividir por zero !")
      senao
        mediad := somamedia / naluno  // não eh possível dividir por zero !
      fimse
      se media >= 0 entao             // uma só comparacao, não precia de parenteses
        somamedia :=  media + somamedia
      fimse
      mediat := somamedia / ( Naluno * ndis ) // não eh possível dividir por zero !
      escreva("Deseja informar outro aluno? (1-Sim ou 2-Não)")
      leia( opc_nota )
      se opc_nota = 2 entao
        log_nota := falso
      fimse
      escreval
      escreval("-----------   DISCIPLINA: ",caso,"   ----------" )
      escreval("-   QUANTIDADE TOTAL DE ALUNOS ---: " , Naluno   )
      escreval("-   MÉDIA GERAL DA DISCIPLINA ----: " , mediaD   )
      escreval("-   MAIOR MÉDIA DA DISCIPLINA ----: " , maior    )
      escreval("-   MENOR MÉDIA DA DISCIPLINA ----: " , menor    )
      escreval("-   QUANTIDADE ALUNOS REPROVADOS -: " , reprovado)
      screval("-    QUANTIDADE ALUNOS NA FINAL ---: " , final    )
      escreval("-   QUANTIDADE ALUNOS APROVADOS --: " , aprovado )
      escreval
      // maior := maior - maior | isso vai fazer igual a zero
      // menor := menor - menor | isso tambem , pra quê ? ?
      maior     <- 0
      menor     := 0
      somamedia := -1
      somamedia := somamedia + 1
      aprovado  := -1
      aprovado  := aprovado + 1
      reprovado := -1
      reprovado := reprovado + 1
      final     := -1
      final     := final + 1
      Naluno    := -1
      Naluno    := Naluno + 1
      escreva("Deseja informar outra disciplina? (1-Sim ou 2-Não): ")
      leia( opc_rep )
    ate opc_resp = 2
  fimenquanto
Fimalgoritmo

 

  • Obrigado 1
  • Membro VIP
Postado

@Lauro Viana, uma sugestão seria: "tente deixar sempre a base da estrutura pronta". Exemplo:

 

Var
   aprovado, reprovado, final: inteiro
   media, maior, menor: real
   cont_nota, cont_dis : inteiro
   cont_mat, cont_por, cont_geo, cont_fil, cont_his, cont_qui : inteiro
   opc_dis, opc_rep, opc_nota : inteiro
   rep, rep_disc: inteiro
   mediaD, mediaT:real
   Naluno, Ndis:inteiro
   somamedia:inteiro
   log_alun, log_dis, log_nota : logico
   nota, nota1, nota2, N1, N2: real

inicio
   cont_nota := 0
   log_nota := verdadeiro
   log_alun := verdadeiro
   log_dis := verdadeiro
   Naluno := 0
   Ndis := 0
   aprovado:=0
   reprovado:=0
   final:=0
   menor:= 0

   enquanto log_nota faca
      cont_nota := cont_nota + 1
      escreva ("Informe o nome do aluno: ")
      leia (nota)

      repita
         cont_dis := cont_dis + 1 //essa linha seria digitada APÓS já ter o até


      ate (XPTO) //Ao criar repita, já defina o seu até
   fimEnquanto (XPTO) //Ao criar o enquanto, já defina o seu fimEnquanto
fimAlgoritmo

 


Adendo: XPTO seria apenas uma representação genérica. No lugar, no teu código, teria a sentença adequada.

Adendo 2: a ideia é que sempre o teu código esteja compilável (não confundir com pronto). Tudo que vai inserindo, já vai (sintaticamente) está pronto. Daí só vai crescendo... e evitando esquecer, por exemplo, "fechar" algo. Lembrando que o VisuaG NÃO COMPILA código... ou seja, só vai ver os erros em tempo de execução.

  • Obrigado 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!