以下のプログラムは、作成されたオブジェクトの年齢から標準偏差を計算しようとしています。 Person型。エラー: 'Person *'を '倍精度浮動小数点数'に変換できません 'double stdDev(double *、int)'
ローカルマシンと学校サーバーで実行しようとすると、プログラムはうまく動作します。しかし、私の学校がテストに使用しているウェブサイトMimirを実行すると、以下のエラーメッセージが表示されます。
エラー: 'Person *'を 'double *'に変換できません '1'から 'double stdDev' (double *、int) '
この問題の解決方法を教えてください。私は何が欠けているか、または理解していないのですか?
Person.hpp
/*********************************************************************
** Author: Stephen Boles
** Date: 11.5.17
** Description: Assignment 6: Person
*********************************************************************/
#ifndef PERSON_HPP
#define PERSON_HPP
#include <iostream>
using std::string;
class Person
{
private:
string name;
double age;
public:
Person(string, double);
string getName();
double getAge();
};
#endif
Person.cpp
/*********************************************************************
** Author: Stephen Boles
** Date: 11.5.17
** Description: Assignment 7b: Standard Age
*********************************************************************/
//Include team Header.
#include "Person.hpp"
#include <iostream>
using std::cout;
using std::endl;
using std::string;
Person::Person(string x, double y)
{
name = x;
age = y;
}
string Person::getName()
{
return name;
}
double Person::getAge()
{
return age;
}
stdDev.cpp要するに
/*********************************************************************
** Author: Stephen Boles
** Date: 11.5.17
** Description: Assignment 7b: BPerson
*********************************************************************/
// Include input/output stream and Team header.
#include <iostream>
#include "Person.hpp"
#include <cmath>
// Include standard namepaces
using std::cout;
using std::endl;
using std::string;
double stdDev(double arr[] , int size);
int main()
{
const int ARRAY_SIZE = 2;
double people[2];
Person p1("Boris", 23);
Person p2("Malenko", 25);
people[0] = p1.getAge();
people[1] = p2.getAge();
double a = stdDev(people, ARRAY_SIZE);
cout << a << endl;
return 0;
}
double stdDev(double arr[], int size)
{
int dataPointMean = 0;
int mean = (arr[0]+arr[1])/size;
for (int i = 0; i<size; i++)
{
dataPointMean += (pow ((arr[i] - mean), 2));
}
int sampleVariance = dataPointMean/2;
double sampleStandardDeviation = pow(sampleVariance, 1/2);
cout << sampleStandardDeviation << endl;
return sampleStandardDeviation;
}
'pow(sampleVariance、1/2);' - その2番目の議論は、あなたが思うことをするつもりはありません。 'int'を' int'で割ったものは 'int'を与えます。 – PaulMcKenzie
'stdDev'は2つ以上の要素を扱えると期待されています。 – molbdnilo
また、ソースコードの* compilation *とコンパイルされた実行可能ファイルの実行*を区別する習慣を身につけてください。 C++コードは、PythonやBashコードと同じ意味で*実行されません。 – iksemyonov