Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Описание постановки задачи.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.47 Mб
Скачать

Приложения

Приложение 1

Исходный текст программы решения задачи «Получение сведений о результативности футболистов»

Приложение 2

Тексты содержимого файлов

Приложение 3

Текст программ создания и печати тестовых файлов

Приложение 4

Контрольные примеры исполнения программы

Приложение 1. Исходный текст программы.

Основная программа

Program Resultat_futbolistov;

uses u1,u2,u3,u4,u5,u6,u7,crt;

Var

q:st;

I,t,l: integer;

s:arr1;

tab:arr;

f,p:Boolean;

a:kol_gol;

b:name;

c:komands;

Begin

clrscr;

textcolor(15);

Writeln (‘Добро пожаловать в базу данных результативности футболистов’);

Writeln (‘У вас есть 5 попыток, чтобы ввести запрос’);

input (q,i,f);

if f=true then begin

calculation (a,s,l);

Search (i,l,s,tab,t,p); end;

if p=true then begin

NameSearch (b,t,tab);

KomSearch (c,t,tab);

Sort (tab,t);

Output (tab,t); end;

readln;

End.

Модуль «U1»

Unit u1;

interface

uses u7,crt;

Procedure input (quanp:st; var intquanp:integer; var f:boolean);

Implementation

Procedure input;

Var

f1,f2;boolean;

I,attempt,err:integer;

Begin

attempt:=attempt+1;

textcolor(15);

Write (‘Введите минимальное количество голов: ’);

textcolor(3);

readln (quanp);

textcolor (15);

f1:=fasle;

f2:=false;

While (quanp>’’) and (pos(‘ ‘,quanp)>0) do

delete (quanp,(pos(‘ ‘,quanp)),1);

if quanp=” then Begin

textcolor(12);

Writeln (‘Вы ничего не ввели. Попробуйте ввести запрос снова.’);

textcolor(15);

end else

Begin

i:=1;

if quanp[i]=’-‘ then Begin

f1:=true; i:=i+1; end;

While i<=length(quanp) do Begin

if (quanp[i]<’0’) or (quanp[i]>’9’) then

f2:=true;

i:=i+1;

end;

if (f1=true) and (f2=false) then Begin

textcolor(12);

Writeln (‘Значение не может быть отрицательным. Попробуйте ввести его снова.’);

textcolor(15); end else

if (f2=true) or ((f2=true) and (f1=true)) then Begin

textcolor(12);

Writeln (‘Запрос должен состоять только из цифр. Попробуйте ввести его снова);

textcolor(15);

end else f:=true;

end;end;

if f=true then

Val(quanp,intquanp,err)

else Begin

textcolor(7);

Writeln (‘Вы пытаетесь ввести некорректный запрос. Попытки закончились.’);

Writeln (‘Для того, чтобы попробовать снова, перезапустите программу.’);

end;end;

end.

Модуль «U2»

Unit u2;

interface

uses u7,crt;

Procedure Calculation (x:kol_gol; var y:arr1; var c:integer);

Procedure Search(intquanp,c:integer; y:arr1; var z_tablica:arr; var u:integer; var p:boolean);

implementation

Procedure Calculation;

var

goli:file of kol_gol;

Begin

assign(goli,adr_gol);

reset(goli);

read(goli,x);

c:=1;

y[c].allkol:=x.kol;

y[c].numk:=x.numk;

y[c].numf:=x.numf;

While not Eof(goli) do

Begin

read(goli,x);

y[c].allkol:=y[c].allkol+x.kol;

if not (y[c].numk=x.numk) or not (y[c].numf=x.numf) then

Begin

c:=c+1;

y[c].numk:=x.numk;

y[c].numf:=x.numf;

y[c].allkol:=y[c].allkol+x.kol;

y[c-1].allkol:=y[c-1].allkol-x.kol;

end;

end;

close(goli);

end;

Procedure Search;

Var

i,j:integer;

Begin

P:=true;

u:=0;

i:=1;

j:=0;

while i<=c do Begin

if y[i].allkol>=intquanp then Begin

u:=u+1;

z_tablica[u].allkol:=y[i].allkol;

z_tablica[u].numf:=y[i].numf;

z_tablica[u].numk:=y[i].numk;

end else

j:=j+1;

i:=i+1;

end;

if j=c then Begin

p:=false;

textcolor(12);

Writeln(‘К сожалению, в списке нет футболистов, забивших столько голов’);

textcolor(7);

Wtireln(‘Для того, чтобы попробовать снова, перезапустите программу.’);

end;end;

end.

Модуль «U3»

Unit U3;

interface

uses u7;

procedure NameSearch (x:name; u; integer; var z_tablica:arr);

implementation

procedure NameSearch;

var

imena:file of name;

i:integer;

f1:boolean;

Begin

assign (imena, adr_name);

reset (imena);

while not Eof(imena) do begin

read(imena,x);

i:=0;

f1:=false;

while (f1=false) and (i<u) do Begin

i:=i+1;

if (z_tablica[i].numk=x.numk) and (z_tablica[i].numf=x.numf) then Begin

f1:=true;

z_tablica[i].namef:=x.namef; end;

end;

end;

close(imena);

end.

Модуль «U4»

Unit u4;

interface

uses u7;

Procedure KomSearch (x:komands; u:integer; var z_tablica:arr);

implementation

procedure KomSearch;

var

komandi:file of komads;

i:integer;

Begin

assign (komandi, adr_komands);

reset(komandi);

while not Eof(komandi) do begin

read(komandi,x);

i:=0;

while i<u do Begin

i:=i+1;

if z_tablica[i].numk=x.numk then Begin

z_tablica[i].namekom:=x.namekom; end;

end;

end;

close(komandi);

end;

end.

Модуль «U5»

Unit U5;

interface

uses u7;

Procedure Sort (var z_tablica:arr; u:integer);

implementation

Procedure Sort;

var

c:tablica;

i,j:integer;

Begin

for i:=1 to u do

for j:=i+1 to u do

if z_tablica[i].allkol<z_tablica[j].allkol then Begin

c:=z_tablica[j];

z_tablica[j]:=z_tablica[i];

z_tablica[i]:=c;

end;

end;

end.

Модуль «U6»

Unit U6;

interface

uses crt,u7;

procedure output(z_tablica:arr; u:integer);

implementation

procedure output;

var

i:integer;

Begin

writeln;

writeln;

textcolor(14);

writeln (‘Сведения о результативности футболистов’);

writeln;

writeln(‘╔═════════════╦════════╦═════════════════╗’);

writeln(‘║Фамилия и инициалы║ Команда ║Количество забитых голов ║’);

writeln(‘╠═════════════╬════════╬═════════════════╣’);

for i:=1 to u do Begin

writeln(‘║’,z_tablica[i].namef:18,’║’,z_tablica[i].namekom:16,’║’,z_tablica[i].allkol,’║’);

end;

writeln(‘╚═════════════╩════════╩═════════════════╝’);

writeln;

end;

end.

Модуль «U7»

Unit u7;

interface

const n=26;

adr_gol=’F:\dosbox1\kursa4\kolgol.dat’;

adr_name=’F:\dosbox1\kursa4\spisokfu.dat’;

adr_komands=’F:\dosbox1\kursa4\spisokko.dat’;

Type

kol_gol=record

dat:string[10];

numf:integer;

numk:integer;

kol:integer;

end;

obsh_kol=record

numk:integer;

numf:integer;

allkol:integer;

end;

Name=record

Namef:string[30];

numk:integer;

numf:integer;

end;

Komands=record

namekom:string[30];

numk:integer;

end;

Tablica=record

namef:string[30];

namekom:string[30];

allkol:integer;

numf:integer;

numk:integer;

end;

st=string;

arr1=array[1..n] of obsh_kol;

arr=array[1..n] of tablica;

implementation

end.

Приложение 2. Тексты содержимого файлов

Тестовый файл «Сведения о голах»

Дата

Код футболиста

Количество забитых голов

Номер команды

Номер футболиста

22.12.2012

1

1

3

15.12.2012

1

1

1

29.12.2012

1

1

0

07.01.2013

1

2

2

02.02.2012

1

2

1

15.02.2013

1

2

4

31.03.2013

1

3

2

27.02.2013

1

3

1

15.01.2013

1

3

2

30.02.2013

2

1

3

21.01.2013

2

1

1

01.02.2013

2

1

0

24.09.2012

3

3

0

01.10.2012

3

3

1

27.08.2012

3

3

1

05.04.2013

2

3

2

29.03.2013

2

3

2

21.03.2013

2

3

2

27.01.2013

3

1

3

21.01.2013

3

1

0

31.01.2013

3

1

0

14.05.2012

4

1

4

07.05.2012

4

1

1

01.06.2012

4

1

0

31.03.2012

4

2

1

07.04.2012

4

2

1

18.04.2012

4

2

0

Тестовый файл «Список футболистов»

Фамилия и инициалы футболиста

Код футболиста

Номер команды

Номер футболиста

Тючин П.С.

1

1

Харьков А.Н.

1

2

Патренко М.В.

2

1

Малкин Л.П.

3

3

Прандеев О.Д.

2

3

Хваленко Я.Ю.

3

1

Федотов Р.Г.

4

1

Иванов Е.И.

4

2

Воевода Т.Н.

1

3

Тестовый файл «Список команд»

Название команды

Номер команды

Спартак М.

1

Свобода

2

Стрела

3

Торпедо

4

Приложение 3. Тексты программ создания и печати файлов

Создание тестового файла «Сведения о голах»:

Program create;

uses crt;

type

kol_gol=record

dat:string[10];

numf:integer;

numk:integer;

kol:integer;

end;

var

goli:file of kol_gol;

x:kol_gol;

k:integer;

Begin

clrscr;

k:=0;

assign(goli,’F:\dosbox1\kursa4\kolgol.dat’);

rewrite(goli);

while not (readkey=’*’) do

with x do Begin

k:=k+1;

writeln(k);

write(‘дата:’);readln(dat);

writeln(‘Введите код футболиста’);

write(‘Номер команды:’);readln(numk);

write(‘Номер футболиста:’);readln(numf);

writeln(‘Введите количество забитых футболистом голов:’)readln(kol);

write(goli,x);

end;

close(imena);

end.

Создание тестового файла «Список футболистов»:

Program create;

uses crt;

type

name=record

namef:string[30];

numf:integer;

numk:integer;

end;

var

imena:file of name;

x:name;

k:integer;

Begin

clrscr;

k:=0;

assign(imena,’F:\dosbox1\kursa4\spisokfu.dat’);

rewrite(imena);

while not (readkey=’*’) do

with x do Begin

k:=k+1;

writeln(k);

writeln(‘Введите код футболиста’);

write(‘Номер команды:’);readln(numk);

write(‘Номер футболиста:’);readln(numf);

writeln(‘Фамилия и инициалы:’)readln(namef);

write(imena,x);

end;

close(imena);

end.

Создание тестового файла «Список команд»:

Program create;

uses crt;

type

komands=record

namekom:string[30];

numk:integer;

end;

var

komandi:file of komands;

x:komands;

k:integer;

Begin

clrscr;

k:=0;

assign(komandi,’F:\dosbox1\kursa4\spisokko.dat’);

rewrite(komandi);

while not (readkey=’*’) do

with x do Begin

k:=k+1;

writeln(k);

write(‘Номер команды:’);readln(numk);

writeln(‘Название команды:’)readln(namekom);

write(komandi,x);

end;

close(komandi);

end.

Приложение 4. Контрольные примеры исполнения программы

Пример 1.

Запрос:

Введите минимальное количество голов:7 ;

Результат:

Пример 2.

Запрос:

Введите минимальное количество голов:4 ;

Результат:

Пример 3.

Запрос:

Введите минимальное количество голов:1 ;

Результат:

Пример 4.

Запрос:

Введите минимальное количество голов:-1 ;

Результат:

Пример 5.

Запрос:

Введите минимальное количество голов:13 ;

Результат:

Пример 6.

Запрос:

Введите минимальное количество голов:аа ;

Результат: