Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Паскаль. Задача о студентах (http://www.tehnari.ru/f41/t250098/)

АсяЯ 17.11.2016 15:02

Паскаль. Задача о студентах
 
Для каждого студента группы указаны фамилия и оценка в баллах по пяти дисциплинам.Вычислить средний балл в группе и упорядочить список по убыванию среднего балла каждого студента.

Type
ekz=Record
e1: Byte;
e2: Byte;
e3: Byte;
b:string;
end;
Var
x: Array[1..10] of ekz;
y: Array[1..10] of Real;
s: Real;
i,k,n: Integer;
b:string;
BEGIN
Writeln('Введите оценки через пробел:');
For i:=1 to 10 do
begin
Writeln('Введите Фамилию студента:');readln(b);
Writeln(i,' студент', b);
Read(x[i].e1,x[i].e2,x[i].e3);
y[i]:=(x[i].e1+x[i].e2+x[i].e3)/3;
s:=s+x[i].e1+x[i].e2+x[i].e3;
Inc(n,3);
end;
Writeln('Средний балл каждого студента:');
For i:=1 to 10 do
Write(y[i]:5:2);
Writeln;
Writeln('Общий средний балл= ',s/n:5:2);
Readln
END.

Vladimir_S 17.11.2016 17:17

Цитата:

Сообщение от АсяЯ (Сообщение 2435226)
Для каждого студента группы указаны фамилия и оценка в баллах по пяти дисциплинам.Вычислить средний балл в группе и упорядочить список по убыванию среднего балла каждого студента.

Пожалуйста:
Код:

Const
 Nstud=10;
Type
 ekz=Record
      b:string;
      e:array[1..5] of byte;
      e_aver:real;
    End;
Var
 x: Array[1..Nstud] of ekz;
 i,k,L: Integer;
 Av_mrk:real;
 D:ekz;

Begin
 for i:=1 to Nstud do
  with x[i] do
  begin
    write('Enter the surname of student: ');
    readln(b);
    Write('Enter five marks with spaces: ');
    for k:=1 to 4 do read(e[k]);
    readln(e[5]);
    e_aver:=0;
    for k:=1 to 5 do e_aver:=e_aver+e[k]/5;
  end;
 Writeln('Surname          mark1 mark2 mark3 mark4 mark5    Aver.');
 for i:=1 to Nstud do
  with x[i] do
  begin
    write(b);
    L:=length(b);
    for k:=1 to 15-L do write(' ');
    for k:=1 to 5 do write(e[k]:6);
    writeln(e_aver:10:2);
  end;
 Av_mrk:=0;
 for i:=1 to Nstud do
  with x[i] do
  for k:=1 to 5 do
    Av_mrk:=Av_mrk+e[k];
 Writeln('Averaged mark of the group: ',Av_mrk/5/Nstud:4:2);

 for i:=1 to Nstud-1 do
  for k:=1 to Nstud-i do
  if x[k].e_aver<x[k+1].e_aver then
    begin
    D:=x[k];
    x[k]:=x[k+1];
    x[k+1]:=D;
    end;

 Writeln('Surname          mark1 mark2 mark3 mark4 mark5    Aver.');
 for i:=1 to Nstud do
  with x[i] do
  begin
    write(b);
    for k:=1 to 15-length(b) do write(' ');
    for k:=1 to 5 do write(e[k]:6);
    writeln(e_aver:10:2);
  end;
 Readln
End.


АсяЯ 18.11.2016 14:19

Большое спасибо.


Часовой пояс GMT +4, время: 09:07.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.