Текст программы
Далее приведен текст основной программы, заменяет любые две строки в матрице.
program lab8;
uses crt, org;
Const aii=100;
var c: organaizer;
key, ver,deletesize,buf: integer;
str: string;
searchflag: boolean;
size:integer;
begin
clrscr;
writeln ('Данная программа предназначена для работы c органайзером.');
repeat
clrscr;
writeln;
writeln ('Выберите необходимое действие: ');
writeln ('[1] - Добавление события в список');
writeln ('[2] - Удаление существующего события');
writeln ('[3] - Вывод списка сособытий на экран');
writeln ('[4] - Поиск по параметрам');
writeln ('[5] - Выход из программы');
readln (str);
clrscr;
val (str, key, ver);
if (ver <> 0) then
writeln ('Введено некорректное значение. Повторите ввод.')
else
begin
clrscr;
if key = 1 then
begin
repeat
writeln('Введите порядковый номер добавляемого события. Не более ',aii,' и не менее 0.');
writeln('Предыдущая запись была под номером ',size,'');
readln (str);
val (str, size, ver);
if (ver <> 0) or (size < 1) or (size > aii) then
writeln ('Введено некорректное значение.');
until (ver = 0) and (size > 0) and (size <= aii);
add (c,size);
end;
if key = 2 then
begin
repeat
writeln ('Введите номер удаляемого события - не больше ', aii,' и не менее 0 ');
readln (str);
val (str, deletesize, ver);
if (ver <> 0) or (deletesize < 1) or (deletesize > aii) then
writeln ('Введено некорректное значение.');
until (ver = 0) and (deletesize > 0) and (deletesize <= aii);
del (c, deletesize);
end;
if key = 3 then
output (c);
if key = 4 then
begin
repeat
writeln ('Выберите вариант поиска: ');
writeln ('[1] - по названию события');
writeln ('[0] - по дате события');
readln (str);
val (str, buf, ver);
if (ver <> 0) or (buf < 0) or (buf > 1) then
writeln ('Введено некорректное значение. Повторите ввод.')
until (ver <> 0) or (buf >= 0) or (buf <= 1);
if buf=1 then
searchflag:=true
else
searchflag:=false;
search (c,searchflag);
end;
end;
until key = 5;
writeln ('Работа программы успешно завершена.');
readln;
end.
Далее приведен текст модуля org, который используется в программе.
unit org;
interface
const max=100;
type
list = record
name: string[30];
date: string[50];
shrtdate: string[30];
number:boolean;
end;
organaizer = array [1..100] of list;
procedure add (var c: organaizer; size:integer);
procedure del (var c: organaizer; deletesize:integer);
procedure output (c: organaizer);
procedure search (c: organaizer; searchflag:boolean);
implementation
procedure add;
var ver,input:integer;
str1,str2,str3,str4,str5:string[10];
begin
begin
c[size].number:=true;
writeln ('Введите название события ',size,': ');
writeln (' ');
readln (c[size].name);
writeln ('Введите время начала события ',size,': ');
repeat
writeln ('Минуты: ');
readln (str1);
val (str1, input, ver);
if (ver <> 0) or (input < 0) or (input > 60) then
writeln ('Введено некорректное значение. Повторите ввод.');
until (ver = 0) and (input >= 0) and (input <= 60);
repeat
writeln ('Часы: ');
readln (str2);
val (str2, input, ver);
if (ver <> 0) or (input < 0) or (input > 23) then
writeln ('Введено некорректное значение. Повторите ввод.');
until (ver = 0) and (input >= 0) and (input <= 23);
repeat
writeln ('День: ');
readln (str3);
val (str3, input, ver);
if (ver <> 0) or (input < 0) or (input > 31) then
writeln ('Введено некорректное значение. Повторите ввод.');
until (ver = 0)and(input=>1)and(input<=31);
repeat
writeln ('Месяц: ');
readln (str4);
val (str4, input, ver);
if (ver <> 0) or (input < 1) or (input > 12) then
writeln ('Введено некорректное значение. Повторите ввод.');
until (ver = 0)and(input>=1)and(input<=12);
repeat
writeln ('Год: ');
readln (str5);
val (str5, input, ver);
if ver <> 0 then
writeln ('Введено некорректное значение. Повторите ввод.');
until ver = 0;
c[size].date:= (str2 + ':' + str1 + '.' + str3 + '.' + str4 + '.' + str5);
c[size].shrtdate:= (+ str3 + '.' + str4 + '.' + str5);
end;
end;
procedure del;
var key: char;
begin
writeln ('Для подтверждения удаления этого события нажмите ''Y'', иначе любую другую клавишу');
readln (key);
if (key = 'Y') or (key = 'y') then
begin
c[deletesize].number:=false;
c[deletesize].date:= '';
c[deletesize].name:= '';
end;
writeln ('Внимание! Событие под номером ',deletesize,' удалено.');
end;
procedure output;
var i: integer;
begin
writeln ('Список событий: ');
writeln ('Событие |':30,' Дата |':15,' Номер':2);
for i:= 1 to max do
if c[i].number=true then
begin
write (c[i].name:30 , '|', c[i].date:15 ,'|', i:2);
writeln;
end;
readln;
end;
procedure search;
var i, input, ver: integer;
str1,str2,str3,str4,str5:string[10];
datan, datat: string;
begin
if searchflag then
begin
writeln ('Введите название интересующего события: ');
writeln (' ');
readln (datat);
writeln (' Результаты поиска ');
writeln ('Событие |':30,' Дата |':15,' Номер':2);
for i:=1 to max do
if c[i].name=datat then
write (c[i].name:30 , '|', c[i].date:15 ,'|', i:2);
end;
if searchflag=false then
begin
writeln ('Введите дату интересующего вас события: ');
repeat
writeln ('День: ');
readln (str3);
val (str3, input, ver);
if (ver <> 0) or (input < 0) or (input > 31) then
writeln ('Введено некорректное значение. Повторите ввод.');
until (ver = 0) and (input >= 0) and (input <= 31);
repeat
writeln ('Месяц: ');
readln (str4);
val (str4, input, ver);
if (ver <> 0) or (input < 0) or (input > 12) then
writeln ('Введено некорректное значение. Повторите ввод.');
until (ver = 0)and(input>=1)and(input<=12);;
repeat
writeln ('Год: ');
readln (str5);
val (str5, input, ver);
if ver <> 0 then
writeln ('Введено некорректное значение. Повторите ввод.');
until ver = 0;
datat:= (+ str3 + '.' + str4 + '.' + str5);
writeln (' Результаты поиска ');
writeln ('Событие |':30,' Дата |':15,' Номер':2);
for i:=1 to max do
if c[i].shrtdate=datat then
write (c[i].name:30 , '|', c[i].date:15 ,'|', i:2);
end;
readln;
end;
end.