Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 12.02.2017
Сообщений: 4
1

Файл: Определить средний балл успеваемости по каждому студенту и по группе в целом.

19.06.2017, 20:39. Показов 1859. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток! Прошу помочь с заданием. Я сделал таблицу, которая содержит сведения об успеваемости студентов по каждому предмету (1, 2, 3, 4, 5 - якобы наименование предметов) . Необходимо определить средний балл успеваемости по каждому студенту и по группе в целом. Желательно просчитать средний балл успеваемости с помощью второй записи. Никак не могу разобраться, как это сделать. Постарался написать как можно больше комментариев для читабельности кода.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Program files; 
Type
wed = record {Тип wed включает 3 поля: n, fio, bal}
n : byte ; fio : string[15] ;
bal : array [1..5] of byte; {Поле bal – массив из 5 оценок }
 
end;
 sred = record {желательно использовать вторую запись для вычисления среднего балла}
    
    end;
Var spisok : wed ; {Запись spicok типа wed}
sp : file of wed; {Файл записей типа wed}
 
 
  
procedure vvod; { процедура создания файла}
var i,j:byte;
begin
{ оператор assing находится в основной прграмме }
rewrite ( sp); {открытие файла для записи}
with spisok do
For i:=1 to 10 do begin
n:=i; 
writeln (' Введите фамилию - ', i ); readln (fio); 
writeln (' Введите 5 оценок (от 1 до 5 баллов) ', fio ); For j:= 1 to 5 do readln ( bal [j] );
write (sp , spisok); { запись в файл информации о студенте}
end;
close (sp); { закрытие файла для записи }
end;
procedure print; { процедура чтения и печати всего файла }
var j : byte;
begin
reset ( sp); {открытие файла для чтения}
writeln (' Список студентов: '); 
while not eof (sp) do 
with spisok do 
begin 
Read (sp, spisok); {чтение данных из файла}
write (n,' ',fio); {вывод записи на экран}
For j:= 1 to 5 do write (' ', bal [j] );
writeln ;
end;
readln;
close (sp) ; {закрытие файла}
end;
 
procedure tabl; {процедуры для вывода данных в таблицу}
var j: byte;
begin
reset (sp); {открытие файла для чтения}
  writeln('┌──────────────────────────────────┬─────────────────────────────┐     ');  
  writeln('│                                  │     Оценки по предметам     │    ');
  writeln('│           ФИО студента           ├─────┬─────┬─────┬─────┬─────┤ ');       
  writeln('│                                  │  1  │  2  │  3  │  4  │  5  │  ');
  writeln('├──────────────────────────────────┼─────┼─────┼─────┼─────┼─────┤');
 
while not eof (sp) do 
with spisok do 
begin 
Read (sp, spisok); {чтение данных из файла}
 
    
      write('│', spisok.fio, ' ':20 - length(spisok.fio), '              ');             
      for j := 1 to 5 do write('│ ', spisok.bal[j]:3, ' ');
      writeln('│');
    
    end;
    close(sp); {закрытие файла}
    
  writeln('└──────────────────────────────────┴─────┴─────┴─────┴─────┴─────┘');
  writeln;
  writeln();
  end;
  
  
begin {начало основной программы}
assign (sp,'Vedom.txt'); {связать файловую перем-ю sp с файлом Vedom.dat}
vvod; print; {процедуры создания и чтения файла} 
tabl; {процедура создания таблицы}
 
 
readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2017, 20:39
Ответы с готовыми решениями:

Определить средний балл успеваемости по каждому предмету
Помогите: По итогам аттестации в группе по нескольким предметам, выбрать ударников и выдать их...

Записи: Определить средний балл по группе студентов по каждому из предметов
Исходная таблица представляет собой список студентов (ф.и.о) по всем предметам за предыдущую...

Вывести список студентов, у которых средний балл успеваемости ниже среднего балла успеваемости в группе
Известны данные по успеваемости студентов группы. Вывести студентов имеющих успеваемости ниже...

Вычислить средний балл в каждой группе студентов и определить, какая группа имеет наибольший средний балл
две группы студентов (1-ая -13 человек, 2-ая - 8 человек) сдают экзамен по информатике. Написать...

2
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
20.06.2017, 05:45 2
Лучше бы, вместо никому не нужных комментариев (они и так очевидны),
немножко бы изучили букварь по ЯП и немножко IDE.
И с форматированием кода у вас тоже проблемы!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
const
  fName = 'Vedom.txt';
  
type
  wed = record
    fio : string[15];
    bal : array [1..5] of byte;
    
    function среднийБалл := (bal[1] + bal[2] + bal[3] + bal[4] + bal[5]) / 5;
  end;
  
var sp : file of wed;
 
procedure vvod;
begin
  var s : wed;
  if System.IO.File.Exists(fName) then
    begin
      Reset(sp, fName);
      Seek(sp, FileSize(sp));
    end
  else
    Rewrite(sp, fName);
  (s.fio, s.bal[1], s.bal[2], s.bal[3], s.bal[4], s.bal[5]) :=
  (ReadLnString('ФИО студента:'), ReadInteger('5 оценок:'), ReadInteger,
  ReadInteger, ReadInteger, ReadLnInteger);
  Write(sp, s);
  Close(sp);
end;
 
procedure print;
begin
  Reset(sp, fName);
  WriteLn('Список студентов:');
  var s : wed;
  while Not EOF(sp) do
    begin 
      Read(sp, s);
      WriteLnFormat('| {0,-15} | {1,2} | {2,2} | {3,2} | {4,2} | {5,2} |', s.fio,
      s.bal[1], s.bal[2], s.bal[3], s.bal[4], s.bal[5]);
    end;
  close(sp);
  Write('Нажмите Enter для продолжения.'); ReadLn;
end;
 
procedure tabl;
begin
  Reset(sp, fName);
  writeln('+-----------------+------------------------+');  
  writeln('|                 |  Оценки по предметам   |');
  writeln('|  ФИО студента   +----+----+----+----+----+');
  writeln('|                 |  1 |  2 |  3 |  4 |  5 |');
  writeln('+-----------------+----+----+----+----+----+');
  var s : wed;
  while Not EOF(sp) do
    begin
      Read(sp, s);
      WriteLnFormat('| {0,-15} | {1,2} | {2,2} | {3,2} | {4,2} | {5,2} |', s.fio,
      s.bal[1], s.bal[2], s.bal[3], s.bal[4], s.bal[5]);
    end;
  close(sp); {закрытие файла}
  WriteLn('+-----------------+----+----+----+----+----+');
  WriteLn;
  Write('Нажмите Enter для продолжения.'); ReadLn;
end;
 
procedure СреднийБалл;
begin
  Reset(sp, fName);
  writeln('+-----------------+------------------------+-----+'); 
  writeln('|                 |  Оценки по предметам   | ср. |');
  writeln('|  ФИО студента   +----+----+----+----+----+ балл|');
  writeln('|                 |  1 |  2 |  3 |  4 |  5 |     |');
  writeln('+-----------------+----+----+----+----+----+-----+');
  var s : wed;
  var (count, sum) := (0, 0.0);
  while Not EOF(sp) do
    begin
      Read(sp, s);
      WriteLnFormat('| {0,-15} | {1,2} | {2,2} | {3,2} | {4,2} | {5,2} |{6,4:0.0} |',
      s.fio, s.bal[1], s.bal[2], s.bal[3], s.bal[4], s.bal[5], s.среднийБалл);
      count += 1; sum += s.среднийБалл;
    end;
  close(sp); {закрытие файла}
  writeln('+-----------------+----+----+----+----+----+-----+');
  if count > 0 then WriteLn('Средний балл по группе ', sum/count:0:1);
  WriteLn;
  Write('Нажмите Enter для продолжения.'); ReadLn;
end;
  
begin
  var v : String;
  var theEnd := False;
  repeat
    WriteLn(NewLine*5, '~'*20);
    WriteLn('1 - Добавить студента');
    WriteLn('2 - Список студентов');
    WriteLn('3 - Таблица студентов');
    WriteLn('4 - Средний балл студентов');
    WriteLn('0 - Выход из программы');
    v := ReadLnString('Ваш выбор:');
    if v.Length > 0 then
    case v[1] of
      '1' : vvod;
      '2' : print;
      '3' : tabl;
      '4' : СреднийБалл;
      '0' : theEnd := True;
    end;
  until theEnd;
end.
1
0 / 0 / 0
Регистрация: 12.02.2017
Сообщений: 4
20.06.2017, 07:40  [ТС] 3
Спасибо за код. Действительно, комментарии излишне очевидны. По поводу форматирования кода, да, не очень. Буду всё поправлять и изучать, ещё раз спасибо.
0
20.06.2017, 07:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2017, 07:40
Помогаю со студенческими работами здесь

Определить успеваемость по каждому студенту и группе
Доброго времени суток. Необходимо определить абсолютную и качественную успеваемость по каждому...

Подсчитать средний балл каждого студента, общий средний балл по каждому предмету
Приложение под Windows должно подсчитывать средний балл каждого студента, общий средний балл по...

Определить средний балл успеваемости каждого студента
Создать файл с полями : фамилия и оценки . Определить средний балл успеваемости каждого студента....

Определить средний балл по каждому классу
Даны списки учащихся 9А и 9Б классов и результаты предварительного экзамена по математике....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru