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

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

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

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток! Прошу помочь с заданием. Я сделал таблицу, которая содержит сведения об успеваемости студентов по каждому предмету (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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2017, 20:39
Ответы с готовыми решениями:

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

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

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

2
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
20.06.2017, 05:45
Лучше бы, вместо никому не нужных комментариев (они и так очевидны),
немножко бы изучили букварь по ЯП и немножко 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
 Аватар для Enrion
0 / 0 / 0
Регистрация: 12.02.2017
Сообщений: 4
20.06.2017, 07:40  [ТС]
Спасибо за код. Действительно, комментарии излишне очевидны. По поводу форматирования кода, да, не очень. Буду всё поправлять и изучать, ещё раз спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.06.2017, 07:40
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru