close

Вход

Забыли?

вход по аккаунту

?

lab2

код для вставкиСкачать
 ЛАБОРАТОРНАЯ РАБОТА №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();
}
Документ
Категория
Рефераты
Просмотров
14
Размер файла
98 Кб
Теги
lab2
1/--страниц
Пожаловаться на содержимое документа