Автор: Пользователь скрыл имя, 24 Ноября 2011 в 18:35, курсовая работа
ЦЕЛЬ РАБОТЫ: изучение информационного поиска при различных способах организации массивов, различных поисковых стратегиях, различных критериях выдачи.
l1[2]:=l1[2]+1;
item:=lavs1[1];
lavs1[2]:=lavs1[2]-1;
lavs1[1]:=adr[lavs1[1]];
until i=3;
adr[item]:=0;
k:=2;
adr[k-1]:=adr[k];
t[k]:='';
l1[2]:=l1[2]-1;
adr[5]:=k;
adr[k]:=0;
sch:=2;
pod4(sch);
pod4(sch);
pod4(sch);
pod4(sch);
end.
Вариант
3
Создание списка Т(I), I=1,5, поиск и удаление k-гo элемента k=2. Выдача списков Т(I) по критерию выдачи "на совпадение". Программа написана на языке Pascal.
Т(25) - массив фамилий, состоит из 5 подмассивов. Первый подмассив Т(I),I=1,5 организуется списковой стратегией организации массивов, в нем же идет поиск k-гo элемента и его удаление.
ADR(25) - массив адресов.
А(3) - массив фамилий, вводимых в массив T(I), I=1,5.
L1(2), L2(2), L3(2), L4(2), L5(2) - указатели списков подмассивов Т.
LAVS1(2), LAVS2(2), LAVS3(2), LAVS4(2), LAVS5(2) - указатели списков пустых подмассивов Т.
ITEM - вспомогательная переменная.
SCH - счетчик
подсписков или подмассивов.
Описание
работы головной программы
Шаг 1: /блоки 1-3/ - начало и ввод массивов.
Шаг 2: /блоки 4-9/ - в этих блоках формируем массив Т(I), I=1,5. В пустые ранее ячейки этого массива вводим элементы массива А. При этом счетчик непустых ячеек массива Т увеличивается, а пустых -уменьшается с каждым шагом на 1.
Шаг 3: /блоки 10,11/ - задаем k=2, ищем этот элемент в списке Т(I), I =1,5,
удаляем его. При этом в адресную ячейку удаленного элемента ставим 0, а в адресную ячейку предыдущего элемента ставим адрес, стоявший ранее в адресной ячейке элемента k.
Шаг 4: /блоки 12-16/ - для дальнейшей работы с программой задаемся счетчиком подмассивов Т(I). 4 раза обращаемся к подпрограмме POD1 для проверки подмассивов Т(I), I =6,25. Конец головной программы.
Описание
работы подпрограммы
POD1
Шаг 1: /блоки 1-3/ - начало подпрограммы POD1, переводим элементы массива В в строку символов STR.
Шаг 2: /блоки 4-21/ - организуем цикл I =1,3. Ставим условие, чтобы элементы строки STR(1) были равны элементам строки STR(SCH). Если это так, то присваиваем L необходимое по программе значение. Печатаем шапку о выполнении условия на совпадение и печатаем списки, у которых коды совпадают. Если же условие не выполняется, то печатаем об этом сообщение.
Шаг 3: /блоки
19, 20/ - увеличение SCH на 1. Это мы делаем
в любом случае – и при выполнении, и при
невыполнении условия. Конец подпрограммы
POD1.
Исходные массивы:
Т: a b c d e f g h i j k l m n o p q r s t u v w x y
ADR: 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
A: a b с
В: 1 2 1 3 4
L1: 1 2 LAVS1: 1 2
L2: 3 4 LAVS2: 3 4
L3: 5 6 LAVS3: 5 6
L5: 9 0 LAVS5:
9 0
Результаты поиска:
Условие
на совпадение выполнено для списков
Т1 и Т.
Блок-схема
головной программы (вариант
№3)
Блок-схема подпрограммы POD1
Текст программы:
uses crt;
var
t:array[1..25] of string[20];
adr:array[1..25] of integer;
a:array[1..3] of string[20];
b:array[1..5] of integer;
l1,l2,l3,l4,l5:array[1..2] of integer;
lavs1,lavs2,lavs3,lavs4,lavs5:
item,sch:integer;
i,k,l:integer;
strl,strsch,r:string;
procedure pod1(var sch:integer);
begin
strl:='';
strsch:='';
str(b[1],r);
strl:=strl+r;
str(b[sch],r);
strsch:=strsch+r;
i:=1;
if strl=strsch then
begin
writeln('Условие на пересечение выполнено для списков Т1 и Т');
if sch=2 then l:=l2[1];
if sch=3 then l:=l3[1];
if sch=4 then l:=l4[1];
if sch=5 then l:=l5[1];
writeln('Исходный список. Код = ',b[l]);
for i:=l1[1] to l1[1]+4 do
begin
writeln('T[',i,']= ',T[i]);
writeln('ADR[',i,']= ',ADR[i]);
end;
writeln;
writeln('Список на пересечение. Код = ',b[sch]);
for i:=l to l+4 do
begin
writeln('T[',i,']= ',T[i]);
writeln('ADR[',i,']= ',ADR[i]);
end;
end;
sch:=sch+1;
end;
begin
clrscr;
for i:=1 to 25 do
begin
write('Bведите T[',i,']:');
readln(T[i]);
write('Введите ADR[',i,']:');
readln(adr[i]);
end;
for i:=1 to 3 do
begin
write('Введите A[',i,']: ');
readln(a[i]);
end;
for i:=1 to 5 do
begin
write('Введите B[',i,']: ');
readln(b[i]);
end;
for i:=1 to 2 do
begin
write('Введите LAVS1[',i,']: ');
readln(lavs1[i]);
write('Введите LAVS2[',i,']: ');
readln(lavs2[i]);
write('Введите LAVS3[',i,']: ');
readln(lavs3[i]);
write('Введите LAVS4[',i,']: ');
readln(lavs4[i]);
write('Введите LAVS5[',i,']:');
readln(lavs5[i]);
end;
for i:=1 to 2 do
begin
write('Введите L2[',i,']: ');
readln(l2[i]);
write('Введите L3[',i,']: ');
readln(l3[i]);
write('Введите L4[',i,']: ');
readln(l4[i]);
write('Введите L5[',i,']: ');
readln(l5[i]);
end;
l1[1]:=lavs1[1];
l1[2]:=0;
i:=0;
repeat
i:=i+1;
t[lavs1[1]]:=a[i];
l1[2]:=l1[2]+1;
item:=lavs1[1];
lavs1[2]:=lavs1[2]-1;
lavs1[1]:=adr[lavs1[1]];
until i=3;
adr[item]:=0;
k:=2;
adr[k-1]:=adr[k];
t[k]:='';
l1[2]:=l1[2]-1;
adr[5]:=k;
adr[k]:=0;
sch:=2;
pod1(sch);
pod1(sch);
pod1(sch);
pod1(sch);
end.
Информация о работе Информационное обеспечение социально экономических процессов