Студопедия
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция
|
Пример программы обработки двумерного массива
Задача.
Составить программу нахождения максимального среди элементов двумерного массива вещественных чисел. Определить номер строки и номер столбца, на пересечении которых был найден максимальный элемент.
2. Таблица идентификаторов.
№
| Наименование переменной
| Обозначения в программе
| 1
| Имя двумерного массива
| a
| 2
| Количество строк
| n
| 3
| Количество столбцов
| m
| 4
| Индексы массива
| I,j
| 5
| Значение максимального элемента
| max
| 6
| Номер строки, где найден максимальный элемент
| kmax
| 7
| Номер столбца, где найден максимальный элемент
| lmax
|
3. Листинг программы.
program lab6;
uses
crt;
var
a: array [1...10, 1...10] of real;
i, j, n, m , kmax , lmax: integer;
max :real;
begin
clrscr;
writeln(‘ Введите n<=10 , m<=10 ’);
readln(n,m);
writeln(‘ Введите элементы массива по строкам ’);
for i:=1 to n do
for j:=1 to m do
readln(a[i,j]);
{за максимальный принимается элемент a11 }
max:=a[1,1];
kmax:=1;
lmax:=1;
for i:=1 to n do
for j:=1 to m do
if a[i,j]>max then
begin
max:=a[i,j];
kmax:=i;
lmax:=j;
end;
writeln(‘max=’, max:8:3);
writeln(‘строка - ‘, kmax,’ столбец - ’,lmax);
readln;
end.
Вопросы для самоконтроля
- В чем состоит разница между одномерными и двумерными массивами?
- В каких случаях целесообразно создавать двумерные массивы?
- Как расположены элементы двумерного массива в памяти компьютера?
- Как определить количество элементов в двумерном массиве?
- Как определить размер памяти в байтах, выделенной под хранение двумерного массива?
- Какая матрица называется квадратной?
- Что характеризует элементы, расположенные на главной диагонали, над и под главной диагональю?
Методические указания для выполнения практического задания №8. «Матрицы»
Цель работы: Ознакомиться со способом хранения информации в двумерном массиве, матрице.
Задание:
1. В приложении 9 выбрать свой вариант задания.
2. Выполнить практическое задание, используя пример программы обработки одвумерного массива.
3. Составить блок-схему алгоритма.
4. Написать программу и отладить ее по заранее подготовленному тесту.
5. Оформить задание в тетради для практических работ.
6. Результат выполнения программы предъявить преподавателю.
7. Ответить на вопросы самоконтроля.
8. Защитить выполненную работу у преподавателя.
Приложение 9. Таблица вариантов заданий
Вариант
| Задание
| 1
| В данной действительной матрице размером n*m поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением. Предполагается, что эти элементы единственны.
| 2
| Дана действительная матрица размером n*m, все элементы которой различны. В каждой строке выбирается элемент с наибольшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элемента с найденным значением.
| 3
| Дана целочисленная матрица размером n*m. Написать программу, формирующую двумерный массив по следующему правилу: элементы первой строки – в порядке возрастания индексов столбцов, элементы второй строки – в порядке убывания индексов столбцов и т. д.
| 4
| Дана действительная матрица размером n*m. Найти среднее арифметическое каждого из столбцов, имеющих четные номера.
| 5
| Дана действительная матрица размером n*m. Все элементы с наибольшим значением заменить нулями (таких элементов может быть несколько).
| 6
| Дана целочисленная матрица размером n*m. Написать программу, позволяющую находить сумму наибольших значений элементов ее строк.
| 7
| Дана целочисленная квадратная матрица размером n*m. Написать программу, формирующую два одномерных массива. В один переслать по строкам верхний треугольник матрицы, включая элементы главной диагонали, в другой – нижний треугольник. Полученные массивы распечатать.
| 8
| Дана целочисленная квадратная матрица размером n*m. Написать программу, позволяющую исключать из нее столбец, в котором расположен минимальный элемент главной диагонали.
| 9
| Дана целочисленная квадратная матрица размером n*m. Написать программу, позволяющую поменять местами элементы, расположенные в верхней и нижней четвертях, ограниченные главной и побочной диагоналями (за исключением элементов, расположенных на диагоналях)
| 10
| Задана действительная матрица размером n*m. Написать программу, позволяющую заменить все элементы, наименьшие в строке, на нули.
| 11
| Задана целочисленная матрица размером n*m. Написать программу, позволяющую находить строки с наименьшей и наибольшей суммой и выводить их на печать.
| 12
| Задана целочисленная квадратная матрица размером n*n. Написать программу, преобразующую исходную матрицу по правилу: начетные столбцы разделить на среднее значение диагональных элементов матрицы, а четные оставить без изменения.
| 13
| Задана действительная квадратная матрица размером n*n. Вычислить сумму тех из ее элементов, расположенных на главной диагонали и выше ее, которые превосходят по величине все элементы, расположенные ниже главной диагонали. Если таких элементов нет, то ответом должно служить сообщение об этом.
| 14
| Задана целочисленная квадратная матрица размером n*n (n - четное). Написать программу, позволяющую менять местами элементы первой и второй строк, элементы третьей и четвертой строк и т. д.
| 15
| Даны две действительные квадратные матрицы размером n*n. Получить новую матрицу, прибавлением к элементам каждого столбца первой матрицы, произведения элементов соответствующих строк второй матрицы.
| 16
| Даны две действительные квадратные матрицы размером n*n. Получить новую матрицу умножением элементов каждой строки первой матрицы на наибольшее из значений элементов соответствующей строки второй матрицы.
| 17
| Дана целочисленная квадратная матрица размером n*n. Найти номера строк, все элементы которых – нули.
| 18
| Задан массив из целых чисел размером n и число L. Написать программу, формирующую из него матрицу, содержащую по L элементов в строке. Недостающие элементы заполнить нулями.
| 19
| Дана целочисленная матрица размером n*m (m - четное). Написать программу, позволяющую менять местами элементы первого и последнего столбцов, элементы второго и (n-1)-го столбцов и т. д. до среднего столбца (n - нечетно)
| 20
| Дана действительная квадратная матрица размером n*n (n - четное), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении с этими диагоналями.
| 21
| Дана целочисленная матрица размером n*m. Найти максимальный по модулю элемент среди отрицательных элементов нечетных столбцов.
| 22
| Дана целочисленная матрица размером n*m и число K. Написать программу, переставляющую строки и столбцы таким образом, чтобы максимальный по модулю элемент был расположен на пересечении K–ой строки и K–го столбца.
| 23
| Дана действительная матрица размером n*m. Все элементы с наибольшим значением заменить нулями (таких элементов может быть несколько).
| 24
| Дана целочисленная матрица размером n*m. Написать программу, формирующую двумерный массив по следующему правилу: элементы первой строки – в порядке возрастания индексов столбцов, элементы второй строки – в порядке убывания индексов столбцов и т. д.
| 25
| Дана целочисленная квадратная матрица размером n*n. Написать программу, позволяющую исключать из нее столбец, в котором расположен минимальный элемент главной диагонали.
| 26
| В данной действительной матрице размером n*m обнулить все отрицательные элементы. Подсчитать, количество обнуленных элементов.
| 27
| Дана целочисленная квадратная матрица размером n*n. Найти номера строк, все элементы которых отрицательны.
| 28
| Задана целочисленная квадратная матрица размером n*n (n - четное). Написать программу, позволяющую менять местами элементы первой и последней строк, второй и предпоследней строк и т. д.
| 29
| Задана целочисленная матрица размером n*m. Написать программу, позволяющую находить строки с наименьшим и наибольшим произведением элементов. Вывести на печать номера этих строк.
| 30
| Даны две действительные квадратные матрицы размером n*n. Получить новую матрицу умножением элементов каждой строки первой матрицы на наименьшее из значений элементов соответствующей строки второй матрицы.
|
Подпрограммы
Если в программе имеется несколько одинаковых фрагментов, то возникает вопрос: нельзя ли оформить повторяющийся фрагмент в виде отдельного блока, а затем обращаться к нему несколько раз. Аналогичная идея возникает при отладке больших программ – если разбить программу на отдельные блоки, то отладить ее по частям будет проще. На языке Паскаль подпрограммы реализуются в виде функций или процедур.
Функции и процедуры
Функции и процедуры реализуют принципы структурного программирования.
К функциям и процедурам обращаются если необходимо:
разбить большую задачу на несколько меньших по объему и сложности задач;
уменьшить объем программы за счет выделения типовых программных действий в функции или процедуре;
создание программных модулей, которые могут быть использованы и в других программах.
|