Главная страница
Навигация по странице:

  • Описание входных данных Первая строка

  • Вторая строка

  • Описание выходных данных Первая строка: Array dimension: «размерность целочисленного массива» Вторая строка

  • Третья строка: Min: «значение вычитания из первого элемента массива всех остальных» Четвертая строка

  • Описание алгоритма Функция: mainФункционал: Главная функцияПараметры: отсутствуютВозвращаемое значение: отсутствует№ Предикат Действия №

  • Блок-схема алгоритма Код программы Файл Base.cpp

  • Файл Base.h ifndef BASEH define BASEHclass Base{ protected: int n; int * a; public: virtual void in_out(); };endifФайл Derived1.cpp

  • Файл Derived3.h ifndef DERIVED3Hdefine DERIVED3Hinclude "Derived2.h"class Derived3: public Derived2{ public: virtual void in_out(); };endifФайл main.cpp

  • Указатель на объект класса и один объект. В основной программе реализовать алгоритм Объявить указатель на объект класса. Создать объект оператором new. 3


    Скачать 0.71 Mb.
    НазваниеУказатель на объект класса и один объект. В основной программе реализовать алгоритм Объявить указатель на объект класса. Создать объект оператором new. 3
    Дата04.04.2022
    Размер0.71 Mb.
    Формат файлаpdf
    Имя файла034009288f8303c2ba050149c6a8e1dd6ef5676e.pdf
    ТипУказатель
    #441985

    Постановка задачи
    Создать базовый класс, содержащий метод наименованием in_out без параметров. Метод организует ввод исходных данных: размерности целочисленного массива и значений элементов целочисленного массива. На базе базового класса создать производный класс 1 содержащий метод целого типа наименованием func. Метод от значения первого элемента целочисленного массива последовательно вычитает значения остальных элементов. Полученный результат возвращает.
    На базе класса 1 создать производный класс 2 содержащий метод целого типа наименованием func.
    Метод суммирует элементы целочисленного массива. Полученный результат возвращает.
    На базе класса 2 создать производный класс 3 содержащий метод наименованием in_out без параметров для вывода исходных данных и вычисленных значений.
    В основной программе использовать один указатель на объект класса и один объект.
    В основной программе реализовать алгоритм:
    1.
    Объявить указатель на объект класса.
    2.
    Создать объект оператором new.
    3.
    Ввод исходных данных: размерности целочисленного массива и значений элементов данного массива.
    4.
    Вычисление значение вычитания от первого элемента массива всех остальных.
    5.
    Вычисление суммы элементов массива.
    6.
    Вывод полученных результатов.
    Описание входных данных
    Первая
    строка:
    «размерность целочисленного массива»
    Размерность массива натуральное число больше или равно 1 и меньше или равно 100.
    Вторая
    строка:
    «последовательность целых чисел»

    Количество целых чисел равно размерности массива и разделены пробелами. Значение каждого числа принадлежит интервалу [-100, 100].
    Описание выходных данных
    Первая
    строка:
    Array dimension:
    «размерность целочисленного массива»
    Вторая
    строка:
    The original array:«последовательность целых чисел»
    Для вывода каждого числа выделяется поле из 5 позиции.
    Третья
    строка:
    Min: «значение вычитания из первого элемента массива всех остальных»
    Четвертая
    строка:
    Sum: «значение суммы элементов массив»
    Метод решения
    Библиотека iostream
    Собственные классы
    Base:
    protected:
    • int n - размер массива, который хранит Base • int * a - массив чисел public:
    • void in_out() - метод считывания длины массива и его самого
    Derived1: protected:
    • int result_sub = 0 - результат работы функции func, определенной в данном классе public:

    • int func() - метод, подсчитывающий разность первого элемента и суммы всех остальных
    Derived2: protected:
    • int result_sum = 0 - результат работы функции func, определенной в данном классе
    (сумма элементов) public:
    • int func() - метод, подсчыитвающий сумму элементов
    Derived3: public:
    • void in_out() - метод, выводящий размер массива, сам массив, значение переменных result_sub и result_sum
    Будет создан объект класса Derived3, а внутри него Derived2, Derived1 и Base по одной штуке каждого
    Номер
    Имя класса
    Имя классанаследника
    Модификатор при наследовании
    Описание
    Переход
    1
    Base
    Класс с функционалом считывания
    Derived1
    public
    2 2
    Derived1
    Класс с функционалом подсчета разности
    Derived2
    public
    3 3
    Derived2
    Класс с функционалом подсчета суммы элементов
    Derived3
    public
    4 4
    Derived3
    Класс с функционалом вывода информации

    Описание алгоритма
    Функция: main
    Функционал: Главная функция
    Параметры: отсутствуют
    Возвращаемое значение: отсутствует

    Предикат
    Действия

    перехода
    Комментарий
    1
    Инициализация объекта d класса Derived3 2
    2
    Вызов метода in_out от Base у объекта d без аргументов
    3 3
    Вызов метода func от Derived1 у объекта d без аргументов
    4 4
    Вызов метода func от Derived2 у объекта d без аргументов
    5 5
    Вызов метода in_out от Derived3 у объекта d без аргументов

    Класс объекта: Base
    Модификатор доступа: public
    Метод: in_out
    Функционал: Считывание массива
    Параметры: отсутствуют
    Возвращаемое значение: отсутствует

    Предикат
    Действия

    перехода
    Комментарий
    1
    Считывание свойства n
    2 2
    Инициализация массива a размера n
    3 3
    Инициализация целочисленной переменной i со значением 0 4
    4
    i < n
    Считывание i-ого элемента массива
    5
    i >= n

    5
    Увеличение i на единицу
    4
    Класс объекта: Derived1

    Модификатор доступа: public
    Метод: func
    Функционал: Подсчитывает разность первого элемента массива a и суммы остальных его элементов
    Параметры: отсутствуют
    Возвращаемое значение: int - ответ

    Предикат
    Действия

    перехода
    Комментарий
    1
    Инициализация целочисленной переменной c со значением первым элементов массива a
    2 2
    Инициализация целочисленной переменной i со значением 1 3
    3
    i < n
    Вычитание из c значения i-ого элемента массива
    4
    i >= n
    Присваивание свойству result_sub значения c
    5 4
    Увеличение i на единицу
    3 5
    Вернуть c

    Класс объекта: Derived2
    Модификатор доступа: public
    Метод: func
    Функционал: Подсчитывает сумму элементов массива
    Параметры: отсутствуют
    Возвращаемое значение: int - сумма элементов массива

    Предикат
    Действия

    перехода
    Комментарий
    1
    Инициализация целочисленной переменной c со значением первым элементов массива a
    2 2
    Инициализация целочисленной переменной i со значением 0 3
    3
    i < n
    Прибавление к c значения i-ого элемента массива
    4
    i >=n
    Присваивание свойству result_sum значения c
    5 4
    Увеличение i на единицу
    3

    5
    Вернуть c

    Класс объекта: Derived3
    Модификатор доступа: public
    Метод: in_out
    Функционал: Выводит информацию о массиве
    Параметры: отсутствуют
    Возвращаемое значение: отсутствует

    Предикат
    Действия

    перехода
    Комментарий
    1
    Вывод "Array dimension: ", значения n и переноса строки
    2 2
    Вывод "The original array:"
    3 3
    Инициализация целочисленной переменной i со значением 0 4
    4
    i < n
    Вывод i-ого элемента массива с учетом табуляции

    i >= n
    Вывод переноса строки, "Min: ", значения result_sub, переноса строки, "Sum: ", значения result_sum

    Увеличение i на единицу
    4
    Блок-схема алгоритма





    Код программы

    Файл Base.cpp
    #include
    #include "Base.h"
    void
    Base::in_out(){
    // Считываем размер массива std::cin >> this->n; // Создаем массив this->a = new int[this-
    >n]; // Считываем элементы массива for (int i =0; i < this-
    >n;++i){ std::cin >> this-
    >a[i];
    }
    }
    Файл Base.h
    #ifndef BASEH
    #define BASEH
    class Base{ protected: int n; int * a; public: virtual void in_out(); };
    #endif
    Файл Derived1.cpp
    #include "Derived1.h"
    int Derived1::func(){
    // Записали значение первого элемента int c = this->a[0];
    // Вычитаем из него остальные for (int i = 1; i < this->n; ++i) { c -= this->a[i];
    }
    // Сохраняем значение внутри класса this->result_sub = c; return c;
    }

    Файл Derived1.h
    #ifndef DERIVED1H
    #define DERIVED1H
    #include "Base.h"
    class Derived1: public Base{ protected:
    int result_sub = 0; public: virtual int func(); };
    #endif
    Файл Derived2.cpp
    #include "Derived2.h"
    int Derived2::func(){
    // Создаем счетчик int c = 0;
    // Прибавляем к нему значения элементов массива for (int i =0; i < this->n; ++i) { c += this->a[i];
    }
    // Сохраняем значение внутри класса this->result_sum = c; return c; }
    Файл Derived2.h
    #ifndef DERIVED2H
    #define DERIVED2H
    #include "Derived1.h"
    class Derived2: public Derived1{ protected:
    int result_sum = 0; public:
    virtual int func();
    };
    #endif

    Файл Derived3.cpp
    #include
    #include "Derived3.h"
    void Derived3::in_out(){
    // Выводим размер массива std::cout << "Array dimension: " << this->n << "\n";
    // Выводим элементы массива std::cout << "The original array:"; for
    (int i = 0; i < this->n; ++i) { std::printf("%5d", this->a[i]);
    }
    // Выводим подсчитанные значения (разность и сумму)
    std::cout << "\nMin: " << this->result_sub << "\nSum: " << this-
    >result_sum; return; }
    Файл Derived3.h
    #ifndef DERIVED3H
    #define DERIVED3H
    #include "Derived2.h"
    class Derived3: public Derived2{ public: virtual void in_out(); };
    #endif
    Файл main.cpp
    #include "Derived3.h"
    int main()
    {
    // Создаем элемент для работы
    Derived3 * d = new Derived3();
    // Вызываем метод считывания массива, он определен в классе Base d->Base::in_out();
    // Вызываем метод подсчета вычитания, он определен в классе Derived1
    d->Derived1::func();
    // Вызываем метод подсчета суммы элементов, он определен в классе
    Derived2
    d->Derived2::func();
    // Выводим информацию о массиве с помощью метода класса Derived3 d->in_out(); return(0); }
    Тестирование
    Входные данные
    Ожидаемые выходные данные
    Фактические выходные данные
    5 1 2 3 4 5
    Array dimension: 5 The original array: 1 2 3 4 5 Min:
    13 Sum: 15
    Array dimension: 5 The original array: 1 2 3 4 5 Min:
    13 Sum: 15 6 9 0 4 -45 99 -32
    Array dimension: 6 The original array: 9 0 4 -45 99 -32
    Min: -17 Sum: 35
    Array dimension: 6 The original array: 9 0 4 -45 99 -32
    Min: -17 Sum: 35



    написать администратору сайта