Ir ao conteúdo
  • Cadastre-se

VisualG Teste de Introdução a computação


Posts recomendados

Olá pessoal, estou com bastante dificuldade em resolver uma questão, e gostaria de saber se alguém poderia me ajudar com isso. Consegui escrever algumas linhas de codigo, mas realmente nao sei como proceder com esse programa. Segue a pergunta:

TAREFA PRÁTICA 2 (Variáveis Simples, Estrutras Lógicas de seleção e repetição)

Considere a sua turma da disciplina de Introdução à Ciência da Computação que você faz parte. Use para os dados de entrada, para cada aluno: a sua matricula M (inteiro) e as notas das provas P1  (real) e P2 (real).  Suponha que existam 5 tarefas práticas TP1, ...., TP5. Entre com as notas das tarefas práticas TP1, ... TP5.  Para confirmar o que digitou, escreva as mensagens e as notas de entrada. 
 Faça algoritmo que:

a) Leia o número N de alunos da turma. N deve ser fornecido via teclado. Suponha um valor de N inteiro. O algoritmo deve verificar se o aluno foi aprovado ou reprovado.

 

b)   Considere a média aritmética ponderada das provas de cada aluno:  MP = ( P1  +  P2 )/2. 
Considere que  a média das tarefas práticas é MT = (0.20*TP1 + ... + 0.20*TP5), supondo 5 tarefas práticas.  
A média final MF = (0.4*MP + 0.6*MT)/2.0.  

Se  9.0 <= MF <= 10.0, então, o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escreva MF. 
 
Se  7.5 <= MF < 9.0, então, o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escreva MF. 

Se  6.0 <=  MF < 7.5,  o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escrva MF.

Se  3.0 <= MF < 6.0 então o algoritmo deve escrever uma mensagem "ALUNO EM RECUPERAÇÂO". 
O aluno deverá fazer outra prova para recuperação, Obtendo uma nota NR. Entre com esta nota NR, e a nota final será calculada como  MF = (MP + NR)/2.  Se 0.0 <= MF < 6.0, então, o algoritmo deve escrever uma mensagem "ALUNO REPROVADO".

Se 0.0 <= MF < 3.0, então, o algoritmo deve escrever uma mensagem "ALUNO REPROVADO".  

 

c)  O algoritmo deve fornecer ao final, a média aritmética MEDFINAL das notas MF dos alunos da turma. Deve escrever a mensagem identificando a média da turma, "A MEDIA DA TURMA É =  " .

Segue o que eu consegui escrever até agora:

Var
// Seção de Declarações das variáveis 
   N: Inteiro
   p1, p2, TP1, TP2, TP3, MP, MT, MF, SomaMF: Real
   Flag: Real

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
   leia(N)
   leia(p1, p2, TP1, TP2, TP3)
   MP <- ((p1 + p2)/2)
   MT <- ((0.20 * TP1) + (0.20 * TP2) + (0.20 * TP3))
   MF <- (((0.4 * MP) + (0.6 * MT)) / 2)
   Se (9 <= MF)
      escreval("Aluno conceito A ")
   fimse

   Se então
      escreval("Aluno conceito B ")
   fimse
 Fimalgoritmo

 

Aguardo a resposta de alguém e agradeço desde já.

 

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @kadafimatatu. Seja bem vindo ao Fórum do Clube do Hardware.

 

Sugiro que faça o programa por etapas... Por exemplo, poderia dividir mais ou menos assim:

  • coletar dados dos alunos; (código abaixo)
  • calcular as médias (que também podem ser subdivididas em 3)
  1. média prova
  2. média tarefas práticas
  3. média final
  • verificar se foi aprovado e exibir a resposta correspondente. (destrincha essa etapa posteriormente)

No exercício está solicitando N alunos, mas para facilitar os testes, faça apenas para um.

 

Segue um esboço:

Algoritmo "FCdH"
//TAREFA PRÁTICA 2 (Variáveis Simples, Estrutras Lógicas de seleção e
//repetição)

//Considere a sua turma da disciplina de Introdução à Ciência da Computação que
//você faz parte. Use para os dados de entrada, para cada aluno: a sua
//matricula M (inteiro) e as notas das provas P1 (real) e P2 (real).

//Suponha que existam 5 tarefas práticas TP1, ...., TP5. Entre com as notas das
//tarefas práticas TP1, ... TP5. Para confirmar o que digitou, escreva as
//mensagens e as notas de entrada. Faça algoritmo que:

//a) Leia o número N de alunos da turma. N deve ser fornecido via teclado.
//Suponha um valor de N inteiro. O algoritmo deve verificar se o aluno foi
//aprovado ou reprovado.

//b) Considere a média aritmética ponderada das provas de cada aluno:
//MP = ( P1  +  P2 )/2.

//Considere que a média das tarefas práticas é
//MT = (0.20*TP1 + ... + 0.20*TP5) supondo 5 tarefas práticas.

//A média final MF = (0.4*MP + 0.6*MT)/2.0.

//Se  9.0 <= MF <= 10.0, então, o algoritmo deve escrever uma mensagem
//"ALUNO APROVADO". Escreva MF.

//Se  7.5 <= MF < 9.0, então, o algoritmo deve escrever uma mensagem
// "ALUNO APROVADO". Escreva MF.

//Se  6.0 <=  MF < 7.5,  o algoritmo deve escrever uma mensagem
// "ALUNO APROVADO". Escrva MF.

//Se  3.0 <= MF < 6.0 então o algoritmo deve escrever uma mensagem
// "ALUNO EM RECUPERAÇÂO".

//O aluno deverá fazer outra prova para recuperação, Obtendo uma nota NR.

//Entre com esta nota NR, e a nota final será calculada como  MF = (MP + NR)/2.

//Se 0.0 <= MF < 6.0, então, o algoritmo deve escrever uma mensagem
//"ALUNO REPROVADO".

//Se 0.0 <= MF < 3.0, então, o algoritmo deve escrever uma mensagem
//"ALUNO REPROVADO".

//c) O algoritmo deve fornecer ao final, a média aritmética MEDFINAL das notas
//MF dos alunos da turma. Deve escrever a mensagem identificando a média da turma, "A MEDIA DA TURMA É =  " .

Var
   N :inteiro //números de alunos
   M :inteiro //número da matrícula do aluno
   p1, p2 :real //notas da prova do aluno
   tp1, tp2, tp3, tp4, tp5 :real //tarefas práticas dos alunos

Inicio
   {INICIALMENTE VAMOS TESTAR APENAS PARA UM ALUNO... (SE FUNCIONA COM UM,}
   {AI FUNCIONAR COM "N")}
   //escreval("Informa o número de alunos")
   //leia(N)
   ALEATORIO 4,10 //gera números aleatórios de "A" a "B"
   escreval("Notas Aluno 1")
   escreva ("Prova 1: ")
   leia(p1)
   escreva ("Prova 2: ")
   leia(p2)
   escreva ("Tarefa prática 1: ")
   leia(tp1)
   escreva ("Tarefa prática 2: ")
   leia(tp2)
   escreva ("Tarefa prática 3: ")
   leia(tp3)
   escreva ("Tarefa prática 4: ")
   leia(tp4)
   escreva ("Tarefa prática 5: ")
   leia(tp5)
   ALEATORIO OFF

   
   


   

Fimalgoritmo

 

A partir daí, insira a etapa de calcular a média da prova e exiba elas. Faz alguns testes para ver se os resultados estão batendo... Ai posta o código aqui.

 

Após insira a etapa de calcular a média dos TP e exiba elas. Faz alguns testes para ver se os resultados estão batendo... Ai posta o código aqui.

 

Após, insere a terceira.....

 

Por ai vai.

 

Veja, não tente fazer tudo de uma vez. Pois se uma etapa anterior não estiver funcionando bem, as outras também podem não funcionar.. e é muito mais difícil ajustar tudo de uma vez.. melhor por etapas.

 

No aguardo.

 

  • Curtir 2
  • Amei 1
Link para o comentário
Compartilhar em outros sites

nossa obrigado de verdade por me responder, e realmente foi de ajuda. Como dito, segue abaixo o que escrevi para as médias do aluno:

Algoritmo "semnome"

Var
// Seção de Declarações das variáveis 
   N: Inteiro
   M: Inteiro
   P1, P2: Real
   TP1, TP2, TP3, TP4, TP5: Real
   MP, MT, MF: Real
   
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
   Escreval("Informe o número de alunos:")
   Leia(N)
   ALEATORIO 4,10
   Escreval("Notas do aluno 1: ")
   Escreva("Prova 1: ")
   leia(P1)
   escreva("Prova 2: ")
   leia(P2)
   escreva("Tarefa prática 1: ")
   leia(TP1)
   escreva("Tarefa prática 2: ")
   leia(TP2)
   escreva("Tarefa prática 3: ")
   leia(TP3)
   escreva("Tarefa prática 4: ")
   leia(TP4)
   escreva("Tarefa prática 5: ")
   leia(TP5)
   ALEATORIO OFF
   MP <- ((P1 + P2) / 2)
   escreval("Média aritmética: ", MP)
   MT <- ((TP1 * 0.20) + (TP2 * 0.20) + (TP3 * 0.20) + (TP4 * 0.20) + (TP5 * 0.20))
   escreval("Média das tarefas praticas: ", MT)
   MF <- ((MP * 0.40) + (MT * 0.60))
   escreval("Média final: ", MF)
   
Fimalgoritmo

 

bem, funcionou bem, se tiveres outra sugestão ficaria muito agradecido se compartilhasse . Agora vou escrever a parte dos "aluno provado ou reprovado". Aguardo sua resposta.

 
adicionado 42 minutos depois

Olá, eu consegui calcular as aprovações e reprovações do aluno, assim como, sua recuperação e com que tudo isso fosse escrito no CMD. Acredito que so falta fazer com que o programa faça isso pra uma turma de N aluno e que no final calcule a média da turma com N alunos e escreva essa nota no CMD. Bem a parte de fazer com uma turma inteiro com sistema de repetições é que me assusta mais, se pudesse me dar uma sugestão ficaria agradecito. Segue o que escrevi até agora:

Algoritmo "semnome"

Var
// Seção de Declarações das variáveis 
   N: Inteiro
   M: Inteiro
   P1, P2: Real
   TP1, TP2, TP3, TP4, TP5: Real
   MP, MT, MF, NR: Real
   
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
   Escreval("Informe o número de alunos:")
   Leia(N)
   ALEATORIO 0,10
   Escreval("Notas do aluno 1: ")
   Escreva("Prova 1: ")
   leia(P1)
   escreva("Prova 2: ")
   leia(P2)
   escreva("Tarefa prática 1: ")
   leia(TP1)
   escreva("Tarefa prática 2: ")
   leia(TP2)
   escreva("Tarefa prática 3: ")
   leia(TP3)
   escreva("Tarefa prática 4: ")
   leia(TP4)
   escreva("Tarefa prática 5: ")
   leia(TP5)
   ALEATORIO OFF
   MP <- ((P1 + P2) / 2)
   escreval("Média aritmética: ", MP)
   MT <- ((TP1 * 0.20) + (TP2 * 0.20) + (TP3 * 0.20) + (TP4 * 0.20) + (TP5 * 0.20))
   escreval("Média das tarefas praticas: ", MT)
   MF <- ((MP * 0.40) + (MT * 0.60))
   escreval("Média final: ", MF)
   se (MF >= 9.0) e (MF <= 10.0) então
      Escreval("Aluno aprovado ")
   fimse
   se (MF >= 7.5) e (MF < 9.0) então
      Escreval("Aluno aprovado ")
   fimse
   se (MF >= 6.0) e (MF < 7.0) então
      Escreval("Aluno aprovado ")
   fimse
   se (MF >= 3.0) e (MF <= 6.0) então
      Escreval("Aluno em recupeção ")
      Escreval("Nota da recuperação: ")
      leia(NR)
      MF <- ((MP + NR) / 2)
      se (MF >= 0.0) e (MF < 6.0) então
         Escreval("Aluno reprovado")
      fimse
   fimse
   se (MF >= 0.0) e (MF <= 3.0) então
      Escreval("Aluno reprovado")
   fimse

Fimalgoritmo

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

olá, agradeço muito pela sua ajuda de verdade, pude evoluir muito com suas dias e seu esboço e acredito que o programa está terminado. Gostaria que você avaliasse e desse alguma sugestão de algo a melhorar se necessário. Tenho apenas uma última pergunta, como eu faria isso para 3 Turmas distintas e usando o Flag? 

Segue o programa realizado:

Algoritmo "Média de uma turma"

Var
// Seção de Declarações das variáveis 
   N: Inteiro
   M: Inteiro
   contador: Inteiro
   P1, P2: Real
   TP1, TP2, TP3, TP4, TP5: Real
   MP, MT, MF, NR: Real
   somaTurma, medTurma: Real
   
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
   contador <- 0
   Escreval("Informe o número de alunos:")
   Leia(N)
   enquanto (contador <= N) faca
      Escreval("Matrícula do aluno: ")
      leia(M)
      ALEATORIO 3,10
      Escreval("Notas do aluno: ", M)
      Escreva("Prova 1: ")
      leia(P1)
      escreva("Prova 2: ")
      leia(P2)
      escreva("Tarefa prática 1: ")
      leia(TP1)
      escreva("Tarefa prática 2: ")
      leia(TP2)
      escreva("Tarefa prática 3: ")
      leia(TP3)
      escreva("Tarefa prática 4: ")
      leia(TP4)
      escreva("Tarefa prática 5: ")
      leia(TP5)
      ALEATORIO OFF
      MP <- ((P1 + P2) / 2)
      escreval("Média aritmética: ", MP)
      MT <- ((TP1 * 0.20) + (TP2 * 0.20) + (TP3 * 0.20) + (TP4 * 0.20) + (TP5 * 0.20))
      escreval("Média das tarefas praticas: ", MT)
      MF <- ((MP * 0.40) + (MT * 0.60))
      escreval("Média final: ", MF)
      se (MF >= 9.0) e (MF <= 10.0) então
         Escreval("Aluno aprovado ")
      fimse
      se (MF >= 7.5) e (MF < 9.0) então
         Escreval("Aluno aprovado ")
      fimse
      se (MF >= 6.0) e (MF < 7.0) então
         Escreval("Aluno aprovado ")
      fimse
      se (MF >= 3.0) e (MF <= 6.0) então
         Escreval("Aluno em recupeção ")
         Escreval("Nota da recuperação: ")
         leia(NR)
         MF <- ((MP + NR) / 2)
         Escreval("Média final: ", MF)
         se (MF >= 0.0) e (MF < 6.0) então
            Escreval("Aluno reprovado")
         fimse
      fimse
      se (MF >= 0.0) e (MF <= 3.0) então
         Escreval("Aluno reprovado")
      fimse
      contador <- contador + 1
      somaTurma <- (MF + somaTurma)
      medTurma <- (somaTurma / contador)
   fimenquanto
   escreval("A média da Turma é: ", medTurma)

Fimalgoritmo

 

Aguardo a resposta.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @kadafimatatu.

 

1) FAIXA DAS MÉDIAS

Faixas estipuladas pelo enunciado:

6 horas atrás, kadafimatatu disse:

//Se  9.0 <= MF <= 10.0, então, o algoritmo deve escrever uma mensagem
//"ALUNO APROVADO". Escreva MF.

//Se  7.5 <= MF < 9.0, então, o algoritmo deve escrever uma mensagem
// "ALUNO APROVADO". Escreva MF.

//Se  6.0 <=  MF < 7.5,  o algoritmo deve escrever uma mensagem
// "ALUNO APROVADO". Escrva MF.

//Se  3.0 <= MF < 6.0 então o algoritmo deve escrever uma mensagem
// "ALUNO EM RECUPERAÇÂO".

//O aluno deverá fazer outra prova para recuperação, Obtendo uma nota NR.

//Entre com esta nota NR, e a nota final será calculada como  MF = (MP + NR)/2.

//Se 0.0 <= MF < 6.0, então, o algoritmo deve escrever uma mensagem
//"ALUNO REPROVADO".

//Se 0.0 <= MF < 3.0, então, o algoritmo deve escrever uma mensagem
//"ALUNO REPROVADO".

 

Faixas usadas no algoritmo

      se (MF >= 9.0) e (MF <= 10.0) então //OK

      se (MF >= 7.5) e (MF < 9.0)   então //OK

      se (MF >= 6.0) e (MF < 7.0)   então //divergente

      se (MF >= 3.0) e (MF <= 6.0)  então //divergente

                                          //faltou o 0.0<= MF < 6.0

      se (MF >= 0.0) e (MF <= 3.0)  então //divergente

 

 

 

2) CONTADO DE ALUNOS

Pelo testes aqui, seu código está dando um loop a mais.  Para corrigir, poderia fazer algo assim:

   contador <- 0
   ...
   {enquanto (contador <= N) faca} //se começa com será, tem que ir de 0 a N-1
   enquanto (contador < N) faca
      contador <- contador + 1
      Escreva ("Matrícula do aluno",contador,": ")

 

ou

 

   contador <- 1
   ...
   enquanto (contador <= N) faca
     
     
      ...
      contador <- contador + 1

 

 

 

3) ESCOPO DO ENUNCIADO

7 horas atrás, kadafimatatu disse:

Tenho apenas uma última pergunta, como eu faria isso para 3 Turmas distintas e usando o Flag? 

 

Veja:

Em 24/03/2018 às 16:07, kadafimatatu disse:

Considere a sua turma da disciplina de Introdução à Ciência da Computação que você faz parte.

Pelo que eu entendi, é para tratar apenas uma turma mesmo, ou seja, essa possibilidade até poderá ser verificada, mas não para essa tarefa. Ou, poderia inicialmente de limitar ao enunciado... deixar tudo redondo.. ai, após, faz uma cópia e tenta fazer para mais de uma turma.. ai poderia entregar as duas estruturas, sendo que a com uma turma, teoricamente, é a mais correta.

 

 

***

 

Tente fazer esses pequenos ajustes. Faça novos testes, inclusive com notas digitadas manualmente (desabilitando o ALEATORIO - basta inserir "//" antes deles.)

 

Ai posta o código aqui para reanalisarmos.

 

obs.: a sugestão é que na hora de entregar esse recurso do ALEATORIO esteja apagado ou desabilitado, ou seja, ele servirá basicamente para o ambiente de testes. Caso ache viável, poderia utilizar o recurso também, caso o "seu avaliador" permita, na hora de apresentar.

 

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

olá, agradeço de verdade por me ajudar. Na verdade eu acabei não esclarecendo, mas calcular esse processo para 3 turmas e posteriormente calcular a média total com a média dessas 3 turmas faz parte de uma continuação da primeira tarefa:

   Continuação da TAREFA 1. 
 
                     (a) Inserir a programação dos conceitos e da média das notas MF da turma. 

                     (b) Considerar e programar para 3 turmas existentes, usando FLAG para turma e um FLAG para alunos processados. 

 Por isso fiz o questionamento sobre as 3 turmas. Peço desculpas por não ter dito antes, mas se fosse possivel, gostaria de uma ajuda, pois mais uma vez to batendo cabeça com isso rsrsrs. 

Sobre o que foi sugerido anteriormente:

4 horas atrás, Simon Viegas disse:

//faltou o 0.0<= MF < 6.0

na verdade ja está inserido, pois há uma distinção entre os alunos que estão na faixa de 0.0<=MF<3.0 e os alunos que estão nessa faixa de 3.0<=MF<6.0.

Sobre a continuação da TAREFA 1: 

Eu consegui escrever essas linhas, usando o comando repita, mas eu acabo caindo em uma especie de loop e ele nao reproduz a média de cada turma. Segue o que escrevi:

Algoritmo "semnome"

Var
// Seção de Declarações das variáveis 
   N: Inteiro
   M: Inteiro
   contador: Inteiro
   P1, P2: Real
   TP1, TP2, TP3, TP4, TP5: Real
   MP, MT, MF, NR: Real
   somaTurma, medTurma: Real
   
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
   contador <- 0
   Escreval("Informe o número de alunos:")
   Leia(N)
   enquanto (contador < N) faca
      Escreval("Matrícula do aluno: ")
      leia(M)
      Escreval("Notas do aluno ", M,":")
      Escreva("Prova 1: ")
      leia(P1)
      escreva("Prova 2: ")
      leia(P2)
      escreva("Tarefa prática 1: ")
      leia(TP1)
      escreva("Tarefa prática 2: ")
      leia(TP2)
      escreva("Tarefa prática 3: ")
      leia(TP3)
      escreva("Tarefa prática 4: ")
      leia(TP4)
      escreva("Tarefa prática 5: ")
      leia(TP5)
      MP <- ((P1 + P2) / 2)
      escreval("Média aritmética: ", MP)
      MT <- ((TP1 * 0.20) + (TP2 * 0.20) + (TP3 * 0.20) + (TP4 * 0.20) + (TP5 * 0.20))
      escreval("Média das tarefas praticas: ", MT)
      MF <- ((MP * 0.40) + (MT * 0.60))
      escreval("Média final: ", MF)
      se (MF >= 9.0) e (MF <= 10.0) então
         Escreval("Aluno aprovado ")
      fimse
      se (MF >= 7.5) e (MF < 9.0) então
         Escreval("Aluno aprovado ")
      fimse
      se (MF >= 6.0) e (MF < 7.0) então
         Escreval("Aluno aprovado ")
      fimse
      se (MF >= 3.0) e (MF <= 6.0) então
         Escreval("Aluno em recupeção ")
         Escreval("Nota da recuperação: ")
         leia(NR)
         MF <- ((MP + NR) / 2)
         Escreval("Média final: ", MF)
         se (MF >= 0.0) e (MF < 6.0) então
            Escreval("Aluno reprovado")
         fimse
      fimse
      se (MF >= 0.0) e (MF <= 3.0) então
         Escreval("Aluno reprovado")
      fimse
      contador <- contador + 1
      somaTurma <- (MF + somaTurma)
      medTurma <- (somaTurma / contador)
   fimenquanto
   escreval("A média da Turma é: ", medTurma)

Fimalgoritmo
Algoritmo "semnome"


Var
// Seção de Declarações das variáveis 
   N: Inteiro
   M: Inteiro
   contador, soma: Inteiro
   P1, P2: Real
   TP1, TP2, TP3, TP4, TP5: Real
   MP, MT, MF, NR: Real
   somaTurma, medTurma, medTurmas, numTurma, somaTurmas: Real
   resp: caractere
   
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
   contador <- 0
   soma <- 0
   Repita
      Escreval("Informa o número da turma:")
      leia(numTurma)
      Escreval("Informe o número de alunos:")
      Leia(N)
      enquanto (contador < N) faca
         Escreval("Matrícula do aluno: ")
         leia(M)
         Escreval("Notas do aluno ", M, ":")
         Escreva("Prova 1: ")
         leia(P1)
         escreva("Prova 2: ")
         leia(P2)
         escreva("Tarefa prática 1: ")
         leia(TP1)
         escreva("Tarefa prática 2: ")
         leia(TP2)
         escreva("Tarefa prática 3: ")
         leia(TP3)
         escreva("Tarefa prática 4: ")
         leia(TP4)
         escreva("Tarefa prática 5: ")
         leia(TP5)
         MP <- ((P1 + P2) / 2)
         escreval("Média aritmética: ", MP)
         MT <- ((TP1 * 0.20) + (TP2 * 0.20) + (TP3 * 0.20) + (TP4 * 0.20) + (TP5 * 0.20))
         escreval("Média das tarefas praticas: ", MT)
         MF <- ((MP * 0.40) + (MT * 0.60))
         escreval("Média final: ", MF)
         se (MF >= 9.0) e (MF <= 10.0) então
            Escreval("Aluno aprovado ")
         fimse
         se (MF >= 7.5) e (MF < 9.0) então
            Escreval("Aluno aprovado ")
         fimse
         se (MF >= 6.0) e (MF < 7.0) então
            Escreval("Aluno aprovado ")
         fimse
         se (MF >= 3.0) e (MF <= 6.0) então
            Escreval("Aluno em recupeção ")
            Escreval("Nota da recuperação: ")
            leia(NR)
            MF <- ((MP + NR) / 2)
            Escreval("Média final: ", MF)
            se (MF >= 0.0) e (MF < 6.0) então
               Escreval("Aluno reprovado")
            fimse
         fimse
         se (MF >= 0.0) e (MF <= 3.0) então
            Escreval("Aluno reprovado")
         fimse
         contador <- contador + 1
         somaTurma <- (MF + somaTurma)
         medTurma <- (somaTurma / contador)
      fimenquanto
      escreval("A média da Turma", numTurma, " é: ", medTurma)
      Escreva("Você deseja continuar? [S/N]: ")
      leia(resp)
   ate (resp = "N")
   soma <- soma + 1
   somaTurmas <- (medTurma + somaTurmas)
   medTurmas <- (somaTumas / soma)
   Escreval("A média das Tumas é: ", medTurmas)
Fimalgoritmo

 

Aguardo sua resposta, e agradeço desde já.

Link para o comentário
Compartilhar em outros sites

Boa tarde, kadafimatatu

 

Pelo que andei lendo do tópico, perguntas e respostas, acredito para sua última dúvida, em relação às turmas, consigo pensar em uma solução utilizando uma matriz. Você conhece esse conceito? Onde cada linha da matriz, com suas respectivas colunas, representariam uma turma. Para que não haja divergências no tamanho das colunas, pois uma turma pode ter mais alunos que outra turma, sugiro que você armazene nesse array apenas os valores que serão comuns, no caso a soma da turma e a média final (seguindo o padrão de lógica do seu código). Basicamente você validaria as notas uma por uma, porém só armazenaria no array os valores que são comuns para todas as turmas, a média final e soma da turma.

 

Acredito que não alteraria muito a sua lógica, só seria necessário utilizar um laço de repetição para validar a quantidade de alunos por turma e somar os valores nos índices correto.

 

Qualquer dúvida, só comentar aí que tentamos te dar uma luz.

 

Abraços e bons estudo!

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @kadafimatatu.

 

Por por favor, poste o enunciado completo. Ele é a base de tudo. Agora mesmo fiquei com dúvidas em como calcular as médias... (deixei como está)

 

 

 

Mas vamos lá:

1 hora atrás, kadafimatatu disse:

Eu consegui escrever essas linhas, usando o comando repita, mas eu acabo caindo em uma especie de loop e ele nao reproduz a média de cada turma. Segue o que escrevi:

Foi um erro simples de digitação... escreveu somaTumas em vez de somaTurmas.

 

Abaixo seque um código com algumas correções. Dê uma analisada e continuidade.

Algoritmo "semnome"
Var
   N: Inteiro
   M: Inteiro
   contador, soma: Inteiro
   P1, P2: Real
   TP1, TP2, TP3, TP4, TP5: Real
   MP, MT, MF, NR: Real
   somaTurma, medTurma, medTurmas, numTurma, somaTurmas: Real
   resp: caractere

Inicio
   {contador <- 0} //está no lugar errado
   soma <- 0
   Repita
      escreval("Informa o número da turma:")
      leia(numTurma)
      escreval("Informe o número de alunos:")
      Leia(N)
      contador <- 0
      enquanto (contador < N) faca
         contador <- contador + 1 //se começa com 0, melhor atualizar no início
         ALEATORIO 3,10
         escreval("Matrícula do aluno: ")
         leia(M)
         {escreval("Notas do aluno ", M, ":")} //remover espaço após "aluno"
         escreval("Notas do aluno",M,":") //esses espaços após a vírgula tb não são necessário, mas vai do gosto
         escreva ("Prova 1: ")
         leia(P1)
         escreva ("Prova 2: ")
         leia(P2)
         escreva ("Tarefa prática 1: ")
         leia(TP1)
         escreva ("Tarefa prática 2: ")
         leia(TP2)
         escreva ("Tarefa prática 3: ")
         leia(TP3)
         escreva ("Tarefa prática 4: ")
         leia(TP4)
         escreva ("Tarefa prática 5: ")
         leia(TP5)
         ALEATORIO OFF

         MP <- ((P1 + P2) / 2)
         {escreval("Média aritmética: ", MP)}
         escreval("Média aritmética:", MP)

         MT <- ((TP1 * 0.20) + (TP2 * 0.20) + (TP3 * 0.20) + (TP4 * 0.20) + (TP5 * 0.20))
         {escreval("Média das tarefas praticas: ", MT)}
         escreval("Média das tarefas praticas:", MT)

         MF <- ((MP * 0.40) + (MT * 0.60))
         {escreval("Média final: ", MF)}
         escreval("Média final:", MF)

         se (MF >= 9.0) e (MF <= 10.0) ENTÃO
            escreval("Aluno aprovado ")
         fimse
         se (MF >= 7.5) e (MF < 9.0) ENTÃO
            escreval("Aluno aprovado ")
         fimse
         {se (MF >= 6.0) e (MF < 7.0)} ENTÃO //continuou errado
         se (MF >= 6.0) e (MF < 7.5) ENTÃO
            escreval("Aluno aprovado ")
         fimse
         {se (MF >= 3.0) e (MF <= 6.0) ENTÃO}
         se (MF >= 3.0) e (MF < 6.0) ENTÃO //também continuou errado
            escreval("Aluno em recupeção ")
            escreval("Nota da recuperação: ")
            leia(NR)
            MF <- ((MP + NR) / 2)
            escreval("Média final: ", MF)
            se (MF >= 0.0) e (MF < 6.0) ENTÃO
               escreval("Aluno reprovado")
            fimse
         fimse
         {se (MF >= 0.0) e (MF <= 3.0) ENTÃO} //também continuou errado
         se (MF >= 0.0) e (MF < 3.0) ENTÃO
            escreval("Aluno reprovado")
         fimse
         somaTurma <- (MF + somaTurma)
         medTurma <- (somaTurma / contador)
      fimenquanto
      {escreval("A média da Turma", numTurma, " é: ", medTurma)}
      escreval("A média da Turma", numTurma, " é:", medTurma)
      escreva ("Você deseja continuar? [S/N]: ")
      leia(resp)
   ate (resp = "N")
   soma <- soma + 1
   somaTurmas <- (medTurma + somaTurmas)
   {medTurmas <- (somaTumas / soma)} //o correto é somaTurmas
   medTurmas <- (somaTurmas / soma)
   {escreval("A média das Tumas é: ", medTurmas)}
   escreval("A média das Tumas é:", medTurmas)
Fimalgoritmo

 

 

No aguardo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Peço desculpas, realmente não conseguir esclarecer as coisas. Na verdade são duas tarefas, no qual, a primeira consiste no que perguntei no tópico, e a outra diz respeito a uma evolução disso. Vou publicar aqui as duas tarefas na íntegra. Segue as tarefas:

TAREFA PRÁTICA 1 (Variáveis Simples, Estrutras Lógicas de seleção e repetição)    

Considere a sua turma da disciplina de Introdução à Ciência da Computação que você faz parte. Use para os dados de entrada, para cada aluno: a sua matricula M (inteiro) e as notas das provas P1  (real) e P2 (real).  Suponha que existam 5 tarefas práticas TP1, ...., TP5. Entre com as notas das tarefas práticas TP1, ... TP5.  Para confirmar o que digitou, escreva as mensagens e as notas de entrada. 
 Faça algoritmo que:

a) Leia o número N de alunos da turma. N deve ser fornecido via teclado. Suponha um valor de N inteiro. O algoritmo deve verificar se o aluno foi aprovado ou reprovado.

 

b)   Considere a média aritmética ponderada das provas de cada aluno:  MP = ( P1  +  P2 )/2. 
Considere que  a média das tarefas práticas é MT = (0.20*TP1 + ... + 0.20*TP5), supondo 5 tarefas práticas.  
A média final MF = (0.4*MP + 0.6*MT)/2.0.  

Se  9.0 <= MF <= 10.0, então, o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escreva MF. 
 
Se  7.5 <= MF < 9.0, então, o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escreva MF. 

Se  6.0 <=  MF < 7.5,  o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escrva MF.

Se  3.0 <= MF < 6.0 então o algoritmo deve escrever uma mensagem "ALUNO EM RECUPERAÇÂO". 
O aluno deverá fazer outra prova para recuperação, Obtendo uma nota NR. Entre com esta nota NR, e a nota final será calculada como  MF = (MP + NR)/2.  Se 0.0 <= MF < 6.0, então, o algoritmo deve escrever uma mensagem "ALUNO REPROVADO".

Se 0.0 <= MF < 3.0, então, o algoritmo deve escrever uma mensagem "ALUNO REPROVADO".  

 

c)  O algoritmo deve fornecer ao final, a média aritmética MEDFINAL das notas MF dos alunos da turma. Deve escrever a mensagem identificando a média da turma, "A MEDIA DA TURMA É =  " .

 

TAREFA PRÁTICA 2 (Variáveis Simples, Estrutras Lógicas de seleção e repetição)

              Continuação da TAREFA 1. 
 
                     (a) Inserir a programação dos conceitos e da média das notas MF da turma. 

                     (b) Considerar e programar para 3 turmas existentes, usando FLAG para turma e um FLAG para alunos processados.  


O último algoritmo que publiquei aqui, diz respeito à tarefa prática 2. Vou trabalhar com o que consegui até agora,  e então vou publicar aqui, mas se tiveres uma sugestão em relação a isso, ficaria muito agradecido. Obrigado por tudo. 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
3 horas atrás, kadafimatatu disse:

(b) Considerar e programar para 3 turmas existentes, usando FLAG para turma e um FLAG para alunos processados.  

Essa questão da flag eu não entendi.

 

 

Outra coisa, de onde surgiu essa parte da médias das turmas no enunciado?

5 horas atrás, kadafimatatu disse:

Escreval("A média das Tumas é: ", medTurmas)

 

 

Então. Revise item por item e posta o código aqui e onde está com dúvidas.

obs.: o que tá entre {} pode apagar, deixei apenas para mostrar como era o original.

 

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

@Simon Viegas olá, com base no primeiro programa que fiz para uma turma com N aluno, eu escrevi um para M turmas, se pudesse gostaria que você desse uma olhada. Segue o algoritmo:

Algoritmo "semnome"

Var
// Seção de Declarações das variáveis 
   N: Inteiro
   M: Inteiro
   T: Inteiro
   contador: Inteiro
   soma: Inteiro
   P1, P2: Real
   TP1, TP2, TP3, TP4, TP5: Real
   MP, MT, MF, NR: Real
   somaTurma, medTurma, medTurmas,somaTurmas: Real
   
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
   soma <- 0
   Escreval("Informa o número de turmas: ")
   leia(T)
   enquanto (soma < T) faca
      soma <- soma + 1
      contador <- 0
      Escreval("Informe o número de alunos:")
      Leia(N)
      enquanto (contador < N) faca
         contador <- contador + 1
         Escreval("Matrícula do aluno: ")
         leia(M)
         Escreval("Notas do aluno ", contador,":")
         ALEATORIO 2,8
         Escreva("Prova 1: ")
         leia(P1)
         escreva("Prova 2: ")
         leia(P2)
         escreva("Tarefa prática 1: ")
         leia(TP1)
         escreva("Tarefa prática 2: ")
         leia(TP2)
         escreva("Tarefa prática 3: ")
         leia(TP3)
         escreva("Tarefa prática 4: ")
         leia(TP4)
         escreva("Tarefa prática 5: ")
         leia(TP5)
         MP <- ((P1 + P2) / 2)
         escreval("Média aritmética: ", MP)
         MT <- ((TP1 * 0.20) + (TP2 * 0.20) + (TP3 * 0.20) + (TP4 * 0.20) + (TP5 * 0.20))
         escreval("Média das tarefas praticas: ", MT)
         MF <- ((MP * 0.40) + (MT * 0.60))
         escreval("Média final: ", MF)
         se (MF >= 9.0) e (MF <= 10.0) então
            Escreval("Aluno aprovado ")
         fimse
         se (MF >= 7.5) e (MF < 9.0) então
            Escreval("Aluno aprovado ")
         fimse
         se (MF >= 6.0) e (MF < 7.0) então
            Escreval("Aluno aprovado ")
         fimse
         se (MF >= 3.0) e (MF <= 6.0) então
            Escreval("Aluno em recupeção ")
            Escreval("Nota da recuperação: ")
            leia(NR)
            MF <- ((MP + NR) / 2)
            Escreval("Média final: ", MF)
            se (MF >= 0.0) e (MF < 6.0) então
               Escreval("Aluno reprovado")
            fimse
         fimse
         se (MF >= 0.0) e (MF <= 3.0) então
            Escreval("Aluno reprovado")
         fimse
         ALEATORIO OFF
         somaTurma <- (MF + somaTurma)
         medTurma <- (somaTurma / contador)
      fimenquanto
      escreval("A média da Turma ", soma," é: ", medTurma)
      somaTurmas <- (medTurma + somaTurmas)
      medTurmas <- (somaTurmas / soma)
   fimenquanto
   escreval("A média das Turmas é: ", medTurmas)
Fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
2 horas atrás, Simon Viegas disse:

Outra coisa, de onde surgiu essa parte da médias das turmas no enunciado?

A dúvida ainda persiste. Em qual parte do enunciado fala sobre médias das turmas? não vi isso no enunciado.

 

E de qualquer forma não está funcionado. Você chegou a verificar se está batendo? experimente usar

ALEATORIO 10,10

 

 

1 hora atrás, kadafimatatu disse:

olá, com base no primeiro programa que fiz para uma turma com N aluno, eu escrevi um para M turmas, se pudesse gostaria que você desse uma olhada. Segue o algoritmo:

Então, sugiro que leia item por item do enunciado e veja se o código está correspondendo ao pedido. Caso não, vá ajustando até respeitar todos os critérios.

 

Vá tentando ajustar, caso tenha uma dúvida específica, nos aponte.

 

 

 

Link para o comentário
Compartilhar em outros sites

Bem, é verdade eu acabei me confundindo, mas agradeço por apontar isso@Simon Viegas. Obrigado realmente por me ajudar, aprendi muito com suas sugestões e dicas. Acho que vou me tornar mais assíduo no fórum, vejo que a comunidade aqui é bem educada e disposta a ajudar. Qualquer coisa volto a publicar aqui nesse tópico, mas pode ter certeza que voltarei a criar outros hahaha.   

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

11 horas atrás, kadafimatatu disse:

Bem, é verdade eu acabei me confundindo, mas agradeço por apontar isso@Simon Viegas.

Não tem problema... talvez não seja uma questão de confusão, mas de extrapolação, ou seja, está implementando itens pertinentes, mas não solicitados. De um modo geral isso pode ser bom, mas ANTES tem que se preocupar com o que foi pedido... ou seja, primeiro faz o que tem que fazer, depois vai além.... no contexto, pode está tentando ir além antes de fazer a "obrigação". Seria como "te peço um cachorro quente e você me trás um delicioso X Tudo". "Mas tá! Eu quero comer um cachorro quente"!

 

 

 

11 horas atrás, kadafimatatu disse:

Obrigado realmente por me ajudar, aprendi muito com suas sugestões e dicas. Acho que vou me tornar mais assíduo no fórum, vejo que a comunidade aqui é bem educada e disposta a ajudar. Qualquer coisa volto a publicar aqui nesse tópico, mas pode ter certeza que voltarei a criar outros hahaha.

Pode ficar a vontade... tem uma galera massa aqui... aprendemos/desenvolvemos em conjunto..

 

 

 

Em relação a esse código atual, vai abandonar? E sobre?

15 horas atrás, Simon Viegas disse:

Então. Revise item por item e posta o código aqui e onde está com dúvidas.

obs.: o que tá entre {} pode apagar, deixei apenas para mostrar como era o original.

 

Veja, a chave de todo problema está no entendimento do problema. E as definições do que "ocorre/precisa" está no enunciado.

 

Abaixo vou tentar demonstra mais ou menos como pode fazer.. veja:

 

No caso, ou imprime o enunciado e vai "marcando" ou usar um editor de texto... etc

 

Segue legenda:

Preto = OK

Vermelho = Errado/Faltando

Azul = Em análise

 

Citação

TAREFA PRÁTICA 1 (Variáveis Simples, Estruturas Lógicas de seleção e repetição)

 

Considere a sua turma da disciplina de Introdução à Ciência da Computação que você faz parte. Use para os dados de entrada, para cada aluno: a sua matrícula M (inteiro) e as notas das provas P1 (real) e P2 (real). Suponha que existam 5 tarefas práticas TP1, ...., TP5. Entre com as notas das tarefas práticas TP1, ... TP5. Para confirmar o que digitou, escreva as mensagens e as notas de entrada.

 

Faça algoritmo que:

 

a) Leia o número N de alunos da turma. N deve ser fornecido via teclado. Suponha um valor de N inteiro. O algoritmo deve verificar se o aluno foi aprovado ou reprovado. (<-- essa verificação é depois. Na parte final do programa, ou seja, isso é o objetivo!. Primeiro precisa ajustar as leituras e cálculos [Simon.Viegas])

 

b ) Considere a média aritmética ponderada das provas de cada aluno: MP = ( P1 + P2 )/2.

Considere que a média das tarefas práticas é MT = (0.20*TP1 + ... + 0.20*TP5), supondo 5 tarefas práticas.

A média final MF = (0.4*MP + 0.6*MT)/2.0.

 

Se 9.0 <= MF <= 10.0, então, o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escreva MF.

Se 7.5 <= MF < 9.0, então, o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escreva MF.

Se 6.0 <= MF < 7.5, o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escrva MF.

Se 3.0 <= MF < 6.0 então o algoritmo deve escrever uma mensagem "ALUNO EM RECUPERAÇÂO".

O aluno deverá fazer outra prova para recuperação, Obtendo uma nota NR. Entre com esta nota NR, e a nota final será calculada como MF = (MP + NR)/2. Se 0.0 <= MF < 6.0, então, o algoritmo deve escrever uma mensagem "ALUNO REPROVADO".

 

Se 0.0 <= MF < 3.0, então, o algoritmo deve escrever uma mensagem "ALUNO REPROVADO".

 

 

c) O algoritmo deve fornecer ao final, a média aritmética MEDFINAL das notas MF dos alunos da turma. Deve escrever a mensagem identificando a média da turma, "A MEDIA DA TURMA É = " .

 

 

TAREFA PRÁTICA 2 (Variáveis Simples, Estrutras Lógicas de seleção e repetição)

 

Continuação da TAREFA 1.

(a) Inserir a programação dos conceitos e da média das notas MF da turma.

 

(b) Considerar e programar para 3 turmas existentes, usando FLAG para turma e um FLAG para alunos processados.

 

 

Então, supostamente, até "Se 6.0 <= MF < 7.5" tudo já foi revisado... daí, vá conferindo as próximas etapas e fazendo os ajustes necessários.

 

 

ADENDO:

Spoiler

Observe que no item b temos:

19 horas atrás, kadafimatatu disse:

b)   Considere a média aritmética ponderada das provas de cada aluno:  MP = (P1+P2 )/2.

 

O item fala sobre "média aritmética ponderada". Pelos conhecimentos já adquiridos ou, caso tenhamos esquecido exatamente como funciona (meu caso), vemos no Google que tem algo assim:

Citação

A média aritmética ponderada é calculada multiplicando cada valor do conjunto de dados pelo seu peso.

Ué? cada o peso nessa fórmula? Ou seja, supostamente o texto do enunciado está errado... pois a fórmula se refere a "Média Aritmética Simples", e não ponderada!

 

Entende? Mas beleza... seria apenas um erro de digitação, pode seguir a fórmula normalmente, já que fórmula foi dada.. (o nome dela não muda muita coisa) entretanto, poderia comentar com o "professor" algo assim: "Professor(a), analisando o enunciado no fórum, foi observado que foi citado uma MAP, mas pelo que foi visto, a fórmula se refere a uma MPS. Né?"

 

Por ai vai. A ideia é que o enunciado seja mastigado! Tentar absorver o máximo possível. A proposto do exercício não é (apenas) ter uma resposta correta, mas também todo o processo de desenvolvimento, inclusive nessa interação com fóruns.

 

 

 

Resumindo

Caso queira dar continuidade a este exercício, tente revisar o enunciado como sugeri e vai dando continuidade.. ai posta o código atual e onde está com dúvidas.

 

obs.: solicitar revisão só faz sentido após você achar que o código está pronto, ou seja, se tem erros, você precisa apontar o erro e pedir ajuda em relação a ele. Por exemplo, na sua tentativa de "inserir a médias das turmas", o cálculo da média não está batendo... entretanto, como é algo "fora do escopo do problema", não tem porque, por enquanto, para para ver isso... você precisa focar apenas no enunciado antes.

 

No aguardo.

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

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