Функция Friend класса Coordinate для преобразования полярности в прямоугольник

Я понятия не имею, как это сделать, я работаю над этим часами. В моем учебнике есть только один пример классов друзей.

Это вопрос «Создайте класс с именем Coord, содержащий две переменные двойной точности
именованные xval и yval, используются для хранения значений x и y точки в прямоугольных координатах.
Методы класса должны включать в себя методы конструктора и отображения и функцию друга
названный convPol (). Функция convPol () должна принимать два числа двойной точности, r
и тэта, представляющая точку в полярных координатах и ​​преобразующая их в прямоугольные координаты.
Для преобразования из полярных в прямоугольные координаты используйте следующие формулы:
x = r cos (тета)
у = г грех (тета)

Это то, что я придумал, но я знаю, что делаю это неправильно, у меня просто нет хорошего ориентира, поскольку во всем учебнике есть только один паршивый пример, и он почти полностью отличается. чтобы быть более конкретным, я не знаю, где использовать ско&(как ссылаться на число), и я знаю, что я не должен был использовать указатели. Может кто-нибудь указать мне правильное направление, пожалуйста?

Это мой код:

#include <iostream>
#include <cmath>
using namespace std;
//ƒclassƒdeclarationƒsection
void ConvPol(double r,double theta, double& xval, double& yval)
{
double x,y;
xval=r*cos(theta);
yval=r*sin(theta);
return;
}

class Coord
{
//ƒfriendsƒlist
friend double ConvPol(Coord&);
private:
double xval;
double yval;
public:

Coord (double = 0, double = 0);  //ƒconstructor
void display();
};
//ƒclassƒimplementationƒsection
Coord::Coord(double x, double y)
{
xval = x;
yval = y;

}
void Coord::display()
{
cout <<xval<<","<<yval;
return;
}
//ƒfriendƒimplementations
void time(double, double, double&, double&);

int main()
{ double xval,yval;
ConvPol(1,5,xval,yval);
Coord a(xval,yval);
a.display();
return 0;
}

-1

Решение

Похоже, вы в замешательстве. Вот мое понимание:

class Coord
{
friend void ConvPol(Coord& point,
double rho, // length
double angle);
};

void ConvPol(Coord& point, double rho, double angle)
{
point.x = rho * cos(angle);  // Assign to the point member x
point.y = rho * sin(angle);  // Assign to the point member y.
}

Согласно требованиям, ConvPol функция преобразуется из полярных координат (rho, angle) в декартовы координаты (x, y). Итак, функция нуждается rho а также angle,

Поскольку функция является автономной (не в методе), она нуждается в Coord экземпляр для получения преобразованных значений. Он передается по ссылке, потому что параметр будет изменен (согласно содержимому функции).

Функция ничего не возвращает, поэтому она имеет тип возврата void,

Потому что функция friend из Coordфункция может обращаться к членам данных напрямую, как если бы не было никаких прав доступа (например, struct).

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector