Ir para conteúdo
Fórum Script Brasil
  • 0

Corrigir falha de média pascal Resolvido!


ucastro

Pergunta

Tem um algorítmo onde é para ler 4 notas bimestrais e ler o nome de três alunos e calcular a média de cada um, também a média geral de todos e colocar os nomes em ordem alfabética.

Na hora de imprimir (escrever o resultado) a média geral não não está dando certo.

Veja como fica:

Digite o nome do:1 aluno:Ricardo
Sua:1 Nota:10
Sua:2 Nota:9
Sua:3 Nota:8
Sua:4 Nota:7
Digite o nome do:2 aluno:Pedro
Sua:1 Nota:7
Sua:2 Nota:6
Sua:3 Nota:5
Sua:4 Nota:4
Digite o nome do:3 aluno:Pâmela
Sua:1 Nota:6
Sua:2 Nota:5
Sua:3 Nota:4
Sua:4 Nota:3
O aluno:Pedro
Sua média:5.5

O aluno:Pâmela
Sua média:4.5

O aluno:Ricardo
Sua média:8.5

Média geral da turma:1.5
Segue o algoritmo:
Program cal_media;

uses crt;

var

nota:array[1..3,1..4]of real;

nomes:array[1..3] of string;

media:array[1..3] of real;

x:string;

a:real;

i,j,atual,proximo:integer;

soma_nt,soma_md,media_gp:real;

Begin

clrscr;

For I:=1 To 3 Do

  Begin
  soma_md:=0;

  soma_nt:=0;

   Write('Digite o nome do:',i,' aluno:');readln(nomes[i]);

   For j:=1 To 4 Do

    Begin

     Write('Sua:',j,' Nota:');Readln(nota[i,j]);

     soma_nt:= soma_nt + nota[i,j];

    end;

   media[i]:=soma_nt/4;

   soma_md:=soma_md+media[i];
  end;

For atual:=1 To 2 Do

  Begin

   For proximo:=atual+1 To 3 Do

    Begin

     If nomes[atual]>nomes[proximo]Then

      Begin

       x:=nomes[atual];

       nomes[atual]:=nomes[proximo];

       nomes[proximo]:=x; 

       a:=media[atual];

       media[atual]:=media[proximo];

       media[proximo]:=a;

      end;

    end;

  end;

For i:=1 To 3 Do

  Begin

   Writeln('O aluno:',nomes[i]);

   Writeln('Sua média:',media[i]:2:1);

   Writeln;

  end;

media_gp:=soma_md/3;

Write('Média geral da turma:',media_gp:2:1);

writeln;

end.

ONDE ESTÁ O ERRO?

Editado por ucastro
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Na hora de imprimir (escrever o resultado) a média geral não não está dando certo.

ONDE ESTÁ O ERRO?

For I:=1 To 3 Do

  Begin
    soma_md:=0;

    soma_nt:=0;

    Write('Digite o nome do:',i,' aluno:');readln(nomes[i]);

    For j:=1 To 4 Do

    Begin

     Write('Sua:',j,' Nota:');Readln(nota[i,j]);

     soma_nt:= soma_nt + nota[i,j];

    end;

   media[i]:=soma_nt/4;

   soma_md:=soma_md+media[i];
  end;
observe que ( soma_md:=0;) esta dentro do for e por este motivo ele sera zerado a cada passagem ( soma_md:=0; ), portanto deverá retira-lo do loop do comando for.
soma_md:=0;

For I:=1 To 3 Do

  Begin
    
    soma_nt:=0;

    Write('Digite o nome do:',i,' aluno:');readln(nomes[i]);

    For j:=1 To 4 Do

    Begin

     Write('Sua:',j,' Nota:');Readln(nota[i,j]);

     soma_nt:= soma_nt + nota[i,j];

    end;

   media[i]:=soma_nt/4;

   soma_md:=soma_md+media[i];

   end;

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...