Нечеткие сравнения на «меньше или равно» и «больше или равно»
Фактически «меньше или равно» означает «не больше», а «больше или равно» означает «не меньше». Соответственно производится сравнение на предмет «больше» или «меньше» и результат инвертируется. [4,с.67-69].
Разработать программу создания информационно-поисковой системы «Результаты соревнований» на языке программирования Паскаль.
База данных должна храниться в типизированных файлах. Записи формируются в таблицы и выводятся на экран.
Требуется произвести некоторые действия над записями. Для каждого действия мы создаем процедуры: процедура создания файла который будет содержать минимум 10 записей, процедура вывода на экран содержимого файла в виде таблицы, процедура дополнения файла новыми записями, процедура поиска записей по любому выбранному полю, процедура сортировки записей по любому выбранному полю, и процедура удаления записей по любому выбранному номеру.
Все операции с файлом оформляются в виде меню.
Процедуры мы вызываем с помощью меню основной программы, выбирая соответствующие пункты.
Выбор действия над файлом в меню осуществляется выбором определенного пункта с помощью клавиатуры.
В программе содержатся процедуры.
1) procedure sozdanie – процедура создания нового файла с информацией о результатах соревнований. Для начала нам необходимо ввести количество записей в таблице, а потом заполнить информацию. После окончания ввода данных процедура сама выходит в главное меню. Алгоритм описывающий данную процедуру реализован в виде блок-схемы 1 (рисунок 2.2.1).
2) procedure vivod – эта процедура предназначена для вывода на экран информации о результатах соревнований в виде таблицы. Алгоритм описывающий данную процедуру реализован в виде блок-схемы 2 (рисунок 2.2.2).
3) procedure dobavlenie – процедура добавления. Предназначена для добавления новых записей в таблицу. Процедура добавляет новые записи в конец файла. По окончании ввода процедура выходит в главное меню.
4) procedure poisk – процедура поиска предназначенная для поиска нужных записей в нужном поле таблицы. Перед нами появляется меню поиска, где мы выбираем нужный нам критерий поиска.
5) procedure sortirovka – процедура сортировки. Позволяет отсортировать нужное поле по возрастанию. Перед нами появляется меню в котором мы можем выбрать необходимое поле для сортировки.
6) procedure udalenie - процедура удаления. Предназначена для удаления необходимой нам строки. Перед нами появится меню, в котором мы должны ввести нужный номер строки для удаления.
Для запуска программы необходимо открыть файл «zadacha.pas» и нажать сочетание клавиш «Ctrl+F9».
В программе использовались переменные
fio, ych - stilстрокового типа,
voz, rez - числового типа.
Рисунок 2.2.1- Блок-схема 1
Рисунок 2.2.2- Блок-схема 2
2.3 Практическая часть выполнения задачи на языке программирования Паскаль
programzadacha; {название программы}
usescrt; {подкличение модуля crt}
type mass=record
fio:string; {Фамилия}
ych:string; {учреждение}
stil:string; {стильплавания}
voz:integer; {возраст}
rez:real; {результат}
end;
var
chi:mass; {имееттип mass}
ch,ch1:array[1..25] of mass;
f:file of mass;
i,m,j,k,n,nom:integer;
filename:string; {дляименифайла}
procedure sozdanie; {процедурасоздания}
var
q:integer;
begin
clrscr;
writeln('vvedite imya faila:'); {вводименифайла}
readln(Filename);
assign(f,Filename);
rewrite(f);
Writeln ('vvedite kolichestvo zapisei'); {вводимколичествозаписей}
Readln (n);
q:=0;
for i:=1 to n do
with ch[i] do
begin
q:=q+1;
clrscr;
writeln('vvedite fio ',q,'-go uchasnika'); {заносиминформациюобучастнике}
readln(fio);
writeln('vvedite vozrast ',q,'-go uchasnika');
readln(voz);
writeln('vvedite ycheregdenie');
readln(ych);
writeln('vvedite stil plavaniya');
readln(stil);
writeln('vvedite rezultat zapliva');
readln(rez);
write(f,ch[i]);
end;
close(f); {закрываемфайл}
end;
procedure vivod; {процедуравывода}
begin
clrscr;
writeln ('vvedite imya sozdannogo faila'); {указываемимясозданногофайла}
readln(filename);
assign (f,filename);
reset(f);
clrscr;
nom:=0;
writeln('writeln('| # | FIO | VOZRAST | YCHEREGDENIE | STIL |REZYLTAT |');
writeln('|');
whilenoteof(f) do{начинаем выводить записи в таблицу}
with ch[i] do
begin
inc(i);
inc(nom);
read(f,ch[i]);
writeln('|',nom:3,'|',fio:17,'|',voz:9,'|',ych:15,'|',stil:10,'|',rez:9:1,'|');
i:=i+1;
end;
writeln('|');
close(f); {закрылифайл}
readln;
clrscr;
end;
procedure dobavlenie; {процедурадобавления}
begin
clrscr;
writeln ('vvedite imya sozdannogo faila'); {вводименифайла}
readln(filename);
assign (f,filename);
reset(f);
i:=1;
while not eof(f) do
begin
read(f,ch[i]);
i:=i+1;
end;
writeln('vveditefio'); {начинаем заносит информацию об участнике}
readln(ch[i].fio);
writeln('vvedite voz ');
readln(ch[i].voz);
writeln('vvedite ycheregdenie obrazovaniya');
readln(ch[i].ych);
writeln('vvedite stil plavaniya');
readln(ch[i].stil);
writeln('vvedite rezultat zapliva');
readln(ch[i].rez);
n:=i;
close(f); {закрылифайл}
rewrite(f);
for i:=1 to n do
write(f,ch[i]);
close(f);
end;
procedure poisk; {процедурапоиска}
var e:string;
n1,o:integer;
l:real;
begin
writeln('vibirete regim poiska:' ); {меню}
writeln(' ');
writeln('1: poisk po polu fio');
writeln('2: poisk po polu vozrast');
writeln('3: poisk po polu ycheregdenie');
writeln('4: poisk po polu stil');
writeln('5: poisk po polu rezultat');
writeln;
readln(o);
clrscr;
if o=1 then begin {поискпополюфио}
writeln ('vvedite imya sozdannogo faila');
readln(filename);
assign (f,filename);
reset(f);
i:=1;
n:=0;
while not eof(f) do
begin
read(f,ch[i]);
inc(i);
inc(n);
end;
close(f);
writeln('vvedite fio uchasnika'); {водимФИОучастника}
readln(e);
n1:=0;
for i:=1 to n do
if ch[i].fio=e
then begin
n1:=n1+1;
ch1[n1]:=ch[i];
end;
ifn1<>0 thenbegin{вывод найденного участника}
writeln('||');
writeln('| FIO| VOZRAST | YCHEREGDENIE | STIL|REZYLTAT |');
writeln('||');
for i:=1 to n1 do
with ch1[i] do
begin
writeln('|',fio:17,'|',voz:9,'|',ych:15,'|',stil:10,'|',rez:9:1,'|');
end;
writeln('');
end
else
writeln('zapis ne naidena ');
readln;
end;
if o=2 then begin {поискпополювозраст}
writeln ('vvedite imya sozdannogo faila');
readln(filename);
assign (f,filename);
reset(f);
i:=1;
n:=0;
while not eof(f) do
begin
read(f,ch[i]);
inc(i);
inc(n);
end;
close(f);
writeln('vvedite vozrast uchasnika'); {вводимвозраст}
readln(l);
n1:=0;
for i:=1 to n do
if ch[i].voz=l
then begin
n1:=n1+1;
ch1[n1]:=ch[i];
end;
if n1<>0 then begin {вывод}
writeln('||');
writeln('| FIO | VOZRAST | YCHEREGDENIE | STIL |REZYLTAT |');
writeln('|');
for i:=1 to n1 do
with ch1[i] do
begin
writeln('|',fio:17,'|',voz:9,'|',ych:15,'|',stil:10,'|',rez:9:1,'|');
end;
writeln('||');
end
else
writeln('zapis ne naidena ');
readln;
end;
if o=3 then begin {поискпополюучреждение}
writeln ('vvedite imya sozdannogo faila');
readln(filename);
assign (f,filename);
reset(f);
i:=1;
n:=0;
while not eof(f) do
begin
read(f,ch[i]);
inc(i);
inc(n);
end;
close(f);
writeln('vvedite ycheregdenie'); {введитеучреждение }
readln(e);
n1:=0;
for i:=1 to n do
if ch[i].ych=e
then begin
n1:=n1+1;
ch1[n1]:=ch[i];
end;
if n1<>0 then begin {вывод}
writeln('|');
writeln('| FIO | VOZRAST | YCHEREGDENIE | STIL |REZYLTAT |');
writeln('||');
for i:=1 to n1 do
with ch1[i] do
begin
writeln('|',fio:17,'|',voz:9,'|',ych:15,'|',stil:10,'|',rez:9:1,'|');
end;
writeln('|');
end
else
writeln('zapis ne naidena ');
readln;
end;
if o=4 then begin {поискпополюстиль}
writeln ('vvedite imya sozdannogo faila');
readln(filename);
assign (f,filename);
reset(f);
i:=1;
n:=0;
while not eof(f) do
begin
read(f,ch[i]);
inc(i);
inc(n);
end;
close(f);
writeln('vvedite stil uchasnika'); {вводстиля}
readln(e);
n1:=0;
for i:=1 to n do
if ch[i].stil=e
then begin
n1:=n1+1;
ch1[n1]:=ch[i];
end;
if n1<>0 then begin {вывод}
writeln('||');
writeln('| FIO | VOZRAST | YCHEREGDENIE | STIL |REZYLTAT |');
writeln('|');
for i:=1 to n1 do
with ch1[i] do
begin
writeln('|',fio:17,'|',voz:9,'|',ych:15,'|',stil:10,'|',rez:9:1,'|');
end;
writeln('||');
end
else
writeln('zapis ne naidena ');
readln;
end;
if o=5 then begin {поискпополюрезультат}
writeln ('vvedite imya sozdannogo faila');
readln(filename);
assign (f,filename);
reset(f);
i:=1;
n:=0;
while not eof(f) do
begin
read(f,ch[i]);
inc(i);
inc(n);
end;
close(f);
writeln('vvedite preblezitelnii rezyltat uchastnika'); {вводрезультата }
readln(l);
n1:=0;
for i:=1 to n do
if (ch[i].rez<=l+0.5) and (ch[i].rez>=l-0.5)
then begin
n1:=n1+1;
ch1[n1]:=ch[i];
end;
if n1<>0 then begin {вывод}
writeln('||');
writeln('| FIO | VOZRAST | YCHEREGDENIE | STIL |REZYLTAT |');
writeln('||');
for i:=1 to n1 do
with ch1[i] do
begin
writeln('|',fio:17,'|',voz:9,'|',ych:15,'|',stil:10,'|',rez:9:1,'|');
end;
writeln('||');
end
else
writeln('zapis ne naidena ');
readln;
end;
end;
procedure sortirovka; {процедурасортировка}
var
p:integer;
begin
clrscr;
writeln('vibirete regim sortirovki:' ); {менюсортировки}
writeln(' ');
writeln('1: sortirovka po polu fio');
writeln('2: sortirovka po polu vozrast');
writeln('3: sortirovka po polu ycheregdenie');
writeln('4: sortirovka po polu stil');
writeln('5: sortirovka po polu rezultat');
writeln;
readln(p);
if p=1 then begin {сортировкапополюфио}
writeln ('vvedite imya sozdannogo faila'); {вводимимяфайла}
readln(filename);
assign (f,filename);
reset(f);
for i:=1 to n do
read(f,ch[i]);
close(f);
for i:=1 to n-1 do
for j:=i+1 to n do
if ch[i].fio>ch[j].fio then {сравниваем 2 строки}
begin
chi:=ch[i]; {проводим перестановку}
ch[i]:=ch[j];
ch[j]:=chi;
end;
rewrite(f);
for i:=1 to n do
write(f,ch[i]);
close(f);
end;
ifp=2 thenbegin{сортировка по полю возраст}
writeln ('vvedite imya sozdannogo faila');
readln(filename);
assign (f,filename);
reset(f);
for i:=1 to n do
read(f,ch[i]);
close(f);
for i:=1 to n-1 do
for j:=i+1 to n do
if ch[i].voz>ch[j].voz then
begin
chi:=ch[i];
ch[i]:=ch[j];
ch[j]:=chi;
end;
rewrite(f);
for i:=1 to n do
write(f,ch[i]);
close(f);
end;
if p=3 then begin {сортировкапополюучреждение}
writeln ('vvedite imya sozdannogo faila');
readln(filename);
assign (f,filename);
reset(f);
for i:=1 to n do
read(f,ch[i]);
close(f);
for i:=1 to n-1 do
for j:=i+1 to n do
if ch[i].ych>ch[j].ych then
begin
chi:=ch[i];
ch[i]:=ch[j];
ch[j]:=chi;
end;
rewrite(f);
for i:=1 to n do
write(f,ch[i]);
close(f);
end;
if p=4 then begin {сортировкапополюстиль}
writeln ('vvedite imya sozdannogo faila');