变得奇怪

Getting strange value

本文关键字:      更新时间:2023-10-16

我目前正在学习C 中的功能,目前正在从事功能为主要方面的作业。

当前,我正在尝试将整个过程的每个操作分为自己的函数。

这是代码:

#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;
void getHWGrades(int homeworks[], int size)
{
    cout << "nEnter the grades, out of 100 points, for the 9 homeworks you completed." << endl;
    cout << "Note that Homework 10 is given to you for free, but is the same grade nas homework 9.n" << endl;
    for (int i = 0; i < 9; i++)
    {
        cout << "Homework " << i + 1 << ": ";
        cin >> homeworks[i];
        while (homeworks[i] > 100 || homeworks[i] < 0)
        {
            cout << "Invalid grade, input homework grade again: ";
            cin >> homeworks[i];
        }
    }
    homeworks[9] = homeworks[8];
    cout << "Homework 10: " << homeworks[9];
}
double quizAverage()
{
    double quizPts;
    cout << "Input your in class quiz average: ";
    cin >> quizPts;
    return quizPts;
}
double labAverage()
{
    double labPts;
    cout << "Input your lab average: ";
    cin >> labPts;
    return labPts;
}
double teamProject()
{
    double teamPts;
    cout << "Input your team project grade: ";
    cin >> teamPts;
    return teamPts;
}
int exam1()
{
    int exam1Pts;
    cout << "Input your exam1 grade: ";
    cin >> exam1Pts;
    return exam1Pts;
}
int exam2()
{
    int exam2Pts;
    cout << "Input your exam2 grade: ";
    cin >> exam2Pts;
    return exam2Pts;
}
double hwAverage(int homeworks[], int size)
{
    double total = 0;
    double homeworkAverage = 0;
    for (int i = 0; i < size; i++)
    {
        total = total + homeworks[i];
    }
    homeworkAverage = (total*1.0) / 10;
    return homeworkAverage;
}

double currentPoints(double& quizPts, double& labPts, double& teamPts, double& homeworkAverage, int& exam1Pts, int& exam2Pts)
{
    double totalPts = ((quizPts / 100.0) * 10) + ((labPts / 100.0) * 10) + ((teamPts / 100.0) * 15) + ((homeworkAverage / 100.0) * 20) + ((exam1Pts / 100.0) * 10) + ((exam2Pts / 100.0) * 15);
    cout << "nYour current points (out of the 80 total available), stand at: " << totalPts;
    return totalPts;
}
double currentAverage(double& totalPts)
{
    double availableAverage = totalPts*(100.0 / 80);
    cout << "nYour current average is: " << availableAverage;
    return availableAverage;
}
int main()
{    
    // keep the console from closing in visual studio
    char charer;
    double totalPts;
    double quizPts, labPts, teamPts, homeworkAverage;
    int exam1Pts, exam2Pts;
    const int ARRAY_SIZE = 10;
    int hwArray[ARRAY_SIZE];
    getHWGrades(hwArray, ARRAY_SIZE);
    quizAverage();
    labAverage();
    teamProject();
    exam1();
    exam2();
    currentPoints(quizPts, labPts, teamPts, homeworkAverage, exam1Pts, exam2Pts);
    currentAverage(totalPts);
    cin >> charer;
}

我认为,我的问题在于函数currentPointscurrentAverage,是当我运行此totalPts-5.09078e+61输出时,并且作为currentAverage函数的后续结果,availableAverage输出为-1.157e+62

我敢肯定,问题与我如何将值从函数传递到函数(我怀疑我正确地执行)有关。

我将如何解决此问题?

预先感谢您。

您需要从Currentpoint()函数中存储返回值。

TotalPts = CurrentPoints(Quizpts,Labpts,Teampts,HomperWorkeraverage,exam1pts,exam2pts); CurrentAverage(TotalPts);

原因是,您将" TotalPt"声明为CurrentPoints()中的局部变量。

"本地变量仅具有函数范围,它不确定到主函数"

为所有其他功能(Quizaverage,Labaverage,Teamproject,exam1,exam2,hwaverage,currentaverage)

我希望,这将解决这个问题!!!

问题与函数无关,而是关于变量。

让我们以quizPts为例:

在主要方法中,您可以声明此变量,但是在将其发送到currentPoints之前,您不会对其进行任何操作。因此,当您这样做时,它具有不确定的值(不确定的c)。

中。

您在quizaverage中使用的其他变量quizPts具有相同的名称,但对于编译器而言并不相同。

尝试在您的主体中:

quizPts = quizAverage();

您问

我将如何解决此问题?

答案是"使用"手表"窗口在您喜欢的IDE中打开的"调试工具"。

仅通过重新阅读代码来找到错误总是很难,但是在调试器中,您可以在每个时间时刻看到变量的所有值。具体而言,在此示例中,您会意识到您的变量从一开始就具有垃圾值(不是初始化),并且此值永远不会改变。

使用这种方法,您可以及时找到自己写这个问题的原因。我希望这将帮助您节省以后的时间。

问题是您使用诸如quizpts和labpts之类的变量,而无需存储任何值。在您的情况下,您必须将函数的返回值存储到相应的变量之前。例如,执行与以下语句相同: quizpts = quizaverage();

相关文章:
  • 没有找到相关文章