0

我想出了一些代码,但它无法编译。

错误 1 ​​错误 C2296:“^”:非法,左操作数的类型为“双”
2 IntelliSense:表达式必须具有整数或枚举类型

我能够想出的代码如下:

#include<iostream>
#include<cmath>
using namespace std;

void getnumbers();
void showmean();
void showdev();

double x1, x2, x3, mean, dev;

void getnumbers()
{
    cout<<"Please enter three numbers\n";
    cin>>x1,x2,x3;
}

void showmean()
{
    mean=(x1+x2+x3)/3;

    cout<<"The mean of"<<x1<<", "<<x2<<", "<<x3<<" is "<<mean<<endl;
}

void showdev()
{
    dev=sqrt((x1 - mean)^2) + (x2 - mean)^2 + (x3 - mean)^2/3;

    cout<<"The standard deviation of"<<x1<<", "<<x2<<", "<<x3<<" is "<<dev<<endl;
}

int main()
{
    getnumbers();
    showmean();
    showdev();

    system("pause");

    return 0;
}
4

2 回答 2

6
  1. 你不能在 C++ 中获得这样的权力

    • 使用std::pow()orx*x表示数学 x 2
  2. 对于多个输入,它是cin >> x1 >> x2 ...etc

  3. 在你的 SD 等式中,我认为你的接近的括号在数学上是错误的。

    • 它应该是SD = sqrt( (x*x + y*y) / z )。你的密切括号使它成为 x + y*y/3 (或 y 2/3,忘记优先级)
于 2012-10-09T17:22:48.897 回答
2

除了用于平方值的不正确的运算符和缺少括号外,给定的程序没有完成赋值部分,即函数应该返回计算值。例如:

double calculate_mean()
{
    return (x1+x2+x3)/3;
}
于 2012-10-09T17:30:06.063 回答