[МГТУ - 2 курс - ООП] Лабораторная работа №2 (Лабораторная работа №2)
Описание файла
Файл "[МГТУ - 2 курс - ООП] Лабораторная работа №2" внутри архива находится в следующих папках: Лабораторная работа №2, [ООП - 2 курс] Лабораторная работа №2. Документ из архива "Лабораторная работа №2", который расположен в категории "". Всё это находится в предмете "объектно-ориентированное программирование (ооп)" из 3 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "объектно-ориентированное программирование (ооп)" в общих файлах.
Онлайн просмотр документа "[МГТУ - 2 курс - ООП] Лабораторная работа №2"
Текст из документа "[МГТУ - 2 курс - ООП] Лабораторная работа №2"
Министерство образования РФ
Государственное образовательное учреждение высшего профессионального образования «Московский государственный технический университет им. Н. Э. Баумана»
Кафедра ИУ5 «Системы Обработки Информации и Управления»
Лабораторная работа №2
по предмету: «Объектно-ориентированное программирование»
на тему: «Изучение классов ARRAY и ARRAYITERATOR»
Выполнил студент группы ИУ5-31:
Сидякин А.А.
Проверил преподаватель:
Большаков С.А.
Москва 2009
Цель работы: Целью лабораторной работы является продвинутое изучение оболочки (IDE) системы программирования BC 3.1 C++ и классов с массивами (ARRAY и ARRAYITERATOR) библиотеки CLASSLIB
-
Порядок выполнения работы:
-
Описание массивов А и В
-
Ввод данных в массив A (минимально в массив А заносится 5 элементов)
-
Распечататка массива А с помощью метода printContentsOn
-
Распечататка массив А с помощью цикла и метода printOn
-
Распечататка пустого массив В с помощью метода printContentsOn
-
Формирование массива В как копии массива А
-
Распечататка заполненный массив В с помощью метода printContentsOn
-
Распечататка массивов А и В с помощью цикла и использования класса ARRAYITERATOR для этих массивов (описание итераторов и использование функций/методов этого класса - printOn, restart и current)
-
Добавление одного элемента массива и печать массива заново
-
Удаление одного элемента массива и печать массива заново
-
Использованием метода detach из класса AbstractArray
-
Отладка программы
-
Составление диаграммы классов, использованных в программе
22 вариант:
1) Создание массива В без указателя обычным описанием имени массива
2) Использование для ввода с консоли даты (класс Date)
3) Динамическое добавление в массив 1-го элемента
4) Выполнить удаление 3-го элемента из массива B
-
Перечень ошибок исправленных при отладке программы:
1) Копирование массива А в В не методом add, а циклом прямого присваивания значения элементов
2) Ошибка в параметрах метода detach
-
Диаграмма классов потокового ввода-вывода:
-
Листинг программы:
#include <ldate.h>
#include <array.h>
#include <conio.h>
#include <iostream.h>
void main()
{
unsigned int datMonth, datDay, datYear;
Date* dat;
Array A(5);
class MyArr : public Array
{
public:
MyArr(int i):Array(i) {};
void insertEntry(int i) {AbstractArray::insertEntry(i);};
void removeEntry(int i) {AbstractArray::removeEntry(i);};
void setData( int i, Object _FAR * a) {AbstractArray::setData(i, a);}
} B(5);
int n;
for(n=0; n<5; n++)
{
cout << "Inputing " << n+1 << "-st element..." << endl;
cout << "- input month "; cin >> datMonth;
cout << "- input day "; cin >> datDay;
cout << "- input year "; cin >> datYear; cout << endl;
dat = new Date(datMonth, datDay, datYear);
A.add(*dat);
}
cout << "----------" << endl << endl;
A.printContentsOn(cout << "Array A via printContentsOn:" << endl);
cout << endl;
A.printOn(cout << "Array A via printOn:" << endl);
cout << endl;
B.printContentsOn(cout << "Empty array B:" << endl);
cout << endl;
for(n=0; n<5; n++)
{
B.add(A[n]);
}
B.printContentsOn(cout << "Array B as a copy of array A:" << endl);
cout << endl;
cout << "----------" << endl << endl;
ArrayIterator ArrIterA(A);
ArrayIterator ArrIterB(B);
ArrIterA.restart();
cout << "ArrayIterator A:" << endl << "---";
while(ArrIterA)
{
ArrIterA.current().printOn(cout << endl);
ArrIterA++;
}
cout << endl << endl;
ArrIterB.restart();
cout << "ArrayIterator B:" << endl << "---";
while(ArrIterB)
{
ArrIterB.current().printOn(cout << endl);
ArrIterB++;
}
cout << endl << endl;
cout << "----------" << endl << endl;
cout << "Insert 1-st element" << endl;
B.insertEntry(0);
B.setData(0,new Date(11,10,2009));
B.printContentsOn(cout);
cout << endl;
cout << "Remove 3-st element" << endl;
B.removeEntry(2);
B.printContentsOn(cout << endl);
cout << endl;
cout << "Remove element by detach" << endl;
B.detach(1,TShouldDelete::Delete);
B.printContentsOn(cout);
getch();
}
-
Листинг результатов работы программы: