问题是要求员工编号1到10(他们给我输入阵列中的数组编号)通过将3个月组合在一起来给出每个员工的总销售额。在我的附加功能中,它可以正确地完成所有操作......对于第一部分......它完美地显示了数组中的数字,但是当它添加数组并在此处抛出一个元素时导致不正确的总数。在我的代码中,我添加了它应该输出它在第一组数字后加在一起的数组,它不遵循数组这里是代码:
我跟踪了你们给我们展示的内容(谢谢顺便说一句),我现在将员工#1的总数添加到其余部分,我不想这样做。我想进入员工#1到彼此停止显示它然后从3个月阵列停止显示中的3个数字中添加员工#2的总数(继续直到每个部分显示1~10)我已输入我的新修订代码。我是C ++编程的新手,我还没有学过类,所以老实说我不能使用它们。
#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
void displaySales(int sales[10][3]);
void displayTotalSales(int total[10][3]);
int main ()
{
//declare array Jan Feb Mar
int employ[10][3] = {{2400, 3500, 2000},
{1500, 7000, 1000},
{600, 450, 2100},
{790, 240, 500},
{1000, 1000, 1000},
{6300, 7000, 8000},
{1300, 450, 700},
{2700, 5500, 6000},
{4700, 4800, 4900},
{1200, 1300, 400}};
//displays the sales for the month
displaySales(employ);
displayTotalSales(employ);
system("pause");
return 0;
}
//******Functions*******
void displaySales(int sales[10][3])
{
for(int emp = 0; emp < 10; emp++)
{
cout << "Employee # " << emp + 1
<< ": " << endl;
for (int month = 0; month < 3; month++)
{
cout << " Month " << month + 1
<< ": ";
cout << sales[emp][month] << endl;
} //end for
} //end for
} //end function
void displayTotalSales(int total[10][3])
{
int employ = 1; //employee number
int totalSales = 0; // total sales for the employee
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 3; j++)
{
totalSales += total[i][j];
cout << "Employee # " << employ << ": " << endl;
cout << endl;
cout << "Total sales for the month: " << "$" << total[i][j];
cout << endl;
}
cout << " Total Sales for the three months is: $" << totalSales << endl;
cout << endl;
employ++;
}
}
答案 0 :(得分:3)
do {
...
totalSales = (total[i][j] + total[i][j+1] + total[i][j+2]);
j++;
} while (j < 3);
j在第一次迭代后超出范围。
但严重的是:使用classes!并使用containers!
哦,你的花括号完全搞砸了。
答案 1 :(得分:1)
首先请更好地编写代码!缩进会使这更容易理解和帮助你。
我强烈认为这是编程课的一个功课问题,但无论如何我都会尽力帮助你。
基本上你的问题是你在数组的末尾运行,因为当j == 2时,例如当你使用语句时:
totalSales = (total[i][j] + total[i][j+1] + total[i][j+2]);
你试图引用j + 2,它实际上是数组的第5个元素,它不存在。
我对你的addFunk进行了10秒的重写(请更好地命名函数)
您可以尝试这样的事情:
void addFunk(int total[10][3])
{
int employ = 1; //employee number
int totalSales = 0; // total sales for the employee
for (int i = 0; i < 10; i++)
{
for ( int j = 0; j < 3; j ++)
{
totalSales += total[i][j];
}
cout << "employee num " << employ << "earned "
<< "$" << totalSales << endl;
totalSales = 0;
employ++;
totalSales = 0;
}
}
答案 2 :(得分:1)
我可能不适合添加这个答案,但由于新手没有办法评论,我只想在这里说。
我同意卡尔关于对象的学习。当我们在大学时学习c和c ++时,我们开始使用结构,然后转到课程,如果你认真对待编程,那么学习这些东西真的很重要。
类只是描述现实世界中对象的一种方式。它有属性和行为。例如,您可以拥有一个可以存储每月所有收入的员工类,并且可以在其中包含一个允许您计算最近收入的功能。对代码的这些小增加将使其更易于阅读,组织和重用。
我认真地建议您花几个小时来搜索面向对象的概念并尝试一些c ++示例。他们很容易。
答案 3 :(得分:0)
关于您对代码的更新,请说:
我现在将员工#1的总数添加到其余部分,我不想这样做。
问题在于这一行:
int totalSales = 0; // total sales for the employee
看看你放在那里的评论:它是每个员工。因此,它应该进入“每个员工循环”:
for (int i = 0; i < 10; i++)
{
int totalSales = 0;
// Proceed as before with the per-month work.
请阅读C ++中变量的“范围”。
此外,对C ++不熟悉,或者对编程不熟悉,并不是真正避免类的借口。 本身没有什么特别先进的本身;代码只是像你做的那样复杂 - 并且存在类,因为正确使用它们有助于组织(阅读:简化)你的代码。