Главная страница
Навигация по странице:

  • Задания для самостоятельного выполнения

  • лабораторные работы лазарус. лабораторные работы на Лазарусе. Лабораторная работа 1 Основные понятия среды Lazarus


    Скачать 1.42 Mb.
    НазваниеЛабораторная работа 1 Основные понятия среды Lazarus
    Анкорлабораторные работы лазарус
    Дата05.04.2023
    Размер1.42 Mb.
    Формат файлаpdf
    Имя файлалабораторные работы на Лазарусе.pdf
    ТипЛабораторная работа
    #1039153
    страница5 из 5
    1   2   3   4   5
    Лабораторная работа №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
    1   2   3   4   5


    написать администратору сайта