Система программирования Турбо Паскаль. Воробьева А.П - 63 стр.

UptoLike

Составители: 

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