Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;函数误差_C++ - Fatal编程技术网

C++ C++;函数误差

C++ C++;函数误差,c++,C++,所以在这项作业中,我需要询问评委的分数并计算平均分。还没有到计算部分,但是我已经完成了所有的get score函数。一切似乎都很好,它可以编译,但当我测试时它从不输出第一个cout,它在第一个cout给我一个断点,我不知道为什么。顺便说一下,如果有必要的话,可以使用Xcode。另外,我应该使用参考传递还是“返回分数1;”达到了这个目的 代码如下: #include <iostream> using namespace std; void getJudgeData(double&a

所以在这项作业中,我需要询问评委的分数并计算平均分。还没有到计算部分,但是我已经完成了所有的get score函数。一切似乎都很好,它可以编译,但当我测试时它从不输出第一个cout,它在第一个cout给我一个断点,我不知道为什么。顺便说一下,如果有必要的话,可以使用Xcode。另外,我应该使用参考传递还是“返回分数1;”达到了这个目的

代码如下:

#include <iostream>

using namespace std;

void getJudgeData(double&);

int main()
{
    double  score1, score2, score3, score4, score5;

    getJudgeData(score1);
    getJudgeData(score2);
    getJudgeData(score3);
    getJudgeData(score4);
    getJudgeData(score5);

 return 0;
}

void getJudgeData(double& score)
{
    cout << "Submit your score: ";
    cin >> score;

    while (score < 0.0 || score > 10.0)
    {
        cout << "Please re-enter a score between 0 - 10" << endl;
        cin >> score;
    }
}
#包括
使用名称空间std;
无效判决数据(双倍&);
int main()
{
得双1分,得2分,得3分,得4分,得5分;
getJudgeData(得分1);
getJudgeData(2分);
getJudgeData(3分);
getJudgeData(4分);
getJudgeData(得5分);
返回0;
}
无效判定数据(双倍和分数)
{
cout>评分;
而(分数<0.0 | |分数>10.0)
{
cout评分;
}
}

您实际上没有从函数中读取任何内容

建议的备选方案:

double getJudgeData()
{
    double score
    cout << "Submit your score:";
    cin >> score;

    while (score < 0.0 || score > 10.0)
    {
        cout << "Please re-enter a score between 0 - 10" << endl;
        cin >> score;
    }
    return score;
}

int main()
{
    double score1, score2, score3, score4, score5;
    double highest, lowest;

    score1 = getJudgeData();
    score2 = getJudgeData();
    ...
double getJudgeData()
{
双倍得分
cout>评分;
而(分数<0.0 | |分数>10.0)
{
cout评分;
}
返回分数;
}
int main()
{
得双1分,得2分,得3分,得4分,得5分;
双倍最高,最低;
分数1=获得判断数据();
分数2=获得判断数据();
...

使用g++编译时,我可以看到输出。您可以尝试在cout(即cout)之后使用flush 我应该使用参考传递吗

在这段代码中,我认为您最好使用passbyreference

这些调用与您的声明不匹配

getJudgeData1(score1);
getJudgeData2(score2);
getJudgeData3(score3);
...
您的声明需要在formal参数中引用,如下所示:

// ------------------------v
double getJudgeData1(double& score1);
double getJudgeData2(double& score2);
double getJudgeData3(double& score3);
...
现在,您不再需要返回值:

void getJudgeData1(double& score1);
void getJudgeData2(double& score2);
void getJudgeData3(double& score3);
...
如果你能回忆起形式参数和实际参数的区别,你只需要一个getJudgeData(…)函数


祝你好运,你应该改变两件事

  • 更改函数声明并使用引用传递。双重getJudgeData1(双重&score1)
  • 您应该将std::cout输出到控制台。
    coutWhy你有五个函数做完全相同的事情吗?
    return score1;
    可以工作,但是你在哪里存储返回的值呢?请学习使用数组。如果不是评委,而是1000人的投票。你会为每个做完全相同事情的人创建1000个不同的函数吗?@PaulMcKenzie we我还没有学会它们,所以我绝对不能使用它们。根据你的编辑,你似乎已经解决了你的问题,可能是在下面一个或多个答案的帮助下。你应该对帮助过的答案进行投票,并接受最有帮助的答案。你不应该编辑你的问题来消除给你带来麻烦的代码是的,它在cpp.sh中对我有效,但在Xcode上不起作用。它给了我这个“(lldb)”我编辑了原始帖子。所以对于第一个函数,我用score1调用它,它将其发送进来。但是我使用score作为双精度,用&符号,它将score发送回来,并用该值替换score1。对吗?@HOAX-绝对没有必要“通过引用传递”除非你同时在函数内部读写变量。在这种情况下,你不是。你只是想得到一个值。所以最简单/最干净/最有效的方法是将你的函数视为一个函数…并简单地返回“double”。回答你的问题:是的,返回score1实现了这个目的。我编辑了原始帖子。所以对于第一个函数,我用score1调用它,它将它发送进来。但是我使用score作为双精度,用&符号,它将score发送回来,并用该值替换score1。正确吗?是的,这是正确的更改。如果您只想将这些值输出到控制台,请使用int-ma中的std::cout但是如果你想用这些值来计算一些东西,你也可以这样做。通过引用传递基本上反映了函数内部发生的任何事情。在你的例子中,在getJudgeData1()内。
    void getJudgeData1(double& score1);
    void getJudgeData2(double& score2);
    void getJudgeData3(double& score3);
    ...