Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Навчальна Частина. Прикладна область: Алгоритми обробки багатовимірних масивів



Прикладна область: Алгоритми обробки багатовимірних масивів.

Постановка задачі: Створити програму виконання простих операцій над Багатовимірними масивами.

Рекомендації

Під час розробки програмного засобу слід використовувати наступні об’єкти:

· поле ре­да­гування (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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.011 с)...