Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика. Программирование для библиотечных специалистов. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

a:array [1..50] of integer; begin

for i:=1 to 10 do a[i]:=100; (a[i]:= 2*i+1:

for i:=1 to 10 do write (a[i]:3); {вывод в строчку}

writeln;

readln;

end.

2. Заполнение с клавиатуры

program tabl; var i,n:integer;

a:array [1..50] of integer; begin

for i:=1 to 10 do begin a[i]:=100; (a[i]:= 2*i+1): for i:=1 to 10 do write (a[i]:3); {вывод в строчку}

writeln;

readln;

end.

3. Заполнение массива случайными числами из отрезка

[a;b]

a[i]:=random(b-a+1)+a

random(g) — генерирует случайные числа из интервала [0;g) — (значение g не входит)

randomize; — инициализация функции random(g)

program tabl; var i,n:integer;

a:array [1..50] of integer; begin

randomize;

for i:=1 to 10 do a[i]:=random(10);

for i:=1 to 10 do write (a[i]:3); {вывод в строчку}

writeln;

readln;

end.

Обработка элементов одномерного массива

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

81

Постановка задачи.

Создать одномерный целочисленный массив А из n элементов и вывести его на экран (n ввести с клавиатуры, а сами значения элементов задать случайным образом из диапазона [- 40, 40]). Найти в массиве сумму элементов, кратных 5.

Построение математической модели i,n,s:integer;

s:=s+a[i];

s — результат. Блок-схема:

82

Программный код:

program massiv1; var i,n,s:integer;

a:array [1..20] of integer; begin

randomize;

writeln ('введите количество элементов'); readln (n);

for i:=1 to n do begin; a[i]:=random(81)-40; end;

{вывод элементов в строчку}

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

for i:=1 to n do if a[i] mod 5 =0 then s:=s+a[i]; writeln ('сумма элементов, кратных пяти', s:3);

readln;

end.

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

Постановка задачи.

Создать одномерный вещественный массив К из Т элементов и вывести его на экран (Т ввести с клавиатуры, а сами значения элементов задать случайным образом из диапазона [-30, 30]). Найти в массиве количество положительных элементов.

Построение математической модели. Исходные данные: i, t: integer. Результат: n.

83

Блок-схема:

нач

Т

i=1,T

-

k(i)>0

+

 

 

 

 

n=n+1

n

кон

Программный код:

program massiv2;

var i, t, s: integer;

k: array[1.20] of integer; begin

randomize;

writeln ('введите количество элементов'); readln (t);

for i:=1 to t do begin; k[i]:=random(61)-30; end;

{вывод элементов в строчку} for i:=1 to t do write(k[i]:3); writeln;

84

for i:=1 to t do if k[i]>0 then n:=n+1;

writeln ('количество положительных элементов', n:5);

readln;

end.

Практический блок

Индивидуальные задания:

1.Заполнение одномерного массива.

1.1.Заполните линейную таблицу 12 случайными числами из [-1; 7].

1.2.Заполните линейную таблицу 15 случайными числами из [-10; 5].

1.3.Заполните линейную таблицу 17 случайными числами из [-6; 5].

1.4.Заполните линейную таблицу 13 случайными числами из [-7; 5].

1.5.Заполните линейную таблицу 14 случайными числами из [-7; 2].

1.6.Заполните линейную таблицу 16 случайными числами из [-5; 6].

1.7.Заполните линейную таблицу 17 случайными числами из [-4; 3].

1.8.Заполните линейную таблицу 11 случайными числами из [-1; 5].

1.9.Заполните линейную таблицу 12 случайными числами из [-5; 4].

1.10.Заполните линейную таблицу 14 случайными числами из [-4; 3].

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

2.1. Найдите количество книг фонда из 20 экземпляров, год издания которых до 1954 г. (линейная таблица заполняется случайными числами — годами издания от 1950 по 1990).

2.2. Найдите количество книг фонда из n экземпляров, год издания которых меньше переменной god (линейная

85

таблица заполняется случайными числами — годами издания от god1 по god2).

2.3.Произвольная линейная таблица заполняется случайными числами [-2; 2]. Найдите сумму всех положительных элементов линейной таблицы.

2.4.Произвольная линейная таблица заполняется случайными числами [-5; 5]. Определите количество отрицательных элементов.

2.5.Линейная таблица заполняется годами рождения читателей библиотеки (допустимо заполнение случайным образом). Определите количество читателей старше 20 лет.

2.6.Линейная таблица заполняется годами рождения читателей библиотеки (допустимо заполнение случайным образом). Определите количество читателей младше 20 лет

2.7.Линейная таблица заполняется годами рождения читателей библиотеки (допустимо заполнение случайным образом). Определите количество пенсионеров.

Вопросы и задания для самостоятельной работы

1.Какие способы структурирования данных вы знаете?

2.Приведите примеры массивов из библиотечной деятельности.

3.Какие физические объекты можно сопоставить с одномерным массивом? Двумерным массивом? Трехмерным массивом? Четырехмерным массивом?

4.Назовите характеристики элемента одномерного массива.

5.Зачем резервировать место под массив? Как это сделать?

Творческий блок

Алгоритмы поиска (поиск максимального элемента в линейной таблице). Линейная таблица заполняется годами рождения читателей библиотеки (допустимо заполнение случайным образом). Определите самого старшего читателя и его порядковый номер.

86

ТЕМА 11. СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ. СОРТИРОВКИ

Теоретический блок

Сортировка в общем виде заключается в распределении элементов множества по группам в соответствии с определенными правилами.

Самая простая задача сортировки — упорядочение элементов массива по возрастанию или убыванию (неубыванию и невозрастанию). Другая задача — упорядочение элементов массива по какому-либо признаку, например, по значению функции (элементы массива являются ее аргументами).

Существуют различные методы сортировки. Будем рассматривать каждый из методов на примере задачи сортировки по возрастанию массива из N целых чисел.

Сортировка выбором. Идея метода заключается в том, что находится минимальный элемент массива и меняется местами с первым элементом (с номером 1). Затем минимум ищется среди элементов со второго до последнего и ставится на 1 место, и так далее. Необходимо найти N-1 минимум. Можно искать не минимум, а максимум, и ставить его на N-1 место и так далее место. Также применяют модификацию этого метода с одновременным поиском максимума и минимума. В этом случае количество шагов внешнего цикла N div 2.

Вычислительная сложность сортировки выбором — величина порядка N*N, что обычно записывают как O(N*N). Это объясняется тем, что количество сравнений при поиске первого максимума равно N-1. Затем N-2, N-3, и так далее до 1,

итого: N*(N-1)/2.

87

program Sort_vibor; uses crt;

var a,b: array[1..10] of integer; n,i,r,k,min:integer;

begin clrscr; randomize;

write('Vvedite n'); d:=0; readln(n);write('perw massiv'); writeln; for i:=1 to n do begin a[i]:=random(11); write(a[i]:3);end;

for k:=1 to n-1 do begin min:=k;

88

for i:=k+1 to n do if a[i]<a[min] then min:=i; r:=a[min]; a[min]:=a[k]; a[k]:=r;

writeln; write(k,' prohod'); writeln; for i:=1 to n do write(a[i]:3); writeln; end; writeln(d);

readln;

end.

Тестирование. Проанализируйте изменения элементов массива после каждого прохода.

Сортировка обменом. Алгоритм сортировки обменом — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Его называют еще «метод пузырька».

В практической деятельности этот алгоритм применяется редко, он служит для обучения и понимания сути сортировки.

Алгоритм представляет собой повторяющиеся проходы по массиву. Количество проходов — n-1. За каждый проход, происходит последовательное попарное сравнение элементов. При невыполнении условия (последующий элемент больше предыдущего) выполняется обмен элементов. Таким

89

образом, за каждый проход наименьший элемент, как пузырек, всплывает к началу массива.

Program sort;

var i,r,k,n,g:integer; tab:array[1..100] of integer;

begin

writeln ('vvedite n'); readln(n);

90

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