Составители:
Рубрика:
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
- …
- следующая ›
- последняя »
