Задача Ломаная на плоскости

Условие и постановка задачи: Ломаная на плоскости задаётся последовательностью пар координат, определяющих положение точек этой ломаной на координатной плоскости. Для двух ломаных определяется сумма — ломаная, состоящая последовательно из точек первой ломаной и, затем, второй ломаной. Геометрически это можно представить соединением отрезком последней точки первой ломаной и первой точки второй.Задание. Написать класс "ломаная на плоскости" и оператор "сумма ломаных";
Код:

#include <iostream>
using namespace std;
#define M 100
class loman {
    int i = 0;
    int *x;
    int *y;
public:
    loman(){
        x=new int[M];
        y=new int[M];
    }
    ~loman(){
        delete[] x;
        y=0;
    }
    void setPoint(int a, int b) {
        *(x+i) = a;
        *(y+i) = b;
        i++;
    };

    loman operator+(loman t) {
        loman temp;
        for (int j = 0; j < i; j++)
            temp.x[j] = x[j], temp.y[j] = y[j];
        for (int j = i; j < t.i; j++)
            temp.x[j] = x[j], temp.y[j] = y[j];
        return temp;
    }
};

int main() {
    loman a, b, c;
    a.setPoint(1, 1);
    a.setPoint(2, 3);
    a.setPoint(3, 6);
    return 0;
}

Точно не знаю почему программа не работает.Может какая-то дыра в программе?


Ответы (1 шт):

Автор решения: MBo

Вот здесь ошибка в индексах и в том, откуда берутся значения

   for (int j = i; j < t.i; j++)
        temp.x[j] = x[j], temp.y[j] = y[j];

Но исправлять её ни к чему, у вас же есть какая-никакая инкапсуляция, и в обоих циклах стоит использовать setPoint.

По-уму, конечно, нужно всё переписать, но непонятно, какого уровня к вам требования предъявляются.

→ Ссылка