Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Прикладна область: Алгоритми обробки багатовимірних масивів.
Постановка задачі: Створити програму виконання простих операцій над Багатовимірними масивами.
Рекомендації
Під час розробки програмного засобу слід використовувати наступні об’єкти:
· поле редагування (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; Прочитано: 431 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!