Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Como fazer média geral em um sistema de repetição de médias


Posts recomendados

Boa noite, pessoal!

Escreva um programa para ler 2 notas de um aluno, calcular e imprimir a média final. Logo após escrever a mensagem "Calcular a média de outro aluno Sim Não?" e solicitar um resposta. Se a resposta for "S", o programa deve ser executado novamente, caso contrário deve ser encerrado imprimindo a quantidade de alunos aprovados e a média geral da turma.

O meu problema é que não sei como tirar a média geral, após ter concluído as funções anteriores. 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
1 hora atrás, B_Santos disse:

O meu problema é que não sei como tirar a média geral, após ter concluído as funções anteriores. 

 

Pesquise sobre "o que é média". Aprenda a calcular. Depois implementa a lógico no código.

 

Obs.: poste o código completo atual para analisarmos. Após, tente implementar o que falta, e caso tenha dúvidas, citar em que parte.

DICA:
Use da abstração! Primeiramente calcule apenas para 1 só aluno. Só depois de conseguir, aí sim insere o conceito de repetição.

Link para o comentário
Compartilhar em outros sites

@Simon Viegas

program Pzim9;
var nota1, nota2, media, mg : real;
    cont : integer;
    resp: string;
begin
 repeat
 write ('Avaliação 2: '); readln (nota1);
 writeln;
 write ('Avaliação 1: ');readln (nota2);
 writeln;
 media := (nota1 + nota2) / 2;
 writeln ('A media do aluno eh: ', media:3:1);
 writeln;
 if media >= 6.0 then
 cont := cont + 1;
 write ('Novo aluno? S.Sim N.Nao '); readln (resp);
 writeln;
 until resp <> 'S';
 writeln ('Quantidade de alunos aprovados: ', cont);
end.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@B_Santos, olá. 

 

Vamos lá:

 

Você apenas postou um código e não comentou sobre ele... e neste código está faltando justamente o que você está com dúvidas: o cálculo da média geral. Ou seja: estamos na estaca zero :).

 

Vou tentar citar mais ou menos o que estava sugerindo... meio que me baseado como eu faria, beleza?

 

Ao pesquisar por "média" no Google, descobriria que existem mais de um tipo de média, ex:

 

medias.png

 

Não fiz uma pesquisa afundo, mas vi que tem pelo menos 4 tipos diferentes... e aí? qual tipo de média foi solicitada no exercício?

 

Citando:

14 horas atrás, B_Santos disse:

Escreva um programa para ler 2 notas de um aluno, calcular e imprimir a média final. Logo após escrever a mensagem "Calcular a média de outro aluno Sim Não?" e solicitar um resposta. Se a resposta for "S", o programa deve ser executado novamente, caso contrário deve ser encerrado imprimindo a quantidade de alunos aprovados e a média geral da turma.

 

Não diz! Pelo menos não explicitamente para mim!... teria que descobrir... uma forma seria fazendo outras pesquisas, como por exemplo "como calcular média de notas" e por aí vai. Outra forma seria, caso necessário, perguntar para um colega ("man, tem várias tipos de média, sabe qual deve ser utilizado neste exercício?) ou mesmo tirar a dúvida com o professor ("Professor, tudo bem, poderia tirar uma dúvida sobre o exercício.....". Em fim... pelas análises, vamos supor que de fato é utilizado o mais comum: Média aritmética. (mas perceba que poderia ser outra! estou apenas deduzindo).

 

Como é que se calcula uma média aritmética mesmo? pelo Wiki tem resumidamente isto: "Média aritmética é a soma dos valores dividido pelo número total de valores",

 

Se analisar o código, foi isto que você fez para as notas do alunos. OK.

 

Sobre:

14 horas atrás, B_Santos disse:

O meu problema é que não sei como tirara média geral, após ter concluído as funções anteriores.

 

O que é uma média geral? neste caso vou supor que seja também uma "média aritmética"... logo, seria como dizer "média geral aritmética" (ou média aritmética geral, não sei dizer no momento... rs). Então, o que "geral" está se referindo? creio eu que a "todas as notas, de todos os alunos". Logo:

media geral = "soma de todas as notas" / "quantidade de notas"

 

Como continuei pesquisando, consegui assimilar bem o que é uma média aritmética... hum! se média aritmética é "a soma dos valores de algo, dividido pela quantidade de ocorrências desse algo", poderia ser assim:

media geral = "soma das médias de notas" / "quantidade de médias de notas"

Será? não sei! teria que testar para ver se os resultados batem! ;)

 

Sacou? a ideia dos exercícios é a imersão!!! O foco é a aprendizagem em geral, e não apenas entrar um código que rode certo. 

 

 

RESUMINDO:

Escolha uma das duas fórmulas citadas logo acima. Daí, obtenha os valores necessário e calcule. Ou "pega" a soma de todas a notas e a quantidade de notas, ou "pega" a soma de todas as médias e a quantidade de médias. O resultado vai ser o mesmo (creio eu).

 

Qualquer dúvida é só perguntar.

 

Obs.: para colar um código, utilize o botão <> (Code). Abaixo indico onde ele fica:

 

botao_code.png

 

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

@Simon Viegas Bom dia, eu sei que é preciso calcular com média aritmética. Mas eu não consigo enquadrar os valores de todas médias(media) para calcular a média geral no comando mg:=media/cont. Sempre ao realizar o código ele só fornece a última média para realização da média geral. Eu gostaria de saber como incluir a média de cada um dos cont na variável media.

Segue o código:

program Pzim10;
var nota1, nota2, media, mg : real;
    cont : integer;
    resp: string;
begin
 writeln;
 repeat
 write ('avaliação 1: '); readln (nota1);
 writeln;
 write ('avaliação 2: ');readln (nota2);
 writeln;
 media:= (nota1 + nota2) / 2;
 writeln ('A media do aluno é: ', media:3:1);
 writeln;
 if media >= 6.0 then
  cont := cont + 1;
 write ('Calcular a media de um novo aluno? S.Sim N.Nao '); readln (resp);
 writeln;
 until resp <> 'S';
 writeln ('Quantidade de alunos aprovados: ', cont);
 if (media>=0) or (media<=10) then
  cont:=cont+1;
  mg:=media/cont;
 writeln('E a média geral da turma é: ', mg);
end.

 

adicionado 47 minutos depois

@Simon Viegas Muito obrigado pela sua atenção e ajuda! Finalmente consegui responder.

Tenha um bom dia o/

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

  • Membro VIP

@B_Santos é assim mesmo. Tem que ir se batendo mesmo. Tem que aprender a aprender a identificar onde está os programas!

 

 

1 hora atrás, B_Santos disse:

Simon Viegas Bom dia, eu sei que é preciso calcular com média aritmética.

Show, mas sabe o porquê? em fim. Como é o mais óbvio, de qualquer forma vamos pressupor que é mesmo (mas o enunciado NÃO diz que tem que ser assim).

 

 

1 hora atrás, B_Santos disse:

Sempre ao realizar o código ele só fornece a última média para realização da média geral.

 

É o esperado! Meio que remete a uma frase que é atribuída ao Einstein:

 

igual.jpg

 

Ou seja: mesmo fazendo algumas modificações, talvez não esteja mudando justamente o que precisa, logo, esta parte está fazendo a mesma coisa e, por consequência, dando os mesmos resultados.

 

 

1 hora atrás, B_Santos disse:

Eu gostaria de saber como incluir a média de cada um dos cont na variável media.

 

Este é o cerne do TEU papel. Analisar o que está acontecendo e corrigir.

 

...para dar um ponta-pé, vamos voltar a fórmula:

 

4 horas atrás, Simon Viegas disse:

media geral = "soma das médias de notas" / "quantidade de médias de notas"

 

 

O que você criou:
 

1 hora atrás, B_Santos disse:

until resp <> 'S';
writeln ('Quantidade de alunos aprovados: ', cont);
if (media>=0) or (media<=10) then
  cont:=cont+1;
mg:=media/cont;
writeln('E a média geral da turma é: ', mg);
end.

 

Para que estaria servindo o esse trecho?

if (media>=0) or (media<=10) then
  cont:=cont+1;

Neste caso, não entendi.


Mas vamos o analisar o cálculo:

O que é media aí? ela está sendo "a média do último aluno".

Quem é cont aí? ele está sendo a "quantidade de alunos aprovados".

 

Logo, temos no teu código:

media geral = "média do último aluno" / "quantidade de alunos aprovados"

Tá errado, não?

 

adicionado 0 minutos depois

 

1 hora atrás, B_Santos disse:
adicionado 47 minutos depois

@Simon Viegas Muito obrigado pela sua atenção e ajuda! Finalmente consegui responder.

Tenha um bom dia o/

 

Poste o que conseguiu fazer para revisarmos e também servir de base para outros visitantes.

Link para o comentário
Compartilhar em outros sites

Em 26/03/2020 às 13:25, Simon Viegas disse:

Poste o que conseguiu fazer para revisarmos e também servir de base para outros visitantes.

program Q10; //Rian V. Santos 6813
var
  nota1, nota2, media, mg , acm: real;
  cont1, cont2 : integer;
  resp: string;
begin
  writeln;
  repeat
    write  ('Informe a nota da primeira avaliação: '); readln(nota1);
    writeln;
    write  ('Infor a nota da segunda avaliação: '); readln(nota2);
    writeln;
    media := (nota1 + nota2) / 2;
    writeln ('A media do aluno é: ', media:3:2);
    writeln;
    acm := acm + media;
    if media >= 6.0 then
      cont1 := cont1 + 1;
    if (media>=0) and (media<=10) then
      cont2 := cont2+1;
    mg := acm/cont2;
    write ('Calcular a media de um novo aluno? [S]im [N]ao: '); readln(resp);
    writeln;
  until (resp <> 'S');
  writeln('Quantidade de alunos aprovados: ', cont1);
  writeln('E a média geral da turma é: ', mg:3:2);
end.

@Simon Viegas

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois...
  • Membro VIP

Segue uma fatoração:

 

{$CODEPAGE UTF8} //uma forma de tentar conseguir imprimir palavras acentuadas
program Q10; //Rian V. Santos 6813
var
  nota1, nota2: real;
  media, mediaGeral, somaMedias: real;
  qtdAlunos, qtdAprovados: integer;
  resp: char;
begin
  //Obs.: aqui no programa principal não precisa "zerar" as variásive, mas não custa nada
  qtdAlunos := 0;
  qtdAprovados := 0;
  
  repeat    
    Inc(qtdAlunos);
    writeln;
    write  ('Informe a nota da primeira avaliação: '); readln(nota1);
    writeln;
    write  ('Informe a nota da segunda avaliação : '); readln(nota2);
    writeln;
    media := (nota1 + nota2) / 2;
    writeln('A média do aluno é: ', media:1:2);
    writeln;
    somaMedias := somaMedias + media;

    if (media >= 6.0) then
      Inc(qtdAprovados);

    write ('Calcular a media de um novo aluno? [S]im [N]ao: '); readln(resp);
    
  until (UpCase(resp) <> 'S');
  
  mediaGeral := somaMedias/qtdAlunos;  
  writeln;
  writeln('Quantidade de alunos aprovados: ', qtdAprovados);
  writeln('E a média geral da turma é: ', mediaGeral:1:2);  
  readln;
end.

 

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!