Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Ввод элементов двумерного массива… for i:=1 to n do for j:=1 to m do readln(a[i]); …
Данный фрагмент позволит ввести элементы массива по строкам. Для ввода элементов массива по столбцам, достаточно в предыдущем фрагменте поменять местами внутренний и внешний циклы.
Вывод элементов двумерного массива … for i:=1 to n do begin for j:=1 to n do write(a[I,j],‘ ‘); writeln; end; …
Данный фрагмент позволит вывести элементы массива в виде матрицы.
Обработка двумерных массивов Рассмотрим типовые задачи обработки двумерных массивов с использованием вложенных циклов.
Задача.
Составить программу подсчета суммы и произведения элементов двумерного массива вещественных чисел. Таблица идентификаторов
program matr; uses crt; var a:array [1...10, 1...10] of real; i, j, n, m: integer; s,p :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]); s:=0; p:=1; { поиск суммы и произведения } for i:=1 to n do for j:=1 to m do begin s:=s + a[i,j]; p:=p * a[i,j]; end; writeln(‘ Сумма элементов s=’,s:8:3); writeln(‘ Произведение элементов p=’,p:8:3); readln; end.
Задача.
Задана квадратная матрица целых чисел. Составить программу подсчета суммы элементов, расположенных над главной диагональю.
Таблица идентификаторов
program matr_1; uses crt; var a:array [1...10, 1...10] of real; i, j, n, m: integer; s,p :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]); for i:=1 to 3 do for j:=i +1 to 3 do s:=s+a[i,j]; writeln('Сумма элементов s=', s); readln; end.
Для ввода элементов массива используются вложенные циклы с указанием номера вводимого элемента. Для поиска суммы элементов над главной диагональю во внутреннем цикле задан закон изменения параметра внутреннего цикла: j:=i+1
Задача.
Задана целочисленная квадратная матрица. Определить является ли она симметричной относительно главной диагонали.
Таблица идентификаторов
program matr_2; uses crt; var a: array [1...10, 1...10] of integer; i, j, n, f : integer; begin clrscr; writeln(‘ Введите n<=10 ’); readln (n,m); writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do for j:=1 to n do readln(a[i,j]); f:=0 for i:=1 to n do for j:=i to n do if a[i,j]<>a[j,i] then f:=1; if f=0 then writeln(‘ матрица симметрична’) else writeln (‘матрица не симметрична’); readln; end.
При решении этой задачи сравниваются элементы расположенные над главной диагональю ( a[ i,j ] ) с элементами, расположенными под главной диагональю ( a[ j,i ] ) .
Задача.
Задана матрица вещественных чисел. Образовать одномерный массив, где каждый j – й элемент равен произведению элементов j-ого столбца двумерного массива. Таблица идентификаторов
program matr_3; uses crt; var a: array [1...10, 1...10] of integer; b: array [ 1..10 ] of integer; i, j, n, f : integer; 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]); writeln(‘ Исходная матрица ’); for i:=1 to n do begin for j:= 1 to n do write( a[I,j] , ‘ ‘); writeln; end; writeln(‘ Образованный одномерный массив ’); for j:=1 to m do begin b[ j ]:=1; { накапливается произведение элементов j столбца } for i:=1 to n do b[ j ]:= b[ j ] * a[ i, j ]; write( b[ j] , ‘ ‘); end; readln; end.
Задача. Задана целочисленная матрица a(m*n). Упорядочить элементы каждой строки по возрастанию. Таблица идентификаторов
program mart_4; uses crt; var a: array[1...10, 1...10] of integer; i,j,n,f : integer; 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]); writeln(‘ Исходная матрица ’); for i:=1 to n do begin for j:=1 to n do write(a[I,j],‘ ‘); writeln; end; { переход от строки к строке } for i:=1 to n do { сортировка i-ой строки } repeat f:=0; for j:=1to m-1 do if a[i,j]>a[i,j+1] then begin p:=a[i,j]; a[i,j]=a[i,j+1]; a[i,j+1]:=p; f:=1; end; until f=0; writeln(‘ Преобразованная матрица ’); for i:=1 to n do begin for j:= 1 to n do write( a[I,j] , ‘ ‘); writeln; end; readln; end.
f =0 - признак того, что все элементы данной строки упорядочены.
Пример программы обработки двумерного массива
Задача. Составить программу нахождения максимального среди элементов двумерного массива вещественных чисел. Определить номер строки и номер столбца, на пересечении которых был найден максимальный элемент. 2. Таблица идентификаторов.
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.
Вопросы для самоконтроля
12.4. Методические указания для выполнения практического задания №8. «Матрицы» Цель работы: Ознакомиться со способом хранения информации в двумерном массиве, матрице. Задание: 1. В приложении 9 выбрать свой вариант задания. 2. Выполнить практическое задание, используя пример программы обработки одвумерного массива. 3. Составить блок-схему алгоритма. 4. Написать программу и отладить ее по заранее подготовленному тесту. 5. Оформить задание в тетради для практических работ. 6. Результат выполнения программы предъявить преподавателю. 7. Ответить на вопросы самоконтроля. 8. Защитить выполненную работу у преподавателя.
Приложение 9. Таблица вариантов заданий
Подпрограммы
Если в программе имеется несколько одинаковых фрагментов, то возникает вопрос: нельзя ли оформить повторяющийся фрагмент в виде отдельного блока, а затем обращаться к нему несколько раз. Аналогичная идея возникает при отладке больших программ – если разбить программу на отдельные блоки, то отладить ее по частям будет проще. На языке Паскаль подпрограммы реализуются в виде функций или процедур.
Функции и процедуры
Функции и процедуры реализуют принципы структурного программирования. К функциям и процедурам обращаются если необходимо: разбить большую задачу на несколько меньших по объему и сложности задач; уменьшить объем программы за счет выделения типовых программных действий в функции или процедуре; создание программных модулей, которые могут быть использованы и в других программах.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-09-14 lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |