лабораторные работы лазарус. лабораторные работы на Лазарусе. Лабораторная работа 1 Основные понятия среды Lazarus
Скачать 1.42 Mb.
|
Лабораторная работа №7 Многомерный массив Многомерный массив представляет собой матрицу (таблицу). Описание массива Массив описывается в разделе описания переменных. Var имя массива:array[1..t 1 , 1..t 2 ] of t 3 ; array – массив; of – из; t 1 – количество столбцов массива; t 2 – количество строк массива; t 3 – тип элементов массива, допустимый в языке Object Free Pascal. Пример. Var А:array[1..30, 1..30] of integer; При работе с массивами обычно используется цикл с параметром. Для работы с многомерными массивами используются те же самые ком- поненты, что и при работе с одномерными массивами. Задание 1. Написать программу, вычисляющую количество и произведе- ние ненулевых элементов матрицы. Определим переменные задачи: входные данные: a[i,j]: integer – элементы массива; n, m: integer – количе- ство столбцов и строк соответственно промежуточные переменные: i, j: integer – параметры элементов результат: P: integer – произведение ненулевых элементов; k: integer – количество ненулевых элементов Расположим следующие компоненты на форме (рис. 45). Свойства выбранных компонент: Form1 – Caption – Матрица Label1 – Caption – Введите количество столбцов Label2 – Caption – Введите количество строк Label3 – Caption – Произведение Label4 – Caption – Количество Рис. 45. 53 Button1 – Caption – Сформировать массив Button2 – Caption – Определить Edit1..4 – Text – пусто StringGrid1 – ColCount – 100 RowCount – 100 Visible – False FixedCols – 0 FixedRows – 0 Option – GoEditing – True Процедура для кнопки «Сформировать массив»: procedure TForm1.Button1Click(Sender: TObject); var n,m:integer; begin n:=strtoint(edit1.Text); m:=strtoint(edit2.Text); stringgrid1.ColCount:=n; stringgrid1.RowCount:=m; stringgrid1.visible:=true; end; Процедура и блок-схема (рис. 46) для кнопки «Oпределить»: procedure TForm1.Button2Click(Sender: TObject); var i,j,n,m,k,p:integer; a:array[0..100,0..100] of integer; begin n:=strtoint(edit1.text); m:=strtoint(edit2.text); for i:=0 to n-1 do for j:=0 to m-1 do a[i,j]:=strtoint(stringgrid1.cells[i,j]); p:=1; 54 k:=0; for i:=0 to n-1 do for j:=0 to m-1 do if a[i,j]<>0 then begin p:=p*a[i,j]; k:=k+1; end; edit3.text:=inttostr(k); edit4.text:=inttostr(p); end; Задание 2. В матрице, размерность которой nxn, отрицательные элементы заменить на их квадраты, а положительные элементы уменьшить на 10. Вывес- ти полученный массив. Заполнение исходного массива осуществить с исполь- зованием генератора случайных чисел. Определим переменные задачи: входные данные: a[i,j]: integer – элементы массива; n: integer – количество столбцов и строк промежуточные переменные: i, j: integer – параметры элемента результат: a[i,j]: integer – элементы массива Расположим следующие компоненты на форме( рис. 47). Свойства выбранных компонент: Form1 – Caption – Замена элементов Label1 – Caption – Введите количество элементов StringGrid2 – ColCount – 100 RowCount – 100 Visible – False FixedCols – 0 FixedRows – 0 Рис. 46. Рис. 47. 55 Option – GoEditing –True Button1 – Caption – Сформировать массив Button2 – Caption – Новый массив Edit1 – Text – пусто StringGrid1 – ColCount – 100 RowCount – 100 Visible – False FixedCols – 0 FixedRows – 0 Option – GoEditing – True Процедура для кнопки «Сформировать массив»: procedure TForm1.Button1Click(Sender: TObject); var n,i,j:integer; a:array[0..100,0..100] of integer; begin n:=strtoint(edit1.text); stringgrid1.ColCount:=n; stringgrid1.RowCount:=n; stringgrid1.Visible:=true; Randomize; for i:=0 to n-1 do for j:=0 to n-1 do begin a[i,j]:=random(20)-10; stringgrid1.cells[i,j]:=inttostr(a[i,j]); end; end; Процедура и блок-схема (рис. 48) для кнопки «Новый массив»: procedure TForm1.Button2Click(Sender: TObject); var i,j,n:integer; a:array[0..100,0..100] of integer; begin 56 n:=strtoint(edit1.text); for i:=0 to n-1 do for j:=0 to n-1 do a[i,j]:=strtoint(stringGrid1.cells[i,j]); for i:=0 to n-1 do for j:=0 to n-1 do if a[i,j]<0 then a[i,j]:=sqr(a[i,j]) else if a[i,j]>0 then a[i,j]:=a[i,j]-10; stringgrid2.Visible:=true; StringGrid2.ColCount:=n; for i:=0 to n-1 do for j:=0 to n-1 do StringGrid2.Cells[i,j]:=inttostr(a[i,j]); end; Рис. 48. начало n i:=0..n-1 j:=0..n-1 a[i,j] i:=0..n-1 j:=0..n-1 a[i,j]>0 + – a[i,j]:=a[i,j]-10 a[i,j] конец a[i,j]<0 + – a[i,j]:=sqr(a[i,j]) i:=0..n-1 j:=0..n-1 57 Задания для самостоятельного выполнения Вариант №1 1. Дана матрица В(n, n). Вычислить сумму и число элементов матрицы, находящихся под главной диагональю и на ней. 2. Дана матрица D(n, n). Заменить нулевые элементы матрицы на 1, а все остальные на 10. Вариант №2 1.Дана матрица С(n, n). Вычислить сумму и число положительных эле- ментов матрицы, находящихся над главной диагональю и на ней. 2. Дана матрица В(n, n). Заменить элементы матрицы, кратные одновре- менно 3 и 5, на 100, остальные элементы заменить на 50. Вариант №3 1. Дана матрица С(n, n). Вычислить сумму и произведение элементов матрицы, квадраты которых меньше 225. 2.Дана матрица D(n, n). Записать на место отрицательных элементов матрицы нули, а на место положительных элементов – единицы. Вариант №4 1. Дана матрица В(n, n) и число k. Найти количество элементов матри- цы, равных заданному числу k. 2. Дана матрица В(n, n). Заменить элементы, находящиеся выше главной диагонали и на ней по следующему правилу: отрицательные – на 5, по- ложительные – на 10. Вариант №5 1. Дана матрица С(n, n). Вычислить количество и произведение элемен- тов, кратных 2. 2. Дана матрица В(n, n). Заменить элементы матрицы, большие 10, на их модули, остальные элементы заменить на им противоположные. Вариант №6 1. Дана матрица В(n, n). Найти количество и сумму элементов матрицы, кратных 2. 2. Дана матрица С(n, n). Заменить четные элементы матрицы на их квадраты, остальные элементы заменить на их абсолютные значения. Вариант №7 1. Дана матрица В(n, n). Найти произведение и сумму нечетных элемен- тов матрицы. 2. Дана матрица D(n, n). Заменить отрицательные элементы главной диагонали на 2, а положительные – на 4. Вариант №8 1. Дана матрица В(n, n). Вычислить сумму и произведение элементов матрицы, находящихся на главной диагонали. 2. Дана матрица А(n, n). Заменить на (-5) все элементы матрицы, крат- ные 5. 58 |