Министерство образования Республики Беларусь Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники»
Кафедра систем управления
Лабораторные работы по предмету «ТЕХНОЛОГИИ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ СИСТЕМ УПРАВЛЕНИЯ» ВАРИАНТ 6
ВЫПОЛНИЛА:СТУДЕНТКА ГР.802402 БОЙКО Е.Н.
БГУИР 2010 Лабораторная работа № 1 Программирование алгоритмов с использованием динамических массивов Задание к лабораторной работе Общая постановка. Составить программы – одномерные массивы : задания 1 – 25, двухмерные массивы: задания 26 – 50. Массивы создаются в динамической области памяти с использованием операций NEW и DELETE. Ввод исходных данных: реальный размер массивов и их значения. Обращение к элементам массива – через косвенную адресацию. Заданы два массива – А(5) и В(4). Первым на печать вывести массив, содержащий наибольшее значение. Напечатать также это значение и его порядковый номер.
void __fastcall TForm1::Button1Click(TObject *Sender) { int maxV(0), maxP(0), *A(NULL), *B(NULL), c; char maxA(0); // 'A' - в массиве А, 'B' - в массиве B A = new int[5]; B = new int[4]; for (c = 0; c < 5; c++) A[c] = StrToInt(StringGrid1->Cells[c][1]); for (c = 0; c < 4; c++) B[c] = StrToInt(StringGrid2->Cells[c][1]); maxV = A[0]; for (c = 0; c < 5; c++) if (A[c] > maxV) { maxV = A[c]; maxP = c; maxA = 'A'; } for (c = 0; c < 4; c++) if (B[c] > maxV) { maxV = B[c]; maxP = c; maxA = 'B'; } Memo1->Lines->Add("Наибольшее значение: " + IntToStr(maxV) + " в таблице " + maxA + " индекс " + IntToStr(maxP)); int top, *arr; if (maxA=='A') { top = 5; arr = A; } else { top = 4; arr = B; } for (c = 0; c < top; c++) { Memo1->Lines->Add( IntToStr(arr[c]) + " "); } delete[] A; delete[] B; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Memo1->Clear(); StringGrid1->Cells[0][0] = "i=0"; StringGrid1->Cells[1][0] = "i=1"; StringGrid1->Cells[2][0] = "i=2"; StringGrid1->Cells[3][0] = "i=3"; StringGrid1->Cells[4][0] = "i=4"; StringGrid1->Cells[0][1] = "0"; StringGrid1->Cells[1][1] = "1"; StringGrid1->Cells[2][1] = "2"; StringGrid1->Cells[3][1] = "3"; StringGrid1->Cells[4][1] = "4"; StringGrid2->Cells[0][0] = "j=0"; StringGrid2->Cells[1][0] = "j=1"; StringGrid2->Cells[2][0] = "j=2"; StringGrid2->Cells[3][0] = "j=3"; StringGrid2->Cells[0][1] = '0'; StringGrid2->Cells[1][1] = '1'; StringGrid2->Cells[2][1] = '2'; StringGrid2->Cells[3][1] = '3'; } //---------------------------------------------------------------------------
Лабораторная работа № 3 Классы. Программирование линейных алгоритмов с использованием конструктора, деструктора, friend – функции инициализации set() и функции вывода результатов print()
Задание к лабораторной работе Пользовательский класс Х должен содержать необходимые элементы - данные, которые создаются в динамической области памяти, конструктор для их создания (операция new) и установки их начальных значений: Х(), деструктор: ~ Х (), friend – функция печати: friend void print(), функция, решающая поставленную задачу: friend Void Run(). Код методов и функций – вне пространства определения класса.
#pragma argsused int main(int argc, char* argv[]) { userclassX *uc(NULL); uc = new userclassX(); Run(uc); print(uc); return 0; } //---------------------------------------------------------------------------
Лабораторная работа № 4 Класс «Динамическая строка» и перегрузка операций Задание к лабораторной работе Общая постановка. Пользовательский класс String должен содержать необходимые элементы-данные, которые создаются в динамической области памяти. Конструктор для создания строк: String (…); Деструктор: ~String(); Метод ввода исходной строки: Set(); Метод печати: void print(…); Код методов – вне пространства определения класса. Программа иллюстрирует прямой и косвенный способы обращения к методам. Ввести с клавиатуры строку символов S1. Признак окончания ввода строки – нажатие клавиши «Ввод». Программа должна содержать перегруженную операцию «=», использование которой скопирует S1 в S2 . Исходную и преобразованную строки вывести в файл.
Лабораторная работа № 5 Наследование классов, механизм виртуальных функций Задание к лабораторной работе
Общая постановка. Программа должна содержать: - базовый класс Х, включающий два элемента х1, х2 типа int, - конструктор с параметрами для создания объектов в динамической области памяти, деструктор, - виртуальные методы просмотра текущего состояния и переустановки объектов базового класса в новое состояние. - производный класс У, включающий один элемент у типа int , - конструктор с параметрами и списком инициализаторов, передающий данные конструктору базового класса, - переопределенные методы просмотра текущего состояния объектов и их переустановки в новое состояние. Создать в производном классе метод Run, определяющий: Значение (х1+х2)*у.
Лабораторная работа № 6 Программирование шаблона классов • Задание к лабораторной работе Общая постановка. Даны: число N и последовательность a1, a2, … aN. Создать шаблон класса, порождающий динамические одномерные массивы с элементами различных типов (вещественные, целочисленные, символьные). Тип данных и результат являются параметрами по отношению к классу, программа должна иметь методы инициализации, конструктор, деструктор, метод просмотра значений созданного массива согласно заданному алгоритму. (a1+1), (a2+2) , (a3+3), …, (aN+N);