Обробка двовимірних масивів

Для введення і виведення двовимірних масивів можна ви­користовувати ті ж компоненти, що і для одновимірних маси­вів. Крім того, для цих потреб зручно використовувати компо­нент StringGrid, який входить до складу сторінки компонентівAdditional і являє собою таблицю рядків. Кількість стовпців і рядків таблиці визначається властивостями Cols[n] і Rows[n], а звернення до комірки таблиці здійснюється з використанням властивостей Cells[x][y].

Приклад 13.5. Елементи прямокутної матриці mt(4,5) ввести за допомогою компонентаStringGrid, а вивести з використанням компо­нента Label.

Розмістимо на формі компоненти:

  • Label1 — для заголовка «Исходная матрица»;
  • Label2 — для заголовка «Полученная матрица»;
  • Label3 — для виведення самої матриці;
  • StringGrid — таблиця рядків;
  • Button1 — для створення події «Вычислить»;
  • Button2 — для створення події «Конец работы».

Таблиця StringGrid складається з рядків і стовпців, кожен з яких має свій індекс. Елементом таблиці є елемент масиву Cells [j][i], де j — номер стовпця, а і — номер рядка. Як ряд­ки, так і стовпці можуть бути фіксованими і робочими. У фік­сованих комірках звичайно записується заголовна інформація, а в робочих — поточна. При розміщенні компонента StringGrid на формі за допомогою Object Inspector слід встановити такі параметри:

  • ім’я таблиці — Table, (замість StringGrid);
  • RowCount = 4 — кількість рядків у таблиці;
  • ColCount = 5 — кількість стовпців;
  • FixedCols = 0 — заголовних рядків не буде;
  • Fixed Rows = 0 — заголовних стовпців не буде;
  • DefaultColWidth=30 — ширина стовпців;
  • DefaultRowHeight = 15 — висота рядків;
  • GridLineWidth = 1 — товщина ліній у таблиці.

Крім того, для забезпечення введення даних з клавіатури необхідно в нижче наведених властивостях установити значення «true»:

  • Option->goEditing = true;
  • Option->Tabs = true;
  • Option->goAllwaysShowEditor = true.

Працюючи з таблицею, рекомендується виконати таку по­слідовність операцій:

  • після розміщення таблиці на формі, установки її пара­метрів, а також розміщення інших компонентів запустити до­даток на виконання і у відповідних комірках таблиці записати необхідні значення;
  • перехід від одної комірки до іншої робити за допомогою клавіші Tab або клавішами: ↑ ↓ → ←;
  • коли будуть заповнені всі комірки, натиснути кнопку «Вычислить».

При написанні програмного коду треба враховувати, що у властивості StringGrid->Cells[i][j] першим ідентифікатором є номер стовпця, а другим — номер рядка.

Форма і програмний код реалізації даного прикладу мають вигляд:

//-------------------------------------------------------------------------------------------

void__________ fastcall TForm1::Button1Click(TObject *Sender)

{ const n=4, m=5; int i, j; int mt[n][m];

//------------------------------------------------------------ ввод матрицы

for (і = 0; і < n; i++)

{for (j = 0; j < m; j++)

{mt[i][j] = StrToInt(TabIe->Cells[j][i] );

}

}

//---------------------------------------------------------- вывод матрицы

Label3->Caption=" ";

for (і = 0; і < n; i++)

{

for (j = 0; j < m; j++)

{

Label3->Caption=Label3->Caption+StrToInt(mt[i][j]) + " ";

Label3->Caption=Label3->Caption + '\n'; }

}

}

У даному прикладі для виведення матриці використаний компонент LabelЗ лише для того, щоб показати, як можна ви­конувати цю операцію. Її можна здійснити із застосуванням тільки таблиці, навіть не записуючи матрицю в пам’ять ком­п’ютера, тому що з елементами таблиці можна здійснювати різні операції, у тому числі і перестановку рядків.

Приклад 13.6. Ввести прямокутну матрицю mt(4,5) і здійснити в ній перестановку 2-гоі 4-го рядків. Задачу розв’язати за допомо­гою компонента StringGrid.

Для реалізації задачі слід використовувати таблицю з ім’ям Тb1, в яку вводяться елементи матриці, а потім занесені значення переписати з таблиці Тb1 у Тb2. В таблиціТb2 здійснюється перестановка місцями другого і четвертого рядків.

Розмістимо на формі дві таблиці із заголовками «Исходная матрица» і «Полученная матрица». Властивості Name обох таблиць StringGrid1 і StringGrid2 замінимо на більш зручні Tb1 та Тb2. Іншим властивостям таблиць, зазначеним раніше, привласнимо ті ж значення, що й у попередньому прикладі. Для запису заголовків будемо використовувати відповідно ком­поненти Label1 і Label2. Крім того, на формі розташуємо кноп­ки Button1 з назвою «Выполнить» і BitBtn з ім’ям «Close». Вигляд форми і текст програмного коду наведені нижче:


З цього прикладу видно, по-перше, що таблицю можна заповнювати не тільки вручну, але і програмними засобами, і, по-друге, з елементами таблиці можна робити різні операції.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *