Решенные задачи на языке Паскаль
Условие задачи - придумал я.
Дан массив. Необходимо:
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.Вданной задаче реализованы: сортировка методом "пузырька" и метод бинарного поиска. Эти методы часто применяют при решении различных задач, поэтому необходимо знать эти методы и уметь их применять.
Скачать исходник