этого им могут потребоваться описания интерфейсов взаимодействия (в Си – заголовочные файлы);
· Вся программа в целом образуют проект. В интегрированных системах проект и все его модули могут быть представлены одним файлом. В традиционных системах программирования (к ним относится и Си/Си++) проект состоит из файлов исходного текста – модулей (обычные текстовые файлы), файла проекта, содержащего список модулей, настройки транслятора и т.п., а также вспомогательных файлов. В этом случае под проект отводится отдельная папка.
2. Разработка алгоритмов программы
2.2 Алгоритм класса
3 Листинг программы
// kursovaya.cpp -- 1 вариант
/* * Задание произвольных целых границ индексов при создании объекта * обращение к отдельному элемнту массива с контролем выхода за его пределы * выполнение операций поэлементного сложения и вычитания массивов * выполнение операций умножения и деления всех элементов массива на скаляр * вывод на экран элемента массива по заданному индексу и всего массива * написать программу, демонстрирующую все разработанные элементы класса */
#include <iostream>
#include <stdexcept>
class ArrayInt
{
public:
class BadIndexException: public std::logic_error // внутренний класс для
// генерирования исключения выхода за пределы массива
{
private:
int bad_index;
public:
explicit BadIndexException(int index,
const std::string& str = "Error: Index of out range.\n"):
logic_error(str), bad_index(index) {}
int bindex (void) const { return bad_index; }
virtual ~BadIndexException (void) throw () {}
};
ArrayInt(void): size_(0), array_(0) {} // конструктор по умолчанию
explicit ArrayInt(std::size_t size): size_(size),
array_(new int [size_]) {} // конструктор с параметрами
ArrayInt(const ArrayInt& arr): size_(arr.size_), // конструтор копирования
array_(new int [size_])
{
for (std::size_t i = 0; i < size_; i++)
array_[i] = arr.array_[i];
}
ArrayInt& operator = (const ArrayInt& arr) // оператор присваивания
{
if (this == &arr)
return *this;
delete [] array_;
size_ = arr.size_;
array_ = new int [size_];
for (std::size_t i = 0; i < size_; i++)
array_[i] = arr.array_[i];
return *this;
}
~ArrayInt() { delete [] array_; } // деструктор
const int& operator [] (std::size_t index) const // неконстантный оператор доступа по индексу
{
if (index < 0 || index >= size_)
throw BadIndexException(index);
return array_[index];
}
int& operator [] (std::size_t index) // неконстантный оператор доступа по индексу
{
return const_cast<int&>(static_cast<const ArrayInt&>(*this)[index]);
}
ArrayInt addInPairs(const ArrayInt& arr) const // поэлементное сложение двух
// объектов ArrayInt
{
if (size_ != arr.size_)
return ArrayInt();
ArrayInt tmp(size_);
for (std::size_t i = 0; i < size_; i++)
tmp.array_[i] = array_[i] + arr.array_[i];
return tmp;
}
ArrayInt subInPairs(const ArrayInt& arr) const // поэлементное вычитание
// двух объектов ArrayInt
{
if (size_ != arr.size_)
return ArrayInt();
ArrayInt tmp(size_);
for (std::size_t i = 0; i < size_; i++)
tmp.array_[i] = array_[i] - arr.array_[i];
return tmp;
}
ArrayInt mull(int digit) const // умножение объекта ArrayInt на число
{
ArrayInt tmp(size_);
for (std::size_t i = 0; i < size_; i++)
tmp.array_[i] = array_[i] * digit;
return tmp;
}
ArrayInt dev(int digit) const // деление объекта ArrayInt на число
{
ArrayInt tmp(size_);
for (std::size_t i = 0; i < size_; i++)
tmp.array_[i] = array_[i] / digit;
return tmp;
}
std::size_t size(void) { return size_; } // возвращает размер массива
private:
std::size_t size_; // размер массива
int* array_; // указатель на int
};
void initArray(ArrayInt& arr); // процедура инициализации массива строк
void lookArray(ArrayInt& arr, const char* delim); // процедура вывода массива
// строк на экран
int main(void)
{
using std::cout;
using std::cin;
using std::endl;
{
ArrayInt one(5), two(5);
// Инициализируем объект one числами введенными с клавиатуры
cout << endl << "Intialization one object"<< endl;
initArray(one);
// Инициализируем объект one числами введенными с клавиатуры
cout << endl << "object one: ";
lookArray(one, " ");
// Инициализируем объект two числами введенными с клавиатуры
cout << endl << endl <<"Intialization array_2 object";
initArray(two);
// Выводим объект two на экран
cout << endl << "object two: ";
lookArray(two, " ");
// Поэлементное сложение объектов one и two
ArrayInt three = one.addInPairs(two);
// Выводим результат поэлементного сложения (объект three) на экран
cout << endl << endl << "Addition one object and two object: ";
lookArray(three, " ");
// Поэлементное вычитание объектов one и two
ArrayInt four = one.subInPairs(two);
// Выводим результат поэлементного вычитания (объект four) на экран
cout << endl << endl << "Subtraction one object and two object: ";
lookArray(four, " ");
// Умножение объекта one на скаляр(в данном случае целое число 10)
ArrayInt five = one.mull(10);
// Выводим результат умножения на экран
cout << endl << endl << "one * 10: ";
lookArray(five, " ");
// Деление объекта one на скаляр(в данном случае целое число 10)
ArrayInt six = one.dev(10);
// Выводим результат деления на экран
cout << endl << endl <<"one / 10: ";
lookArray(six, " ");
}
cout << endl <<"Bye."<< endl;
return 0;
}
void initArray(ArrayInt& arr)
{
for (std::size_t i = 0; i < arr.size(); i++)
{
std::cout << std::endl << "Enter the "<< i + 1 <<" element: ";
std::cin >> arr[i];
}
}
void lookArray(ArrayInt& arr, const char* delim)
{
for (std::size_t i = 0; i < arr.size(); i++)
std::cout << arr[i] << delim;
}
4 Результаты выполнения программы
1. Шишкин, А. Д. Программирование на языке СИ [Текст]: Учебное пособие
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.