ЛАБОРАТОРНАЯ РАБОТА №2. "РЕАЛИЗАЦИЯ ПРОСТЕЙШЕГО КЛАССА" ЦЕЛЬ РАБОТЫ Целью данной лабораторной работы является реализация простейшего абстрактного класса на языке С++. ЗАДАНИЕ Разработать класс ArrayOfInt - массив целых чисел. Размерность массива задавать в конструкторе. Реализовать метод доступа к элементам массива. Реализовать метод Sum - вычисление суммы чисел в массиве. Метод сортировки массива по возрастанию и по убыванию, метод сравнения двух массивов (==, !=). Метод конкатенации (слияния) двух массивов. РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ ИСХОДНЫЙ КОД ПРОГРАММЫ Файл ArrayOfInt.h // файл ArrayOfInt.h // декларация класса ArrayOfInt - массив целых чисел // Размерность массива задана в конструкторе. // Реализован метод доступа к элементам массива. // Реализован метод sum - вычисление суммы чисел в массиве. // Метод сортировки массива по возрастанию и по убыванию, метод сравнения двух // массивов (==, !=). Метод конкатенации (слияния) двух массивов. // Дефиниция - файл ArrayOfInt.cpp #ifndef ARRAY_OF_INT #define ARRAY_OF_INT class ArrayOfInt { public: ArrayOfInt(int size); // конструктор ~ArrayOfInt(); // деструктор int getSize(); // возвращает размер массива int get(int index); // метод доступа к элементам массива void set(int index, int value); // метод установки элементов массива int sum(); //вычисление суммы чисел в массиве // Метод сортировки массива по возрастанию и по убыванию: void sort(bool isIncrease); // методы сравнения двух массивов (==, !=): bool operator ==(ArrayOfInt& array); bool operator !=(ArrayOfInt& array); // Метод конкатенации (слияния) двух массивов: ArrayOfInt& concatenation(ArrayOfInt& array); private: int *p_; // указатель на массив int size_; // размер массива }; #endif// ARRAY_OF_INT Файл ArrayOfInt.cpp #include "ArrayOfInt.h" ArrayOfInt::ArrayOfInt(int size) : size_(size) { p_ = new int[size_]; for (int i = 0; i < size_; i++) p_[i] = 0; } ArrayOfInt::~ArrayOfInt() { delete []p_; } int ArrayOfInt::getSize() { return size_; } int ArrayOfInt::get(int index) { return p_[index]; } void ArrayOfInt::set(int index, int value) { p_[index] = value; } int ArrayOfInt::sum() { int s = 0; for (int i = 0; i < size_; i++) s += p_[i]; return s; } void ArrayOfInt::sort(bool isIncrease) { int buf; //сортировка массива методом пузырька: for(int i = 0; i < size_; i++) { for(int j = 0; j < size_ - 1; j++) { if (isIncrease && p_[j] > p_[j + 1] || !isIncrease && p_[j] < p_[j + 1]) { buf = p_[j]; p_[j] = p_[j + 1]; p_[j + 1] = buf; } } } } bool ArrayOfInt::operator ==(ArrayOfInt& array) { if (size_ != array.getSize()) return false; for(int i = 0; i < size_; i++) { if (p_[i] != array.get(i)) return false; } return true; } bool ArrayOfInt::operator !=(ArrayOfInt& array) { return !(*this == array); } ArrayOfInt& ArrayOfInt::concatenation(ArrayOfInt& array) { ArrayOfInt tempArray(size_); int i; for(i = 0; i < size_; i++) { tempArray.set(i, p_[i]); } delete []p_; int newSize = size_ + array.getSize(); p_ = new int[newSize]; for(i = 0; i < size_; i++) { p_[i] = tempArray.get(i); } for(int j = 0; j < array.getSize(); j++) { p_[i++] = array.get(j); } size_ = newSize; return *this; } Файл main.cpp #include "ArrayOfInt.h" #include <iostream> #include <conio.h> #include <time.h> using namespace std; void showArray(ArrayOfInt& array) // вывод массива на экран { for (int i = 0; i < array.getSize(); i++) cout << array.get(i) << " "; } void main() { ArrayOfInt arr(10); // установка начальной точки для генерации псевдослучайных целых чисел: srand ((unsigned int)time(NULL)); // заполнение массива: for (int i = 0; i < arr.getSize(); i++) arr.set(i, rand() % 10); // вывод массива на экран: cout << "Array 1:" << endl; showArray(arr); // вычисление и вывод на экран суммы чисел в массиве: cout << endl << "Array 1 sum = " << arr.sum() << endl; // сортировки массива по убыванию: arr.sort(false); cout << "Decrease Sorted array 1:" << endl; showArray(arr); ArrayOfInt arr2(10); // заполнение массива: for (int i = 0; i < arr2.getSize(); i++) arr2.set(i, rand() % 10); // вывод массива на экран: cout << endl << "Array 2:" << endl; showArray(arr2); cout << endl; //сравнение массивов: if( arr == arr2) cout << "Array 1 == Array 2"; else cout << "Array 1 != Array 2"; // сортировки массива по возрастанию: arr.sort (true); cout << endl << "Increase Sorted array 1:" << endl; // вывод массива на экран: showArray(arr); cout << endl; //сравнение массивов: if( arr == arr2) cout << "Array 1 == Array 2"; else cout << "Array 1 != Array 2"; // заполнение массива: for (int i = 0; i < arr2.getSize(); i++) arr2.set(i, rand() % 100); // вывод массива на экран: cout << endl << "Array 2:" << endl; showArray(arr2); //конкатенация (слияния) двух массивов: arr.concatenation(arr2); cout << endl << "Array 1 (concatenated with array 2):" << endl; // вывод массива на экран: showArray(arr); _getch(); }
1/--страниц