СОД
к. ф. - м. н., доц. каф. Информатика Белинская С.И.
Лабораторная работа № 6
Тема: Программирование задач с массивами.
Цель работы: Изучениеописании одномерных и двумерных массивов на языке PASCAL, реализация основных программных элементов: накопления, поисека, формирования
Теоретическая часть
Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом.
Особенности:
• все элементы имеют один тип
• весь массив имеет одно имя
• все элементы расположены в памяти рядом
Примеры:
• список учеников в классе
• квартиры в доме
• школы в городе
• данные о температуре воздуха за год
Описание массива
В разделе TYPE:
type имя_типа = array [тип_индекса] of тип_элемента
В разделе VAR:
var с: mas;
a, b: array [1.. n] of integer;
Как константа:
const a: mas = (0, 5.2, -7.1, 100, 15, 1);
Пример 1
Ввести в диалоге с клавиатуры 20 элементов. Распечатать в столбец.
Program VVod;
const n = 20;
var a: array [1.. n] of real;
i: integer;
……
Begin
writeln('Введите ', n, ' а');
for i:= 1 to n do read(a[i]);
….
writeln(‘Массив А');
for i:= 1 to n do Writeln(a[i]);
Или по- другому, организовать запрос элемента с клавиатуры:
for i:=1 to N do begin
write('a[', i, ']=');
read (a[i]);
end;
Вывод элементов в строку:
writeln('Массив A:');
for i:=1 to N do
write(a[i]:4);
Программные элементы
n Накопление;
n Поиск;
N Формирование.
Поиск максимального элемента в одномерном массиве:
max:= a[1];
for i:= 2 to n do
if a[i] > max then
max:= a[i];
writeln('Максимальный элемент: ', max:6:2);
End.
Кол-во отрицательных и сумма элементов
Program Sum_Num; {накопление, поиск }
const n = 10;
var a: array [1.. n] of integer;
i, sum, num: integer;
Begin
writeln('Введите ', n, ' элементов массива');
for i:= 1 to n do read(a[i]);
sum:= 0; num:= 0;
for i:= 1 to n do begin
if a[i] < 0 then inc(num);
sum:= sum + a[i];
End; writeln('Отрицательных элементов: ',
Num:2); writeln('Сумма элементов: ', sum:5); end.
Сортировка выбором
Program Sort;
const n = 20;
var a: array [1.. n] of integer;
i, j, nmin, buf: integer;
Begin
writeln('Введите ', n, ' элементов массива');
for i:= 1 to n do read(a[i]);
for i:= 1 to n - 1 do begin
nmin:= i;
for j:= i + 1 to n do
if a[j] < a[nmin] then nmin:= j;
buf:= a[i]; a[i]:= a[nmin]; a[nmin]:= buf;
end;
writeln('Упорядоченный массив:');
for i:= 1 to n do write(a[i]:5)
End.
Инициализация двумерного массива
const a: mas2 = ((2, 3, 1, 0),
(1, 9, 1, 3),
(3, 5, 7, 0));
Ввод происходит в 2-х вложенных циклах:
for i:= 1 to m do
for j:= 1 to n do Begin
Writeln(‘Введи ’,j:1,’-ый элемент ’,i:1,’ - строки’);
read (a[i, j]); End;
Получение значений элементов массива
1)Из другого массива:
A:=B;
2)При вычислении значений функции, зависящей от аргумента:
Y=sinx+cosx, где х изменяется от 100 с шагом dх=50 получить 10 элементов массива Mass
Алгоритм
Заполнение целыми случайными числами в диапазоне от -10 до 15
for i:=1 to N do
for j:=1 to M do
A[i,j]:= random(25) - 10;
Вывод на экран матрицы
for i:=1 to N do begin
for j:=1 to M do
write (A[i,j]:5);
writeln;
end;
Задания на лабораторную работу
Описать в разделе Type массив, в разделе переменных использующиеся в программе переменные.
Организовать ввод по запросу с клавиатуры переменные, значения которых являются граничными значениями элементов массива (одномерного или двумерного).
Организовать генерацию элементов массива целыми значениями от А до В.
4. Распечатать элементы одномерного массива по 7 элементов в строку, а элементы двумерного массива, как матрицу.
5. В качестве защиты работы:
Организовать создание одномерного или двумерного массива, если элементы его вычисляются по некоторой формуле для функции, зависящей от меняющегося аргумента.
Вариант 1
Дан вектор А[1:20]
а) найти сумму S элементов из интервала [-3 +6].
б) найти произведение этой суммы на min элемент вектора.
в) найти номер максимального элемента между номерами 5 и 15.
г) удалить 16-ый элемент вектора.
Вариант 2
Дана матрица А[1:3; 1:4]
а) найти разность сумм элементов, попадающих в интервалы [0 5] и [5
15]
б) найти номер минимального элемента в третьем столбце.
в) заменить min элемент в 4-ом столбце на min элемент в третьем столбце.
г) получить среднеарифметическое значение последних 10-ти элементов матрицы.
Вариант 3
Дана матрица А[1:4; 1:4]
а) получить сумму и количество элементов в интервале [-10 +5], и минимальный элемент в третьей строке.
б) получить произведение номеров min и max элементов матрицы.
в) получить среднеарифметическое значение матрицы.
г) получить произведение среднеарифметического значения на min элемент в третьем столбце.
Вариант 4
Дан вектор А [1:20].
а) найти количество и сумму элементов из диапазона [-5 5] и максимальный элемент из последних десяти
б) получить произведение номеров min и max элементов вектора.
в) удалить 6-ой элемент вектора.
г) получить среднеарифметическое значение последних 10-ти элементов вектора.
Вариант 5
Дан вектор А[1:15].
а) найти минимальный элемент
б) найти произведение минимального элемента и суммы элементов вектора, больших - 2
в) найти номер максимального элемента из первых 10 элементов вектора
г) найти произведение среднеарифметического значения вектора на максимальный элемент вектора.
Вариант 6
Дан вектор А[1:25].
а) найти произведение элементов больших - 2 и сумму последних 10 элементов
б) удалить минимальный элемент вектора
в) получить среднеарифметическое значение элементов с четными индексами
г) поменять местами максимальные элементы из первых десяти и последних десяти элементов вектора.
Вариант 7
Дана матрица А[1:4; 1:4].
а) найти минимальный и максимальный элементы матрицы
б) определить число положительных элементов во второй и третьей строках
в) получить среднеарифметическое значение матрицы
г) заменить минимальный элемент в 3-ей строке на 0.
Вариант 8
Дан матрица А[1:6; 1:5].
а) в четных строках найти сумму элементов больших - 3, а в нечетных столбцах произведение положительных элементов.
б) переставить местами минимальный и максимальный элементы матрицы.
в) получить среднеарифметическое значение отрицательных элементов матрицы.
г) в четвертой строке заменить минимальный элемент на 0.
Вариант 9
Дан вектор В[1:25].
а) найти произведение элементов в диапазоне [-3,3] и сумму положительных элементов.
б) удалить минимальный элемент вектора.
в) заменить максимальный элемент вектора среднеарифметическим значением последних 15 элементов.
г) поменять местами максимальные элементы из первых 10 и последних десяти элементов вектора.
Вариант 10
Дан матрица А[1:3:1:3].
а) найти количество N положительных элементов в каждой строке.
б) найти сумму S отрицательных элементов в каждом столбце.
в) заменить минимальный элемент матрицы суммой предыдущих элементов.
г) определить номера минимальных элементов в третьем столбце и второй строке.
Вариант 11
Дан вектор В[1:20].
а) найти минимальный элемент вектора.
б) найти произведение Р ненулевых элементов.
в) вставить за min элементом произведение ненулевых элементов.
г) найти номер максимального из 10 последних элементов вектора.
Вариант 12
Дан вектор В[1:10].
а) найти минимальный и максимальный элементы вектора.
б) поменять местами максимальный и минимальный элементы.
в) получить сумму элементов между их номерами.
г) получить произведение отрицательных элементов.
Вариант 13
Дана матрица [1:3;1:5].
а) найти сумму S элементов >5 и произведение элементов <1
б) найти номера максимального элемента второй строки и третьего столбца.
в) переставить найденные максимальные элементы матрицы.
г) получить среднеарифметическое значение 3-го и 5-го столбцов.
Вариант 14
Дан вектор В[1:15].
а) найти сумму S элементов в диапазоне [-2 2].
б) найти произведение Р элементов в диапазоне [-3 3].
в) получить произведение min и max элементов вектора.
г) получить сумму элементов между max и min элементами вектора.
КОНТРОЛЬНЫЕ ВОПРОСЫ:
1. Способы объявления массивов в TURBO PASCAL.
2. Реализация приема «накопление» при работе с элементами массивов.
3. Порядок задания начальных значений при нахождении минимального или максимального элементов массива.
4. Способы перестановки элементов массива.
5. Порядок удаления элемента из массива.
6. Порядок вставки элемента в массив.
7. Принцип сортировки элементов массива по возрастанию или убыванию.
8. Порядок и смысл использования приема «флажок» в программировании.