Код всей программы:
#include <iostream>
#include <cmath>
using namespace std;
/*circle{x,y,r}
x и y - центр окружности, r - радиус*/
/*dots{n}{x,y}*/
const int n = 4;
void findDotsInCircle(double** dotsInCircle,double** dots, double* circle) {
int k = 0;
double a = circle[0];
double b = circle[1];
double r = circle[3];
for (int i = 0; i < n; i++) {
double x = dots[i][0];
double y = dots[i][1];
if (pow(a - x, 2) + pow(b - y, 2) < (r * r)) {
dotsInCircle[k][0] = x;
dotsInCircle[k][1] = y;
k++;
}
}
}
int main(){
double circle[3] = { 2,2,1 };
double** dots = new double* [n]; //вот эта тварь не работает
for (int i = 0; i < n; i++) {
dots[i] = new double[2];
};
dots = {
{0,0},
{1.5,2.5},
{2.5,1.5},
{4,3}
};
double** dotsInCircle = new double* [n];
for (int i = 0; i < n; i++) {
dotsInCircle[i] = new double[2];
};
findDotsInCircle(dotsInCircle, dots, circle);
for (int i = 0; i < n; i++) {
cout << i + 1 << ": [" << dotsInCircle[i][0] << "] [" << dotsInCircle[i][1] << "]" << endl;
}
return 0;
}
Проблема с типами, не могу понять почему компилятор ругается.
Сначала я инициализировал массив double dots[n][2] и сразу присваивал значение. На это компилятор отвечает, что аргументом функции findDotsInCircle не может быть double [4][2]. Я вот это ваще не понял если честно. Ладно...
Переделал инициализацию... Сейчас по моей логике я сначала инициализирую массив как double**, а затем выделяю память. Но теперь он плюется на присвоение значения, мол, это СКАЛЯРНАЯ величина. Где ошибка? Почему это происходит вообще?