Действия над элементами массива
1. Инициализация массива (заключается в присвоении каждому элементу массива одного и того же значения)
§ одномерного
For i:=1 to N do
A[i]:=0;
§ двумерного
For i:=1 to N do
For j:=1 to M do
B[i,j]:=0;
2. Ввод элементов массива
§ одномерного
Write (‘Введите размерность массива N=’);
ReadLn (N);
WriteLn (‘Введите элементы массива’);
For i:=1 to N do
Begin
Write (‘A[‘,i,’]=’);
ReadLn (A[i]);
End;
§ двумерного
Write (‘Введите размерность массива N, M’);
ReadLn (N, M);
WriteLn (‘Введите элементы массива’);
For i:=1 to N do
For j:=1 to M do
Begin
Write (‘B[‘,i,’,’,j’]=’);
ReadLn (B[i,j]);
End;
3. Вывод элементов массива
§ одномерного
WriteLn (‘Вектор А:’);
For i:=1 to N do
Write (A[i]:5);
WriteLn;
§ двумерного
WriteLn (‘Матрица В:’);
For i:=1 to N do
Begin
For j:=1 to M do
Write (B[i,j]:5);
WriteLn;
End;
4. Поиск нулевых элементов в массиве
§ одномерном
k:=0;
For i:=1 to N do
If A[i]=0 then k:=k+1;
§ двумерном
k:=0;
For i:=1 to N do
For j:=1 to M do
If B[i,j]=0 then k:=k+1;
5. Нахождение минимального элемента массива и его места
§ одномерного
min:=A[1];
i_min:=1;
For i:=1 to N do
If A[i]<min then
Begin
min:=A[i];
i_min:=i;
End;
§ двумерного
min:=B[1,1];
i_min:=1;
j_min:=1;
For i:=1 to N do
For j:=1 to M do
If B[i,j]<min then
Begin
min:=B[i,j];
i_min:=i;
j_min:=j;
End;
6. Перестановка минимального и первого элементов в массиве
§ одномерном
r:=A[1];
A[1]:=A[i_min];
A[i_min]:=r;
§ двумерном
r:=B[1,1];
B[1,1]:=B[i_min,j_min];
B[i_min,j_min]:=r;
7. Нахождение суммы положительных элементов массива
§ одномерного
sum:=0;
For i:=1 to N do
If A[i]>0 then sum:=sum+A[i];
§ двумерного
sum:=0;
For i:=1 to N do
For j:=1 to M do
If B[i,j]>0 then sum:=sum+B[i,j];
8. Нахождение произведения нечетных элементов
§ одномерного
prod:=1;
For i:=1 to N do
If (A[i] mod 2) <> 0 Then
prod:=prod*A[i];
§ двумерного
prod:=1;
For i:=1 to N do {Функция Odd(X) возвращает значение}
For j:=1 to M do {ложно, если X нечетно }
If Odd(B[i,j]) Then
prod:=prod*B[i,j];
9. Нахождение суммы положительных элементов выше главной диа-гонали (включая элементы диагоналей).
Элементы на главной диагонали характеризуются тем, что индекс i=j. Для элементов побочной диагонали для любого i индекс столбца j=n-i+1. Элементы областей выше, ниже главной или побочной диагоналей можно задать или порядком изменения индексов или условиями, накладываемыми на индексы:
i=1,2,…,n; j=1,2,…,i i=1,2,…,n; j=i,i+1,…,n
или i>=j или i>=j
i=1,2,…,n; j=1,2,… n-i+1; i=1,2,…,n;j=n-i+1,…,n
или n-i-j+1>=0 или n-i-j+1<=0
sum:=0;
For i:=1 to n do
For j:=i to n do
If B[i,j]>=0 then sum:=sum+B[i,j];
10. Поменять местами максимальный элемент на главной диагонали и минимальный элемент ниже побочной.
Max:=B[1,1];
I_max:=1;
For i:=1 to n do
If B[i,i]> max then
Begin
Max:=B[i,i];
I_max:=i;
End;
Min:=B[1,n];
I_min:=1;
J_min:=n;
For i:=1 to n do
For j:=n-i+1 to n do
If B[i,j]< Min then
Begin
Min:=B[i,j];
I_min:=i;
J_min:=j;
End;
R:=B[I_max,I_max];
B[I_max,I_max]:=B[I_min,J_min];
B[I_min,J_min]:=R;
11. Дана квадратная матрица В размерности nxn. Построить вектор А, где аi – сумма положительных элементов i-ой строки матрицы.
For i:=1 to n do
Begin
S:=0;
For j:=1 to n do
If B[i,j]>0 then S:=S+B[i,j];
A[i]:=S;
End;
12. Дана квадратная матрица В размерности nxn. В каждом столбце оставить без изменения максимальный элемент столбца, остальные элементы заменить нулями.
For j:=1 to n do
Begin
Max:=B[1,j];
I_max:=1;
For i:=1 to n do
If B[i,j]> Max then
Begin
Max:=B[i,j]
I_max:=i;
End;
For i:=1 to n do
If i_max<>i then B[i,j]:=0;
End;
Пример: Дан целочисленный вектор A(n), поменять местами максимальный и минимальный элементы вектора. На печать выдавать исходный вектор, максимальный, минимальный элементы, полученный вектор.
Program Example_Vect;
Uses Crt;
Const
N_max=10;
Var
N,i,max,i_max,min,i_min,r:integer;
A:array [1..N_max] of integer;
Begin
Clrscr;
Write(‘Введите размерность массива N (<’,N_max,’)=’);
ReadLn (N);
WriteLn (‘Введите элементы массива’);
For i:=1 to N do { ввод элементов вектора}
Begin
Write (‘A[‘,i,’]=’);
ReadLn (A[i]);
End;
WriteLn (‘Исходный вектор А:’);
For i:=1 to N do { вывод вектора}
Write (A[i]:5);
WriteLn;
min:=A[1]; {нахождение минимального элемента}
i_min:=1; {и его индекса}
For i:=1 to N do
If A[i]<min then
Begin
min:=A[i];
i_min:=i;
End;
max:=A[1];
i_max:=1; {нахождение максимального элемента}
For i:=1 to N do {и его индекса}
If A[i]>max then
Begin
max:=A[i];
i_max:=i;
End;
WriteLn (‘Минимальный элемент A[‘,i_min,’]=’,min);
WriteLn (‘Максимальный элемент A[‘,i_max,’]=’,max);
r:=A[i_min]; {перестановка}
A[i_min]:=A[i_max];
A[i_max]:=r;
WriteLn (‘Полученный вектор А:’);
For i:=1 to N do {вывод полученного вектора}
Write (A[i]:5);
WriteLn;
End.
Порядок выполнения работы
1.Изучить описание лабораторной работы и ответить на контрольные вопросы.
2.Войти в режим редактирования и набрать текст программы (в соответствии с полученным вариантом задания).
3.Запустить программу на трансляцию и выполнение.
4.Оформить отчет по лабораторной работе, защитить и сдать преподавателю. Отчет должен содержать цель работы, задание, блок-схему программы, распечатку программы и результаты прогона программы.
6. Варианты заданий
Примечание:
На печать необходимо выводить как результирующий массив, так и исходный. Если размерность большая, то рекомендуется массив задавать с помощью генератора случайных чисел.
№ варианта | Постановка задачи |
Составить одномерный массив из максимальных элементов строк матрицы [MxN]. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Определить число элементов матрицы [MxN] кратных A. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Задан двухмерный массив (матрица вещественных чисел). Найти наибольший и наименьший элементы массива. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Перемножить 2 матрицы [MxN] и [NxK]. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Задан двухмерный массив вещественных чисел размерности 3х3. Найти номер строки и номер столбца, в которых находится наименьший элемент. Массив описать как типизированную константу. | |
Вывести все элементы двумерного массива [MxN] кратные A. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. |
Задан двухмерный массив вещественных чисел. Необходимо каждый элемент соответствующей строки разделить на сумму элементов этой строки. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Найти сумму элементов матрицы [MxN], расположенных ниже побочной диагонали. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Найти число отрицательных элементов матрицы [MxN], расположенных в столбцах с номером, кратным A. Размерность асссива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Задан двухмерный массив вещественных чисел. Заменить все отрицательные элементы нулями и подсчитать сумму положительных элементов в каждом столбце. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Найти произведение элементов матрицы [MxN], расположенных выше главной диагонали. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Поменять местами элементы j и k столбцов матрицы [MxN]. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Определить количество элементов матрицы [MxN] больших A и расположенных в четных строках и столбцах. Размерность асссива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Найти минимальный элемент главной диагонали матрицы [MxN]. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Составить одномерный массив из максимальных элементов строк матрицы [MxN]. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Определить число элементов матрицы [MxN] кратных A. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Составить одномерный массив из максимальных элементов строк матрицы [MxN]. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. |
Определить число элементов матрицы [MxN] кратных A. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Задан двухмерный массив (матрица вещественных чисел). Найти наибольший и наименьший элементы массива. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Перемножить 2 матрицы [MxN] и [NxK]. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Задан двухмерный массив вещественных чисел размерности 3х3. Найти номер строки и номер столбца, в которых находится наименьший элемент. Массив описать как типизированную константу. | |
Вывести все элементы двумерного массива [MxN] кратные A. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Задан двухмерный массив вещественных чисел. Необходимо каждый элемент соответствующей строки разделить на сумму элементов этой строки. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Найти сумму элементов матрицы [MxN], расположенных ниже побочной диагонали. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Задан двухмерный массив вещественных чисел. Необходимо каждый элемент соответствующей строки разделить на сумму элементов этой строки. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Найти сумму элементов матрицы [MxN], расположенных ниже побочной диагонали. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Найти число отрицательных элементов матрицы [MxN], расположенных в столбцах с номером, кратным A. Размерность асссива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Задан двухмерный массив вещественных чисел. Заменить все отрицательные элементы нулями и подсчитать сумму положительных элементов в каждом столбце. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. |
Найти произведение элементов матрицы [MxN], расположенных выше главной диагонали. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Поменять местами элементы j и k столбцов матрицы [MxN]. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Определить количество элементов матрицы [MxN] больших A и расположенных в четных строках и столбцах. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Найти произведение элементов матрицы [MxN], расположенных выше главной диагонали. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Поменять местами элементы j и k столбцов матрицы [MxN]. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Определить количество элементов матрицы [MxN] больших A и расположенных в четных строках и столбцах. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры. | |
Составить одномерный массив из максимальных элементов строк матрицы [MxN]. Размерность массива (число строк и (или) число столбцов) и значения его элементов ввести с клавиатуры |
Контрольные вопросы
1. Каково назначение режимов Debug системы Turbo?
2. Какие команды имеются в режимах Debug?
3. Указать особенности программ, использующих массивы.
4. Какие операторы можно использовать для описания массивов?
5. В чем состоит особенность организации цикла при обработке массивов?
6. Указать особенности ввода и вывода массивов.