Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
laba_kar8.docx
Скачиваний:
6
Добавлен:
10.05.2015
Размер:
125.97 Кб
Скачать

Текст программы

Далее приведен текст основной программы, заменяет любые две строки в матрице.

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]