C++ C++;平均计算函数返回0

C++ C++;平均计算函数返回0,c++,C++,我正在编写一个程序,计算用户定义的玩家数量的击球平均数。该程序显示球员的姓名、击球次数、命中次数和平均击球率。最后,它显示球员击球的总次数、总命中次数和总平均数。出于某种原因,计算单个玩家平均值和总体平均值的函数返回0。这可能是个小问题,但我不知道该如何解决它 //Batting Average Calculator #include <iostream> #include <string> #include <iomanip> using namespac

我正在编写一个程序,计算用户定义的玩家数量的击球平均数。该程序显示球员的姓名、击球次数、命中次数和平均击球率。最后,它显示球员击球的总次数、总命中次数和总平均数。出于某种原因,计算单个玩家平均值和总体平均值的函数返回0。这可能是个小问题,但我不知道该如何解决它

//Batting Average Calculator

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

//Create Structure
struct Record
{
    string name;
    int AB;
    int hit;
    double avg;
};


int getSize(int);
void getData(Record[], int );
int calculateTotalAB(Record[], int, int);
int calculateTotalHit(Record[], int, int);
double calculateTotalAvg(Record[], int, double);
void calculateAvg(Record[], int);
void display(Record[], int, int , int, double);


int main()
{
    const int MaxSize = 50;
    Record players[MaxSize]; 

    int size = 0;
    int totalAB = 0;
    int totalHit = 0;
    double totalAvg = 0;

    size = getSize(size);
    getData(players, size);
    totalAB = calculateTotalAB(players, size, totalAB);
    totalHit = calculateTotalHit(players, size, totalHit);
    calculateAvg(players,size);
    totalAvg = calculateTotalAvg(players, size, totalAvg);
    display(players, size, totalHit, totalAB, totalAvg);
}

//get number of players to be calculated
int getSize(int size)
{
    cout << "Please enter the number of players on the team: ";
    cin >> size;
    return size;
}

//get Player name, AB, and hit
void getData(Record players[], int size)
{
    string dummy;
    getline(cin, dummy);
    for (int i = 0; i < size; i++)
    {
        cout << "Please input the name of student " << i + 1 << ": ";
        getline(cin, players[i].name);
        cout << "Please input the number of times "<<  players[i].name << " was at bat:  ";
        cin >> players[i].AB;
        cout << "Please input the number of hits for " << players[i].name << ": ";
        cin >> players[i].hit;
        cout << " " << endl;
        getline(cin, dummy);
    }
}

int calculateTotalAB(Record players[], int size, int totalAB)
{

    for (int i = 0; i < size; i++)
    {
        totalAB = totalAB + players[i].AB;
    }
    return totalAB;
}

int calculateTotalHit(Record players[], int size, int totalHit)
{

    for (int i = 0; i < size; i++)
    {
        totalHit = totalHit + players[i].hit;
    }
    return totalHit;
}

void calculateAvg(Record players[], int size)
{
    for (int i = 0; i < size; i++)
    {
        players[i].avg = players[i].hit / players[i].AB;
    }
}

double calculateTotalAvg(Record players[], int size, double totalAvg)
{
    double j = 0;
    for (int i = 0; i < size; i++)
    {
        j = j + players[i].avg;
    }
    totalAvg = j / size;
    return totalAvg;
}

void display(Record players[], int size, int totalHit, int totalAB, double totalAvg)
{
    cout << fixed << showpoint << setprecision(3);
    cout << "Player        AB         Hit         Avg" << endl;
    cout << "  " << endl;
    for (int i = 0; i < size; i++)
    {
        cout << players[i].name << setw(8) << players[i].AB << setw(5) << players[i].hit << setw(5) << players[i].avg;
    }
    cout << "  " << endl;
    cout << "Totals      " << totalAB << "      " << totalHit << "      " << totalAvg << endl;
}
//击球平均数计算器
#包括
#包括
#包括
使用名称空间std;
//创建结构
结构记录
{
字符串名;
int-AB;
整数命中;
双平均值;
};
int getSize(int);
void getData(记录[],int);
int CalculateToLab(记录[],int,int);
int calculateTotalHit(记录[],int,int);
双重计算平均值(记录[],整数,双精度);
void calculateAvg(记录[],int);
无效显示(记录[],int,int,int,double);
int main()
{
常数int MaxSize=50;
唱片播放器[最大尺寸];
int size=0;
int totalAB=0;
int totalHit=0;
双总平均值=0;
size=getSize(size);
getData(玩家、大小);
totalAB=计算器totalAB(玩家、大小、totalAB);
totalHit=calculateTotalHit(玩家、大小、totalHit);
calculateAvg(玩家、大小);
totalAvg=calculateTotalAvg(玩家、大小、totalAvg);
显示(玩家、大小、totalHit、totalAB、totalAvg);
}
//获取要计算的玩家数
int getSize(int size)
{
大小;
返回大小;
}
//获取玩家姓名、AB和命中率
void getData(记录播放器[],整数大小)
{
虚拟字符串;
getline(cin,虚拟);
对于(int i=0;icout您将一个
int
除以一个
int
,该值被计算为
int
,并将其存储在
double
中。您需要做的是先将至少一个
int
值显式转换为double,如下所示:

void calculateAvg(Record players[], int size)
{
    for (int i = 0; i < size; i++)
    {
        players[i].avg = players[i].hit / (double) players[i].AB;
    }
}
void calculateAvg(记录播放器[],整数大小)
{
对于(int i=0;i试着用3的整数来划分1个,你会发现问题是什么。BTW你真的写了所有这些代码而没有测试它吗?不,我没有,我仍然是C++的最新的。在我写这些函数的时候,什么是最好的测试函数?我应该只做由函数组成的单独的项目,使用DUM吗?我的价值观来测试它们?任何建议都将不胜感激。