酸梅汤好喝嘛. 2022-03-08 23:20 采纳率: 100%
浏览 129
已结题

直角坐标系转化为极坐标系 请问一下代码哪里出错了

1.定义Point类:

定义设置函数Set,设置坐标x,y

定义分别取x,y轴坐标分量的函数xOffset与yOffset

定义点的极坐标函数angle与极坐标半径函数radius,分别实现极坐标和极坐标半径转换

2.主函数实现:

定义Point类对象p

键盘输入并设置对象p的坐标x=1,y=2

输出对象p的极坐标和极坐标半径

输出对象p的的直角坐标分量


#include<bits/stdc++.h>
using namespace std;
class point{
    int x,y;
public:
void set(double a,double b){
    x=a;
    y=b;
} 
void xoffset(double a){
cout<<"x offset="<<a<<",";}
void yoffset(double b){
cout<<"y offset="<<b;
}
void angle(double a,double b){
    double c=atan2(b,a);
    cout<<"angle="<<c<<",";
}
void radius(double a,double b){
    double c=sqrt(a*a+b*b);
    cout<<"radius="<<c<<","; 
}
};
int main(){
    double c,d;
    cin>>c>>d;
    point p;
    p.set(c,d);
    p.angle(c,d);
    p.radius(c,d);
    p.xoffset(c);
    p.yoffset(d);
}
  • 写回答

1条回答 默认 最新

  • _GX_ 2022-03-09 01:25
    关注
    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    class Point
    {
        double _x = 0.0;
        double _y = 0.0;
    
    public:
        void Set(double x, double y)
        {
            _x = x;
            _y = y;
        }
    
        double xOffset() const
        {
            return _x;
        }
    
        double yOffset() const
        {
            return _y;
        }
    
        double angle() const
        {
            double theta;
            if (abs(_x) > abs(_y))
                theta = atan(_y / _x);
            else
                theta = M_PI / 2.0 - abs(atan(_x / _y));
            if (_x < 0.0 && _y > 0.0)
                theta = M_PI - theta;
            else if (_x < 0.0 && _y < 0.0)
                theta += M_PI;
            else if (_x > 0.0 && _y < 0.0)
                theta = 2.0 * M_PI - theta;
            return theta;
        }
    
        double radius() const
        {
            return sqrt(_x * _x + _y * _y);
        }
    };
    
    int main()
    {
        double x, y;
        cin >> x >> y;
        Point p;
        p.Set(x, y);
        cout << "angle=" << p.angle() << ", radius=" << p.radius() << endl;
        cout << "xOffset=" << p.xOffset() << ", yOffset=" << p.yOffset() << endl;
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月12日
  • 创建了问题 3月8日

悬赏问题

  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行