我将数组初始化为0' s。当我走过调试器时,我在[5] [4]元素中得到了垃圾。存储值的变量是emp4tot。我得到每个员工销售的总额。每个产品由一行代表有五种不同的产品。列代表四名员工。我总结了 通过汇总每一列来销售所有员工。
#include "stdafx.h"
#include <iostream>
void printtot(float[5][4], int, int);
int main()
{
using namespace std;
float sales[5][4] = { 0.0 };
int prodnum, empnum;
float prodtot=0;
const int numemp = 4;
const int numprod = 5;
/*do{
cout << "Enter Employee Number" << endl;
cin >> empnum;
cout << endl;
cout << "Enter Product Number" << endl;
cin >> prodnum;
cout<< endl;
cout << " Enter Product Sales" << endl;
cin >> prodtot;
cout << endl;
if ((empnum > 0) && (empnum < 5)){
--prodnum;
sales[prodnum][empnum] = prodtot;
}
}while ((empnum > 0) && (empnum < 5));
*/
printtot(sales, numemp, numprod);
cin.clear();
cin.ignore(255, '/n');
cin.get();
return 0;
}
void printtot(float salesarry[5][4],int numberempl, int numberprod){
using namespace std;
float product_tot;
float employee_tot;
float emp1tot, emp2tot, emp3tot, emp4tot;
int i, j;
employee_tot = product_tot = emp1tot = emp2tot = emp3tot = emp4tot = 0.0;
cout << "\t"<<"\t"<<"\tEmp 1" << "\tEmp 2" << "\tEmp 3" << "\tEmp 4"<< endl;
for (i = 0; i < numberprod; ++i){
product_tot = 0;
cout << "\t" << "Product " << i + 1;
for (j = 1; j < numberempl; j++){
cout <<"\t"<<salesarry[i][j];
product_tot += salesarry[i][j];
}
cout << "\t" << product_tot << endl;
emp1tot += salesarry[i][1];
emp2tot += salesarry[i][2];
emp3tot += salesarry[i][3];
emp4tot += salesarry[i][4];
}
cout <<"\tEmployee Totals"<<"\t"<<emp1tot<<"\t"<<emp2tot<<"\t"<<emp3tot <<
"\t" << emp4tot << endl;
}
答案 0 :(得分:3)
数组从零开始索引。因此:
float sales[5][4];
没有索引[5][4]
。销售中第一个数组的第一个元素是sales[0][0]
。 &#34;最后&#34;元素是sales[4][3]
。
答案 1 :(得分:2)
您声明了float sales[5][4]
。
该数组中没有[5][4]
个元素。最大值为sales[4][3]
。元素从零开始,因此最后一个元素的索引小于数组的大小。第一个元素是sales[0][0]
。
答案 2 :(得分:2)
您在printtot中使用了基于1的数组索引,此处为:
emp1tot += salesarry[i][1];
emp2tot += salesarry[i][2];
emp3tot += salesarry[i][3];
emp4tot += salesarry[i][4];
那些应该是:
emp1tot += salesarry[i][0];
emp2tot += salesarry[i][1];
emp3tot += salesarry[i][2];
emp4tot += salesarry[i][3];