Составители:
Рубрика:
127
Составить программу, обеспечивающую чтение входных
данных из файла и вывод документа с расчетными данными по
заданной форме. В программе предусмотреть чтение каждой
строки файла в переменную типа
запись.
Решение
Создадим в текущем каталоге файл данных ‘Wed.dat’, каж-
дая строка которого имеет вид:
4 5 5 Андреева С.В.
Заметим, что ФИО студента записывается в файле в конце
строки. Это связано с тем, что переменная типа
запись, в кото-
рую будет читаться строка из файла, содержит поле
fam (ФИО
студента) строкового типа, для которого не указан максимальный
размер, а следовательно, конец поля должен быть зафиксирован
нажатием клавиши [
Enter].
Program P_Wed;
Uses Crt;
Const
pr = ‘ ’; {20 пробелов}
Type
zap = record
m, inf, h: integer;
fam: string;
end;
Var
str: zap;
f: text;
n, d: integer;
fam1: string;
Sm, Sinf, Sh, Sc, Sg: real;
Begin
ClrScr;
{Вывод заголовка документа}
writeln(‘РЕЗУЛЬТАТЫ ОСЕННЕЙ СЕССИИ ГР. 151’);
128
{Вывод шапки документа}
writeln(‘| | | | |’,
‘ | |’);
writeln(‘| № | ФИО | Математика | Информатика |’,
‘Химия| Средний балл |’);
writeln(‘|п/п |’, pr, ‘|’, copy(pr,1,12), ‘|’, copy(pr,1,13), ‘|’,
copy(pr,1,7), ‘|’, copy(pr,1,14), ‘|’);
writeln(‘| | | | |’,
‘ | |’);
{Обработка файла данных}
assign(f, ‘Wed.dat’);
reset(f);
Sm := 0;
Sinf := 0;
Sh := 0;
n := 0; {Счетчик строк файла}
while not eof(f) do
begin
n := n + 1;
readln(f, str.m, str.inf, str.h, str.fam);
Sc := (str.m + str.inf + str.h)/3; {Ср. балл студента}
Sm := Sm + str.m;
Sinf := Sinf + str.inf;
Sh := Sh + str.h;
{Вывод строки документа}
d := 20 – length(str.fam);
fam1 := str.fam + copy(pr, 1, d);
writeln(‘|’, n:2, ‘ |’, fam1, ‘|’, str.m:6, copy(pr,1,6), ‘|’,
str.inf:7, copy(pr,1,6), ‘|’, str.h:4, copy(pr,1,3), ‘|’,
Sc:9:2, copy(pr,1,5), ‘|’);
end;
close(f);
Sm := Sm/n;
Sinf := Sinf/n;
Sh := Sh/n;
Sg := (Sm + Sinf + Sh)/3; {Средний балл по группе}
writeln(‘| | | |’,
‘ | |’);
writeln(‘| Ср. оценка по дисциплине|’, Sm:8:2,
Составить программу, обеспечивающую чтение входных {Вывод шапки документа} данных из файла и вывод документа с расчетными данными по writeln(‘| | | | |’, заданной форме. В программе предусмотреть чтение каждой ‘ | |’); строки файла в переменную типа запись. writeln(‘| № | ФИО | Математика | Информатика |’, Решение ‘Химия| Средний балл |’); writeln(‘|п/п |’, pr, ‘|’, copy(pr,1,12), ‘|’, copy(pr,1,13), ‘|’, Создадим в текущем каталоге файл данных ‘Wed.dat’, каж- copy(pr,1,7), ‘|’, copy(pr,1,14), ‘|’); дая строка которого имеет вид: writeln(‘| | | | |’, 4 5 5 Андреева С.В. ‘ | |’); {Обработка файла данных} Заметим, что ФИО студента записывается в файле в конце assign(f, ‘Wed.dat’); строки. Это связано с тем, что переменная типа запись, в кото- reset(f); рую будет читаться строка из файла, содержит поле fam (ФИО Sm := 0; студента) строкового типа, для которого не указан максимальный Sinf := 0; размер, а следовательно, конец поля должен быть зафиксирован Sh := 0; нажатием клавиши [Enter]. n := 0; {Счетчик строк файла} Program P_Wed; while not eof(f) do Uses Crt; begin Const n := n + 1; pr = ‘ ’; {20 пробелов} readln(f, str.m, str.inf, str.h, str.fam); Type Sc := (str.m + str.inf + str.h)/3; {Ср. балл студента} zap = record Sm := Sm + str.m; m, inf, h: integer; Sinf := Sinf + str.inf; fam: string; Sh := Sh + str.h; end; {Вывод строки документа} d := 20 – length(str.fam); Var fam1 := str.fam + copy(pr, 1, d); str: zap; writeln(‘|’, n:2, ‘ |’, fam1, ‘|’, str.m:6, copy(pr,1,6), ‘|’, f: text; str.inf:7, copy(pr,1,6), ‘|’, str.h:4, copy(pr,1,3), ‘|’, n, d: integer; Sc:9:2, copy(pr,1,5), ‘|’); fam1: string; end; Sm, Sinf, Sh, Sc, Sg: real; close(f); Begin Sm := Sm/n; ClrScr; Sinf := Sinf/n; {Вывод заголовка документа} Sh := Sh/n; writeln(‘РЕЗУЛЬТАТЫ ОСЕННЕЙ СЕССИИ ГР. 151’); Sg := (Sm + Sinf + Sh)/3; {Средний балл по группе} writeln(‘| | | |’, ‘ | |’); writeln(‘| Ср. оценка по дисциплине|’, Sm:8:2, 127 128
Страницы
- « первая
- ‹ предыдущая
- …
- 61
- 62
- 63
- 64
- 65
- …
- следующая ›
- последняя »