Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Максимова алгоритмизация.doc
Скачиваний:
0
Добавлен:
08.01.2020
Размер:
2.17 Mб
Скачать

2 Способ

Program Problem2;

uses WinCrt;

const

n = 20;

type

t = array[1..n] of integer;

var

a : t;

s, i : integer;

begin

randomize;

writeln('Заданный массив целых чисел');

s := 0;

for i := 1 to n do

begin

a[i] := random(201)-100;

write(a[i], ' ');

if i mod 2 = 0 then s := s + a[i]

end;

writeln;

writeln('Сумма элементов с четными номерами равна ', s)

end.

Задача 3. В одномерном массиве необходимо найти номер заданного пользователем числа и переставить его на первое место в массиве, последовательно переставляя с соседними элементами.

Решение

Program Problem3;

uses WinCrt;

const

n = 20;

type

t = array[1..n] of integer;

var

a : t;

i, k, d : integer;

{----------------------------------------------------------------------------------------}

Procedure create(n : integer; var a : t);

var

i : integer;

begin

randomize;

writeln('Заданный массив целых чисел');

for i := 1 to n do

begin

a[i] := random(201) - 100; write(a[i], ' ')

end;

writeln

end;

{----------------------------------------------------------------------------------------}

Procedure search_number(d : integer; a : t; var k : integer);

var

i : integer;

begin

i := 0;

repeat

i := i + 1

until a[i] = d;

k := i

end;

{----------------------------------------------------------------------------------------}

Procedure transp_begin(n, k : integer; var a : t);

var

i, p : integer;

begin

for i := k downto 2 do

begin

p := a[i-1];

a[i-1] := a[i];

a[i] := p

end

end;

{----------------------------------------------------------------------------------------}

begin

create(n, a);

write('Введите переставляемый элемент '); readln(d);

search_number(d, a, k);

transp_begin(n, k, a);

writeln('Массив после перестановки элемента в начало');

for i := 1 to n do write(a[i], ' ');

writeln

end.

Задача 4. Сортировка методом пузырька

Решение

Program Problem4; {Пузырьковая сортировка}

uses WinCrt;

const

n = 100;

type

t = array[1..n] of integer;

var

a : t;

{----------------------------------------------------------------------------------------}

Procedure create(n : integer; var a : t);

var

i : integer;

begin

randomize;

writeln('Заданный массив целых чисел');

for i := 1 to n do

begin

a[i] := random(201) - 100;

write(a[i], ' ')

end;

writeln

end;

{----------------------------------------------------------------------------------------}

Procedure bubble(n : integer; var a : t);

var

i, j, p : integer; {Сортировка элементов массива}

begin

for i := 2 to n do

for j := n downto i do

if a[j] < a[j-1] then

begin

p := a[j];

a[j] := a[j-1];

a[j-1] := p

end;

writeln('Упорядоченный по не убыванию массив');

for i := 1 to n do write(a[i], ' ');

writeln

end;

{----------------------------------------------------------------------------------------}

begin

create(n, a);

bubble(n, a)

end.

Задача 5. Задача поиска элемента в упорядоченном массиве. Пусть задан целочисленный массив и задано целое число b. Выяснить входит ли число b в заданный массив и если входит, то каково значение номера элемента равного данному числу, т. е. найти такое p, для которого

Решение

Program Problem5;

uses WinCrt;

const

n = 20;

type

t = array[1..n] of integer;

var

a : t;

p, q, s, b, i : integer;

begin

writeln('Вводите элементы упорядоченного по неубыванию массива');

for i := 1 to n do

begin

write('Введите ', i, '-й элемент '); readln(a[i])

end;

writeln;

write('Введите число b '); readln(b);

p := 1; q := n;

while p < q do

begin

s := (p + q) div 2;

if a[s] < b then p := s + 1

else q := s

end;

if a[p ]= b

then writeln('Число ', b, ' равно ', p, '-му элементу')

else writeln('Такого элемента в массиве нет')

end.

Задача 6. Сравнить два массива.

Решение

Program Problem6;

uses WinCrt;

const

n1 = 100;

type

t = array[1..n1] of integer;

var

a, b : t;

i, k, p, n, m : integer;

{----------------------------------------------------------------------------------------}

Procedure quick_search(a : t; n, b : integer; var p : integer);

var

q, s : integer;

begin

p := 1; q := n;

while p < q do

begin

s := (p + q) div 2;

if a[s] > b then p := s + 1

else q := s

end

end;

{---------------------------------------------------------------------------------------}

begin

write('Введите число элементов массива a, n= ');

readln(n);

write('Введите число элементов массива b, m= ');

readln(m);

writeln('Введите упорядоченный по убыванию элементы массива a');

for i := 1 to n do

begin

write('Введите ', i, '-й элемент '); readln(a[i])

end;

writeln('Введите элементы массива b ');

for i := 1 to m do

begin

write('Введите ', i, '-й элемент '); readln(b[i])

end;

writeln('Заданные массивы чисел');

for i := 1 to n do write(a[i]:4); writeln;

for i := 1 to m do write(b[i]:4); writeln;

k := 0;

for i := 1 to m do

begin

quick_search(a, n, b[i], p);

if a[p] <> b[i] then k := k + 1

end;

write('Число элементов массива b, не равных ');

writeln('элементам массива a равно ', k)

end.

Задача 7. Для упорядочивания массива чисел a1, a2, ..., an может быть использован алгоритм сортировки простыми вставками. Опишем этот алгоритм применительно к упорядочиванию по возрастанию. Просматривать последовательно a2, ..., an и каждый новый элемент ai вставлять на подходящее место в уже упорядоченную совокупность a1, ..., ai-1. Написать программу, реализующую этот алгоритм.

Решение

Пусть задан массив чисел (снова, для простоты рассуждений, возьмем массив целых чисел):

12 -3 25 -10 6 8 34 -65 44 17

Этот, заданный массив обозначим именем a. В нашем примере он имеет 10 элементов.

Заведем еще один массив, также из 10 тех же элементов, но уже упорядоченных по возрастанию.

Наша задача будет состоять в построении этого массива. В качестве первого элемента упорядоченного массива b возьмем первый элемент массива a:

Итак, массив b:

12

Теперь берем второй элемент массива a - это -3 и с помощью процедуры быстрого поиска вставляем его в упорядоченный массив b. Поскольку -3 меньше 12, то он вставится перед 12 и упорядоченный массив b уже будет состоять из 2-х элементов:

-3 12

Берется третий элемент массива a - 25 и вставляется в массив b, получаем:

-3 12 25

И такой процесс будем продолжать до тех пор, пока все n элементов массив a не будут просмотрены. В результате образуется новый упорядоченный массив b.