Как загрузить значения непосредственно в myCircleArry - PullRequest
0 голосов
/ 03 августа 2020

Вот мой класс

#include <fstream>
#include <cstdlib>
#include <math.h>
#include <iomanip>
#include <iostream>
using namespace std;

class Point {
protected:
    int x, y;
    double operator-(const Point& def)
    {
        return sqrt(pow((x - def.x), 2.0) + pow((y - def.y), 2.0));
    }
};

class Circle : public Point {
private:
    int radius;

public:
    Circle()
    { //Point default const called implicitly
        this->x = x;
        this->y = y;
        this->radius = radius;
    }
    void printCircleInfo()
    {
        cout << x << " " << y << " " << radius << " ";
    }
    bool operator=(const Circle& def)
    {
        return (x == def.x) & (y == def.y) & (radius == def.radius);
    }
    bool doIBumpIntoAnotherCircle(Circle anotherCircle)
    {
        if (anotherCircle.radius + radius >= *this - anotherCircle)
            return true;
        return false;
    }
};

Вот основной


int  main()
{
    const int SIZE = 13;
    Circle myCircleArry[SIZE];

    //I want to load the values 5, 3 and 9 to position 0 of the array. 
    // myCircleArry[0] = { 5, 3, 9 };

    cout << endl;
    cout << myCircleArry[0] << ":";
    ifstream Lab6DataFileHandle;

    Lab6DataFileHandle.open("Lab6Data.txt");
    while (!Lab6DataFileHandle.eof()) {
        for (int i = 1; i < SIZE; i++) {
            Lab6DataFileHandle >> myCircleArry[i];
            Lab6DataFileHandle >> myCircleArry[i];
            Lab6DataFileHandle >> myCircleArry[i];
            cout << endl;
            if (myCircleArry[0].doIBumpIntoAnotherCircle(myCircleArry[i])) {
                myCircleArry[i].printCircleInfo();
                cout << " ; ";
                if (*this = ) {
                    cout << "*";
                }
            }
        }
        Lab6DataFileHandle.close();
    }
}

Как мне загрузить 5 3 и 9 в позицию 0 myCircleArry ? Если вы заметили что-то еще не так с кодом, сообщите мне. Пожалуйста, оставьте пример в своем ответе, мы будем очень признательны. Спасибо за ваше время.

1 Ответ

1 голос
/ 03 августа 2020

Прежде всего, вы должны создать конструктор, который принимает аргументы.

Он должен выглядеть примерно так:

Circle(const Point& pt, int radius)
{
    x = pt.x;
    y = pt.y;
    this->radius = radius;
}

или

Circle(int x, int y, int radius)
{
    this->x = x;
    this->y = y;
    this->radius = radius;
}

Убедитесь, что вы все еще есть конструктор по умолчанию:

Circle()
{
    x=y=radius=0;
}

На этом этапе у вас должно быть как минимум 2 конструктора.

Ваш вопрос: How do I load 5 3 and 9 into postion 0 of myCircleArry? Вот как вы это сделаете:

myCircleArry[0] = Circle(5,3,9);

Если вы предпочитаете взять его из файла, сделайте это (при условии, что я предполагаю, что ваш формат файла определен)

int x,y,radius;
Lab6DataFileHandle >> x;
Lab6DataFileHandle >> y;
Lab6DataFileHandle >> radius;
myCircleArry[i] = Circle(x,y,radius);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...