37826

Обробка масивів

Лабораторная работа

Информатика, кибернетика и программирование

Мета роботи: вивчити властивості компонента TStringGrid. Компонент TStringGrid При роботі з масивами введення і виведення інформації на екран зручно організовувати у виді таблиць використовуючи компонент TStringGrid. Значення N вводити в компонент Tedit А и В у компонент TStringGrid. Результат після натискання кнопки типу TButton вивести в компонент TStringGrid.

Украинкский

2013-09-25

87 KB

12 чел.

ЛАБОРАТОРНА РОБОТА №6

Тема роботи: Обробка масивів.

Мета роботи: вивчити властивості компонента TStringGrid. Написати програму, що передбачає обробку масивів.

Рекомендована література:

  1.  Бобровский С. И. Delphi 7. Учебный курс. - С.Пб. Питер, 2004. – 735 с.
  2.  Я. М. Глинский Інформатика. Алгоритмізація і програмування. Книжка 1. -  Львів, 2003. – 198 с.
  3.  Симонович С.В., Евсеев Г.А. Занимательное программирование:Delphi. – М.: АСТ-Пресс Книга; Издательство «Развитие», 2003. – 368 с.
  4.  Кен Хендерсон. Руководство Разработчика баз данных в Delphi 2. – К. Диалектика, 1997, - 543 с.

Контрольні запитання:

  1.  Які оператори мови Pascal описують процеси з розгалуженням?
  2.  В яких випадках доцільно викоритовувати оператор case?
  3.  Що називають кнопками-перемикачами?
  4.  Які види кнопок-перемикачів Ви знаєте?
  5.  За що відповдає компонент TcheckBox?
  6.  За що відповдає компонент TRadiogroup?
  7.  Що називають оброблювачем подій та як його створюють?

Теоретичні відомості.

Компонент TStringGrid

При роботі з масивами введення і виведення інформації на екран зручно організовувати у виді таблиць, використовуючи компонент TStringGrid. Останній призначений для відображення інформації у виді двовимірної таблиці, кожена комірчина якої являє собою вікно однорядкового редактора (аналогічно вікну TEdit).

Доступ до інформації здійснюється за допомогою властивості:

Cells[ACol, Arow : Integer] : string;

де ACol, Arow - індекси елементів двовимірного масиву.

Властивості ColCount і RowCount установлюють кількість рядків і стовпчиків у таблиці, а властивості FixedCols і FixedRows задають кількість рядків і стовпчиків фіксованої зони. Фіксована зона виділена іншим кольором, і в неї заборонене введення інформації з клавіатури.

Хід виконання роботи.

Завдання: створити програму для визначення вектора:

,

де А – квадратна матриця; а Y, B – одномірні масиви.

Елементи вектора Y визначаються по формулі;

.

Значення N вводити в компонент Tedit, А и В – у компонент TStringGrid. Результат, після натискання кнопки типу TButton, вивести в компонент TStringGrid.

Панель діалогу приведена на рис.1

Рис. 1.

Настроювання компонента TSstringGrid

Для установки компонента TStringGrid на форму, необхідно на сторінці Additional меню компонентів клацнути мишею по піктограмі. Після цього клацніть мишею в потрібному місці форми. Захоплюючи краї компонента, відрегулюйте його розмір. В інспекторі об'єктів значення властивостей ColCount і RowCount встановіть 2, а FixedCols і FixedRows встановіть 1. Тому що компоненти StringGrid2 і StringGrid3 мають тільки один стовпчик, то в них: ColCount=1, RowCount=2, FixedCols=0 і FixedRows=1. За замовчуванням у компонент TStringGrid заборонене введення інформації з клавіатури, тому необхідно властивість Options goEditing для компонентів StringGrid1 і StringGrid2 встановити в положення True.

Текст програми приведений нижче.

Unit Lab4;

Interface

Uses

 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Grids;

type

 TInputForm = class(TForm)

   StringGrid1: TStringGrid;

   StringGrid2: TStringGrid;

   StringGrid3: TStringGrid;

   Label1: TLabel;

   Edit1: TEdit;

   Button1: TButton;

   Button2: TButton;

   Procedure FormCreate(Sender: TObject);

   Procedure Button1Click(Sender: TObject);

   Procedure Button2Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

const

 Nmax = 10; // Максимальна розмірність масиву

type

 Mas1 = array[1..Nmax] of Extended;

//Оголошення типу одномірного масиву

 Mas2 = array[1..Nmax, 1..Nmax] of Extended; //Оголошення типу двовимірного масиву

var

 InputForm: TInputForm;

 A : Mas2;     // Оголошення двовимірного масиву

 B, Y : Mas1;  // Оголошення одномірних масивів

 N, i, j : integer;

Implementation

{$R *.DFM}

Procedure TInputForm.FormCreate(Sender: TObject);

begin

 N := 3; //Розмірність масиву

 Edit1.Text := FloatToStr(N);

//Завдання числа рядків і стовпчиків

 StringGrid1.ColCount := N + 1;

 StringGrid1.RowCount := N + 1;

 StringGrid2.RowCount := N + 1;

 StringGrid3.RowCount := N + 1;

//Введення в ліву верхню комірчину таблиці назви масиву

 StringGrid1.Cells[0, 0] := 'Масив А';

 StringGrid2.Cells[0, 0] := 'Масив В';

 StringGrid3.Cells[0, 0] := 'Масив У';

//Заповнення верхнього і лівого стовпчиків підписами, що пояснюють

 for i:=1 to N do

 begin

   StringGrid1.Cells[0, i] := 'i='+ IntToStr(i);

   StringGrid1.Cells[i, 0] := 'j='+ IntToStr(i);

 end;

end;

Procedure TInputForm.Button1Click(Sender: TObject);

begin

 N := StrToInt(Edit1.Text);

//Завдання числа рядків і стовпчиків у таблицях

 StringGrid1.ColCount := N + 1;

 StringGrid1.RowCount := N + 1;

 StringGrid2.RowCount := N + 1;

 StringGrid3.RowCount := N + 1;

//Заповнення верхнього і лівого стовпчиків підписами, що пояснюють

 for i:=1 to N do

 begin

   StringGrid1.Cells[0, i] := 'i=' + IntToStr(i);

   StringGrid1.Cells[i, 0] := 'j=' + IntToStr(i);

 end;

end;

Procedure TInputForm.Button2Click(Sender: TObject);

var

 s : extended;

begin

//Заповнення масиву A елементами з тавлиці StringGrid1

 for i:=1 to N do

 for j:=1 to N do

   A[i, j] := StrToFloat(StringGrid1.Cells[j, i]);

//Заповнення масиву B елементами з тавлиці StringGrid2

 for і:=1 to N do

   B[і] := StrToFloat(StringGrid2.Cells[0, і]);

// Множення масиву A на масив B

 for i:=1 to N do

 begin

   s := 0;

   for j:=1 to N do

   s := s + A[i, j]*B[j];

   Y[i] := s;

//Виведення результату в таблицю StringGrid3

   StringGrid3.Cells[0, i] := FloatToStrF(Y[i], ffFixed,6,2);

 end;

end;

end.

Індивідуальне завдання.

В усіх завданнях скалярні перемінні вводити за допомогою компонента TЕdit з відповідним поясненням у виді компонента TLabel. Скалярний результат виводити у виді компонента TLabel. Масиви представляти на формі у виді компонентів TStringGrid, у яких 0-й стовпець і 0-ю рядок використовувати для відображення індексів масивів. Обчислення виконувати, після натискання кнопки типу TButton.

  1.  Задано матрицю розміром . Одержати масив B, присвоївши його k-му елементові значення 0, якщо всі елементи k-го стовпця матриці нульові, і значення 1 у противному випадку.  
  2.  Задано матрицю розміром . Одержати масив B, присвоївши його k-му елементові значення 1, якщо елементи k-ої рядка матриці упорядковані по убуванню, і значення 0 у противному випадку.
  3.  Задано матрицю розміром . Одержати масив B, присвоївши його k-му елементові значення 1, якщо k-а рядок матриці симетричний, і значення 0 у противному випадку.
  4.  Задано матрицю розміром . Визначити k - кількість "особливих" елементів матриці, вважаючи елемент "особливим", якщо він більше суми інших елементів свого стовпця.
  5.  Задано матрицю розміром . Визначити k - кількість "особливих" елементів матриці, вважаючи елемент “особливим”, якщо в його рядку ліворуч від нього знаходяться елементи менші його, а праворуч – більші.
  6.  Задано символьну матрицю розміром . Визначити k - кількість різних елементів матриці (тобто повторювані елементи вважати один раз).
  7.  Дано матрицю розміром . Упорядкувати її рядки по неубуванню їхніх перших елементів.
  8.  Дано матрицю розміром . Упорядкувати її рядки по неубуванню суми їхніх елементів.
  9.   Дано матрицю розміром . Упорядкувати її рядки по неубуванню їхніх найбільших елементів.
  10.  Визначити, чи є задана квадратна матриця n-го порядку симетричною щодо побічної діагоналі.
  11.  Для матриці розміром вивести на екран усі її сідлову точки. Елемент матриці називається сідловою точкою, якщо він є найменшим у своєму рядку й одночасно найбільшим у своєму стовпчикі, або навпаки.
  12.  У матриці n-го порядку переставити рядка так, щоб на головній діагоналі матриці були розташовані елементи, найбільші по абсолютній величині.
  13.  У матриці n-гo порядку знайти максимальний серед елементів, що лежать нижче побічної діагоналі, і мінімальний серед елементів, що  лежать вище головної діагоналі.
  14.  У матриці розміром  поміняти місцями рядок, що містить елемент із найбільшим значенням з рядком, що містить елемент із найменшим.
  15.  З матриці п-го порядку одержати матрицю порядку п-1 шляхом видалення з вихідної матриці рядка і стовпця, на перетинанні яких розташований елемент із найбільшим по модулі значенням.
  16.  Дано масив з k символів. Вивести на екран спочатку всі цифри, що входять у нього, а потім всі інші символи, зберігаючи при цьому взаємне розташування символів у кожній з цих двох груп.
  17.  Дано масив, що містить від 1 до k символів, за яким стоїть крапка. Вивести цей текст у зворотному порядку.
  18.  Дано непорожній масив з цифр. Вивести на екран цифру, що найбільше часто зустрічається в цьому масиві.
  19.   Відсортувати елементи масиву Х по зростанню.
  20.  Елементи масиву Х розташувати в зворотному порядку.
  21.  Елементи масиву Х циклічно зрушити на k позицій уліво.
  22.  Елементи масиву Х циклічно зрушити на n позицій вправо.
  23.  Перетворити масив Х за наступним правилом: усі від’ємні елементи масиву перенести в початок, а всі інші – у кінець, зберігаючи вихідне взаємне розташування, як серед негативних, так і серед інших елементів.
  24.  Елементи кожного з масивів X і Y упорядковані по неубуванню. Об'єднати елементи цих двох масивів в один масив Z так, щоб вони знову виявилися упорядкованими по неубуванню.
  25.  Дано масив з k символів. Чи визначити симетричний він, тобто чи читається він однаково ліворуч праворуч і праворуч ліворуч.
  26.  Дано два масиви. Знайти найменше серед тих елементів першого масиву, що не входить у другий.
  27.  Визначити кількість інверсій у цьому масиві Х (тобто таких пар елементів, у яких більше число знаходиться ліворуч від найменшого:  при  ).
  28.  Дано масив з рядкових латинських букв. Вивести на екран за абеткою всі букви, що входять у цей текст по одному разі.
  29.  Вивести на екран заданий масив з k символів, видаливши з нього повторні входження кожного символу.
  30.  Визначити скільки різних символів входить у заданий текст, що містить не більш k символів і які закінчуються крапкою (у сам текст крапка не входить).
  31.  Задано матрицю розміром . Одержати масив А, присвоївши його k-му елементові значення 1, якщо всі елементи k-го стовпця матриці нульові, і значення 0 у противному випадку.  
  32.  Задано матрицю розміром . Одержати масив А, присвоївши його k-му елементові значення 1, якщо елементи k-ої рядка матриці упорядковані по зростанню, і значення 0 у противному випадку.
  33.  Задано матрицю розміром . Одержати масив А, присвоївши його k-му елементові значення 0, якщо k-а рядок матриці симетричний, і значення 1 у противному випадку.
  34.  Задано матрицю розміром . Визначити k - кількість "особливих" елементів матриці, вважаючи елемент "особливим", якщо він більше суми інших елементів свого стовпця.
  35.  Задано матрицю розміром . Визначити k - кількість елементів матриці, у яких у рядку праворуч від нього знаходяться елементи менші, а – ліворуч великі.
  36.  Задано матрицю розміром . Визначити k - кількість різних елементів матриці (тобто повторювані елементи вважати один раз).
  37.  Дано матрицю розміром . Упорядкувати її рядки по убуванню їхніх перших елементів.
  38.  Дано матрицю розміром . Упорядкувати її рядки по убуванню суми їхніх елементів.
  39.   Дано матрицю розміром . Упорядкувати її рядки по убуванню їхніх найбільших елементів.
  40.  Визначити, чи є задана квадратна матриця n-го порядку симетричної щодо головної діагоналі.
  41.  Дано дійсну квадратну матрицю. Потрібно перетворити матрицю в такий спосіб: поелементно відняти останній рядок із усіх рядків, крім останньої.
  42.  Дано дійсну квадратну матрицю. Потрібно перетворити матрицю в такий спосіб: поелементно відняти останній стовпець з усіх, крім останнього.


 

А также другие работы, которые могут Вас заинтересовать

12668. Windows против Linux или какую систему выбрать для PC 397.5 KB
  Лабораторная работа №1. Тема: Windows против Linux или какую систему выбрать для PC. Цель: ознакомиться с операционной системой Linux в сравнении с Windows. В современном мире не утихает спор между сторонниками Windows и Linux о том какую из этих систем использовать дома и/или на рабо
12669. Работа в Linux. Работа с каталогами и файлами посредством командной и строки и посредством графического интерфейса 235.5 KB
  Лабораторная работа № 2. Тема: Работа в Linux. Работа с каталогами и файлами посредством командной и строки и посредством графического интерфейса. Цель: Научится работать в операционной системе Linux: создавать удалять папки и файлы. Теоретическая часть. В свое время пр...
12670. Офисный пакет KOffice 34 KB
  Лабораторная работа № 3 Тема: Офисный пакет KOffice. Цель: Изучить самостоятельно пункт главного меню Офис. k>Офис. KOffice является бесплатно распространяемым программным продуктом. В состав пакета входят программы: программа KWord аналог программы MSWord выполняет
12671. Файловый менеджер Midnight Commander(MC) 73 KB
  Лабораторная работа 4 Тема: Файловый менеджер Midnight CommanderMC. Цель: Научится работать с приложением Midnight Commander. Теоретическая часть. MC файловый менеджер является практическим аналогом Norton Commander NC. Окно MC состоит из тех же элементов что и окно NC: строки меню левой и ...
12672. Norton Commander: панели, функциональные клавиши 61 KB
  Лабораторная работа №1 Тема: Norton Commander: панели функциональные клавиши. Цель: Научиться работать с программной оболочкой Norton Commander. Общие сведения. Программы оболочки позволяют для выполнения большого количества различных функций заменить набор команд нажатием...
12673. Создание файлов и каталогов в Norton Commander 52.5 KB
  Лабораторная работа №2. Тема: Создание файлов и каталогов. Цель работы: научиться выполнять операции с файлами и каталогами. Теоретическая часть. Копирование файлов и каталогов: Откройте каталог с файлами и или подкаталогами. Произведите выделение файлов ...
12674. Управляющее меню в Norton Commander 52 KB
  Лабораторная работа №3. Тема: Управляющее меню. Цель работы: Научиться пользоваться возможностями меню Norton Commander. Изучить содержание управляющего меню. Содержание работы В корневом каталоге диска D создать новый подкаталог RABOTA и в нем создать файл bo...
12675. Работа с дисками в Norton Commander 38.5 KB
  Лабораторная работа № 4 Тема: Norton Commander. Работа с дисками. Цель работы: Научиться пользоваться утилитами предназначенными для обслуживания дисков в Norton Commander. Теоретические положения Копирование дискет Для запуска утилиты копирования дискет нажмите кла
12676. Работа с архивными файлами в Norton Commander 35.5 KB
  Лабораторная работа № 5 Тема: Работа с архивными файлами. Цель работы: Научиться работать с архивными файлами в Norton Commander. Теоретические положения Работа с архивами Norton Commander позволяет работать с архивными сжатыми файлами. Сжатые файлы занимают меньше мест...