#include <bits/stdc++.h> using namespace std; class point { public: void getab(int a,int b) { m_a=a; m_b=b; } double evaluate() { double x=sqrt(m_a*m_a+m_b*m_b); return x; } int m_a,int m_b; }; void mao(int p[],int n) { for(int i=0; i<n-1; i++) { for(int j=0; j<n-i-1; j++) { if(p[j]>p[j+1]) { int temp=p[j]; p[j]=p[j+1]; p[j+1]=temp; } } } } int main() { double p[5]; for(int i=0; i<5; i++) { int a,b; cin>>a,b; point s; s.getab(a,b); p[i]=s.evaluate(); } mao(p,5); cout<<"与原点的距离:"<<endl; for(int i=0; i<5; i++) { cout<<fixed<<setprecision(2)<<p[i]<<" "; } return 0; }哪里不对,怎么改
时间: 2024-01-12 08:03:07 浏览: 61
万能头文件#include&amp;lt;bits/stdc++.h&amp;gt; using namespace std;
有几个问题需要改正:
1. 在输入 a 和 b 的时候,应该用逗号隔开,而不是用分号。
2. 在 `mao` 函数中,传入的应该是 `double` 类型数组而不是 `int` 类型数组。
3. 在主函数中,应该先输入 a 和 b,再调用 `getab` 函数,而不是在输入时用逗号隔开。
以下是改正后的代码:
```
#include <bits/stdc++.h>
using namespace std;
class point {
public:
void getab(int a, int b)
{
m_a = a;
m_b = b;
}
double evaluate()
{
double x = sqrt(m_a * m_a + m_b * m_b);
return x;
}
int m_a, m_b;
};
void mao(double p[], int n)
{
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
if (p[j] > p[j + 1])
{
double temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}
}
int main()
{
double p[5];
for (int i = 0; i < 5; i++)
{
int a, b;
cin >> a >> b;
point s;
s.getab(a, b);
p[i] = s.evaluate();
}
mao(p, 5);
cout << "与原点的距离:" << endl;
for (int i = 0; i < 5; i++)
{
cout << fixed << setprecision(2) << p[i] << " ";
}
return 0;
}
```
阅读全文