Задать вопрос
@lyvch

Как переделать код под ООП?

#include<iostream>
 
using namespace std;
 
int main()
{
    int x, n;
    cout << "Enter x: ";
    cin >> x;
    << "Enter Number of array elements: "; 
    cin >> n;
    cout << "Enter elements of array:" << endl;
    int* arr = new int[n];
    for (int i = 0; i < n; i++) 
        cin >> arr[i];
    if (x == arr[0])
    {
        arr[0] = arr[n - 1];
        arr[n - 1] = x;
        cout << "Array after swapping first and last elements: ";
        for (int i = 0; i < n; i++) 
            cout << arr[i] << " ";
    }
    else cout << "Error";
    delete[] arr;
    return 0;
}
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
ООП предполагает что в задаче есть некая сущность. Объект. И у него должны быть методы. Что происходит в данной задаче? Пользователь вводит x, потом размер массива. Потом сам массив. После этого делаются какие-то манипуляции с массивом. И после этого массив распечатывается на экран. Где тут ООП? Я не знаю! Я чорт возьми не пойму где здесь ООП.

Вобщем скажи своему преподавателю что здесь нет смысла вводить ООП. Код достаточно хорош и концептуален в том виде как он записан. И надо не забывать про принципы KISS/YAGNI которые никто не отменял.
Ответ написан
Комментировать
sheerluck
@sheerluck
#include <iostream>
#include <vector>

class Data
{
    private:
        std::vector<int> elements;
        std::size_t N;

    public:
        explicit Data(const std::size_t size)
            : N{size}
        {
            elements.reserve(size);
            elements.resize(size);
        }
        void fill()
        {
            std::cout << "Enter elements of array:" << std::endl;
            auto index = std::size_t{};
            for (auto &elem : elements)
                std::cin >> elements.at(index++);
        }
        void process(const int x)
        {
            if (x == elements.at(0))
            {
                elements.at(0) = elements.at(N - 1);
                elements.at(N - 1) = x;
                std::cout << "Array after swapping first and last elements: ";
                for (const auto &elem : elements)
                    std::cout << elem << " ";
            }
            else
                std::cout << "Error";
        }
};

int main()
{
    auto x = int{};
    auto n = std::size_t{};
    std::cout << "Enter x: ";
    std::cin >> x;
    std::cout << "Enter Number of array elements: ";
    std::cin >> n;
    auto data = Data{n};
    data.fill();
    data.process(x);
    return 0;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы