C++ C++;平均计算函数返回0
我正在编写一个程序,计算用户定义的玩家数量的击球平均数。该程序显示球员的姓名、击球次数、命中次数和平均击球率。最后,它显示球员击球的总次数、总命中次数和总平均数。出于某种原因,计算单个玩家平均值和总体平均值的函数返回0。这可能是个小问题,但我不知道该如何解决它C++ C++;平均计算函数返回0,c++,C++,我正在编写一个程序,计算用户定义的玩家数量的击球平均数。该程序显示球员的姓名、击球次数、命中次数和平均击球率。最后,它显示球员击球的总次数、总命中次数和总平均数。出于某种原因,计算单个玩家平均值和总体平均值的函数返回0。这可能是个小问题,但我不知道该如何解决它 //Batting Average Calculator #include <iostream> #include <string> #include <iomanip> using namespac
//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;i cout您将一个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吗?我的价值观来测试它们?任何建议都将不胜感激。