АГУ, Лабораторная работа, Многомерный массив
Цель: изучить многомерные массивы.
План:
1. Понятие многомерного массива.
2. Описание многомерного массива.
Многомерный массив представляет собой матрицу (таблицу).
Описание массива
Массив описывается в разделе описания переменных.
Var имя массива:array[1..t1, 1..t2] of t3;
array – массив; of – из;
t1 – количество столбцов массива;
t2 – количество строк массива;
t3 – тип элементов массива, допустимый в языке 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 (количество ненулевых элементов)
Расположим следующие компоненты на форме (рис. 46).
Свойства выбранных компонент:
Form1 – Caption – Матрица
Label1 – Caption – Введите количество столбцов
Label2 – Caption – Введите количество строк
2
Label3 – Caption – Произведение
Label4 – Caption – Количество
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;
Процедура и блок-схема (рис. 47) для кнопки Определить:
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;
Рис. 46.
3
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 (элементы массива)
Расположим следующие компоненты на форме( рис. 48).
Свойства выбранных компонент:
Form1 – Caption – Замена элементов
Label1 – Caption – Введите количество элементов
StringGrid2 – ColCount – 100
RowCount – 100
Visible – False
FixedCols – 0
FixedRows – 0
Option – GoEditing –True
Рис. 47.
4
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;
Процедура и блок-схема (рис. 49) для кнопки Новый массив:
procedure TForm1.Button2Click(Sender: TObject);
var i,j,n:integer;
a:array[0..100,0..100] of integer;
begin
n:=strtoint(edit1.text);
Рис. 48.
5
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;
Рис. 49.
Задания для самостоятельного выполнения
Вариант №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
или напишите нам прямо сейчас:
Здравствуйте. Скажите пожалуйста, планирую поступать в магистратуру на факультет Психологии « Психология личности»в РГГУ скажите пожалуйста, есть ли у вас, ответы на вступительные экзамены? так как, планирую, сделать акцент на бюджет. Спасибо.
Арсений, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Дистанционная помощь в защите ВКР
Анастасия, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте. Нужна срочно практическая часть вкр, третья глава. Скину похожие работы, на которые можно ориентироваться
Александр, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
вкр по теме: экологический туризм России : анализ состояния, проблемы и перспективы
Людмила, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте вы защищаете ВКР?
Ольга, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать магистерскую ВКР на тему «Совершенствование логистических бизнес-процессов на примере торговой компании». Не менее 100 страниц.
Миша, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте нужна работа Вкр
Лена, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать ВКР 3 раздела Тема строительство строительство жилого дома с применением каркасно-монолитных технологий Антиплагиат от 75% ПЗ и чертежи
Владимир, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.