![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Прикладна область: Алгоритми обробки багатовимірних масивів.
Постановка задачі: Створити програму виконання простих операцій над Багатовимірними масивами.
Рекомендації
Під час розробки програмного засобу слід використовувати наступні об’єкти:
· поле редагування (Edit)
· Мітка (Label)
· Кнопки (Button)
· Сітка (StringGrid)
· Меню (MainMenu)
Хід роботи
8. Завантажте середовище візуального програмування Delphi.
9. Змініть заголовок (Caption) форми з “Form1” на “Алгоритми обробки багатовимірних масивів” (без лапок).
10. Збережіть виконану на даний момент форму у своїй власній папці (File Þ Save All).
11. Приведіть вигляд форми у відповідності як це показано на рис. 1.
Рис. 1.
12. Заповніть пункти меню наступним чином
13. Створіть дві додаткові форми і приведіть їх до вигляду як на рис.2,3.
Рис. 2.
Рис. 3.
14. Встановіть властивість Options компонента StringGrid, goEditing = true goTabs = true.
15. Запрограмуйте обробники подій Form1:
var Form1: TForm1; implementation {$R *.dfm} uses Unit2, Unit3; procedure TForm1.N11Click(Sender: TObject); begin Form2.ShowModal; end; procedure TForm1.N21Click(Sender: TObject); begin Form3.ShowModal; end; procedure TForm1.N2Click(Sender: TObject); begin Close; end; |
16. Запрограмуйте обробники подій Form2:
var Form2: TForm2; n:integer; implementation {$R *.dfm} {Обробник кнопки Введення n} procedure TForm2.Button1Click(Sender: TObject); begin // Введення n і настроювання компонентів StringGrid if Form2.Edit1.Text='' then ShowMessage('Введіть n') else begin n:=strtoint(Form2.Edit1.Text); if (n<0)or(n>14)then ShowMessage('Недопустиме n') else begin StringGrid1.FixedRows:=0; StringGrid1.FixedCols:=0; StringGrid1.RowCount:=n; StringGrid1.ColCount:=n; StringGrid1.ScrollBars:=ssBoth; StringGrid2.FixedRows:=0; StringGrid2.FixedCols:=0; StringGrid2.RowCount:=n; StringGrid2.ColCount:=n; StringGrid2.ScrollBars:=ssBoth; end; end; end; procedure TForm2.Button2Click(Sender: TObject); Type Tmas=array[0..14] of integer; Var a: array[0..14] of Tmas; b:Tmas; i, j, k, l, r: integer; begin //Введення початкових даних for i:=0 to n-1 do for j:=0 to n-1 do a[i,j]:=StrToInt(StringGrid1.Cells[j,i]); // Пошук координат мінімального елемента матриці k:=0; l:=0; for i:=0 to n-1 do for j:=0 to n-1 do if a[i,j]<a[k,l] then begin k:=i; l:=j;end; // Перестановка місцями -го і -го рядків матриці b:=a[n-1]; a[n-1]:=a[k]; a[k]:=b; // Перестановка місцями -го і -го стовпців матриці for i:=0 to n-1 do begin r:=a[i,n-1]; a[i,n-1]:=a[i,l]; a[i,l]:=r; end; for i:=0 to n-1 do // Виведення перетвореної матриці for j:=0 to n-1 do StringGrid2.Cells[j,i]:=IntToStr(a[i,j]); end; procedure TForm2.Button3Click(Sender: TObject); begin Form2.Close; end; |
17. Запрограмуйте обробники подій Form3:
var Form3: TForm3; n:integer; implementation {$R *.dfm} procedure TForm3.Button1Click(Sender: TObject); begin if Form3.Edit1.Text='' then ShowMessage('Введіть n') else begin n:=strtoint(Form3.Edit1.Text); if (n<0)or(n>14)then ShowMessage('Недопустиме n') else begin StringGrid1.FixedRows:=0; StringGrid1.FixedCols:=0; StringGrid1.RowCount:=n; StringGrid1.ColCount:=n; StringGrid1.ScrollBars:=ssBoth; StringGrid2.FixedRows:=0; StringGrid2.FixedCols:=0; StringGrid2.RowCount:=n; StringGrid2.ColCount:=n; StringGrid2.ScrollBars:=ssBoth; StringGrid3.FixedRows:=0; StringGrid3.FixedCols:=0; StringGrid3.RowCount:=n; StringGrid3.ColCount:=n; StringGrid3.ScrollBars:=ssBoth; end; end; end; procedure TForm3.Button2Click(Sender: TObject); Type Tmas=array[0..14] of real; Var a, b, c: array[0..14] of Tmas; i, j, k: integer; begin for i:=0 to n-1 do // Введення початкових даних for j:=0 to n-1 do a[i,j]:=StrToFloat(StringGrid1.Cells[j,i]); for i:=0 to n-1 do for j:=0 to n-1 do b[i,j]:=StrToFloat(StringGrid2.Cells[j,i]); for i:=0 to n-1 do // Обчислення добутку матриць a і b for j:=0 to n-1 do begin c[i,j]:=0; for k:=0 to n-1 do c[i,j]:= c[i,j]+a[i,k]*b[k,j]; end; for i:=0 to n-1 do // Виведення добутку матриць for j:=0 to n-1 do StringGrid3.Cells[j,i]:=FloatToStr(c[i,j]); end; procedure TForm3.Button3Click(Sender: TObject); begin Form3.Close; end; |
18. Збережіть проект за запустіть його на виконання.
Рис. 4.
Рис. 5.
Завдання для самоконтролю
1. Задані дійсні число та матриця
,
,
. Розробити програму, яка перетворює цю матрицю вилученням тих рядків в яких розміщений елемент
(таких елементів у матриці може бути декілька) Та виводить нову розмірність і матрицю.
2. Задано дві матриці і
,
. Розробити програму, яка будує матрицю
множенням елементів кожного рядка першої матриці на найбільше із значень елементів відповідного рядка другої матриці.
3. Задана матриця ,
. Розробити програму, яка будує логічний вектор
за правилом:
, якщо в
-му рядку цієї матриці кількість від’ємних елементів більша від кількості додатних, інакше –
.
4. Задана квадратна матриця ,
Розробити програму, яка перестановкою рядків і стовпчиків перетворює цю матрицю так, щоб максимальний елемент матриці (вважається, що він єдиний) розмістився в лівому верхньому куті.
5. Задано дійсну матрицю ,
. Розробити програму, яка будує вектор
за правилом: координати вектора
є середніми арифметичними значеннями елементів рядків матриці
.
6. Задано дві квадратних матриці і
,
. Розробити програму, яка будує і друкує вектор
за правилом:
, якщо елементи
-го рядка матриці
більші ніж відповідні елементи
-го рядка матриці
та
в інших випадках.
7. Задано дві цілочислові матриці і
,
. Розробити програму, яка будує і друкує вектор
за правилом:
, якщо всі елементи
-го рядка першої та другої матриць від’ємні та
в інших випадках.
8. Задано дві цілочислові матриці і
,
. Розробити програму, яка будує і друкує вектор
за правилом:
, якщо кількість від’ємних елементів
-го рядка першої матриці дорівнює кількості від’ємних елементів
-го рядка другої матриці та
в інших випадках.
9. Задано дійсні і матриця
,
. Розробити програму, яка обчислює значення
, де
- перший за порядком додатний елемент
-го рядка матриці; якщо в
-му рядку додатних елементів немає, то
. (Для обчислення значення полінома слід скористатися схемою Горнера
).
10. Задана дійсна матриця ,
. Розробити програму, яка обчислює суму її елементів, розміщених на головній діагоналі і вище неї, які перевищують за величиною всі елементи, розміщені нижче головної діагоналі. Якщо таких елементів немає, то виводить повідомлення про це.
11. Задана цілочислова матриця ,
. Розробити програму, яка знаходить і друкує номери тих рядків, у яких всі елементи однакові і номери тих стовпчиків, всі елементи в яких парні. Якщо таких рядків або стовпчиків немає, то виводить повідомлення про це.
12. Задана цілочислова матриця ,
. Розробити програму, яка знаходить і друкує номери тих рядків, елементи яких утворюють симетричні послідовності 1, 2, 3, 3, 2, 1 або 1, 2, 3, 5,3, 2, 1. Якщо таких рядків немає, то виводить повідомлення про це.
13. Задана матриця ,
. Розробити програму, яка знаходить найменше значення серед тих елементів стовпчиків, сума модулів елементів у яких найбільша. (Стовпчиків з найбільшою сумою модулів елементів може бути декілька).
14. Задана цілочислова матриця ,
. Розробити програму, яка знаходить і друкує номери тих рядків, елементи яких є сумою відповідних елементів двох попередніх рядків. Якщо таких рядків немає, то виводить повідомлення про це.
15. Задана цілочислова матриця ,
. Розробити програму, яка здійснює циклічний зсув рядків так, щоб першим став рядок, у якому знаходиться максимальний елемент матриці (вважається, що він єдиний).
16. Задана цілочислова матриця ,
. Розробити програму, яка здійснює циклічний зсув стовпців так, щоб першим став стовпчик, у якому знаходиться мінімальний елемент матриці (вважається, що він єдиний).
17. Задана дійсна матриця ,
. Розробити програму, яка будує вектор
за правилом:
дорівнює сумі модулів тих елементів, які розміщені між першим і останнім включно додатними елементами
-го рядка. Якщо додатних елементів у
-му рядку немає або є тільки один, або вони розміщені поряд, то
.
18. Задана дійсна матриця ,
. Розробити програму, яка будує вектор
за правилом:
дорівнює сумі модулів тих елементів, які розміщені за першим включно від’ємним елементом
-го рядка. Якщо від’ємного елемента у
-му рядку немає, то
.
19. Задана дійсна матриця ,
. Розробити програму, яка будує вектор
за правилом:
дорівнює сумі модулів тих елементів, які розміщені між першим і останнім включно від’ємними елементами
-го рядка. Якщо від’ємних елементів у
-му рядку немає або є тільки один, або вони розміщені поряд, то
.
20. Задана дійсна матриця ,
. Розробити програму, яка будує вектор
за правилом:
дорівнює половині суми модулів максимального і мінімального елементів
-го рядка.
Дата публикования: 2014-11-03; Прочитано: 447 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!