Задача 241 на Pascal
Дан массив. Необходимо:
1. Отсортировать массив методом пузырька.
2. Ввести число и найти в массиве два числа чтобы a+x=y, где a,x - числа из массива; y-вводимое число.
var
a:array[1..10]of integer; {массив чисел} i:integer; {для цикла} { процедура сортировки массива a[1..10] МЕТОДОМ ПУЗЫРЬКА } PROCEDURE sort;
var
flag:boolean;
tmp:integer;
BEGIN
repeat
flag:=false;
for i:=1 to 10-1 do if a[i]>a[i+1] then
begin
tmp:=a[i];
a[i]:=a[i+1];
a[i+1]:=tmp;
flag:=true;
end;
until not flag;
END;
{функция БИНАРНОГО ПОИСКА числа в массиве a[1..10]} FUNCTION search(const x:integer):boolean; { x - искомое число } var
l,r,c:integer;
flag:boolean;
n:integer;
BEGIN
l:=1;
r:=10;
flag:=false;
repeat
c:=round((r-l)/2)+l;
if a[c]=x then flag:=true else
if x<a[c] then r:=c-1 else l:=c+1;;
until (l>r)or flag;
search:=flag; {если число x нйдено в массиве a[1..10], то TRUE}
END;
PROCEDURE search_00; {поиск по условию задачи} var
j:integer;
Y,x:integer;
flag_found:boolean; BEGIN write('Найти в массиве два числа сумма которых равна: '); readln(Y);
j:=0;
repeat
inc(j);
x:=Y-a[j];
flag_found:=search(x);
until flag_found or(j=10);
if flag_found then writeln('Такие числа найдены: ',a[j],'+',x,'=',Y) else writeln('Числа чтобы a + x = ',Y,' не найдены.') END; BEGIN randomize; for i:=1 to 10 do a[i]:=random(90)+10; {массив из любых двухзнаковых чисел}
writeln('До сортировки:'); for i:=1 to 10 do write(' ',a[i]);
writeln; sort; writeln('После сортировки по возрастанию:'); for i:=1 to 10 do write(' ',a[i]);
writeln; writeln; search_00; {поиск по условию задачи} END. |
В данной задаче реализованы: сортировка методом "пузырька" и метод бинарного поиска. Эти методы часто применяют при решении различных задач, поэтому необходимо знать эти методы и уметь их применять.