该程序使用一种结构将以下数据存储在公司部门:
分部名称(例如东,西,北或南)
季度(1,2,3或4)
季度销售
应该要求用户提供东,西,北和南区四个季度的销售数据,并且数据应存储在结构中。到目前为止,这是我的代码,我不能理解这个概念:
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
struct Data{
char *name;
int quarter[4];
int sales;
};
int _tmain(int argc, _TCHAR* argv[])
{
Data division[4];
int count;
division[0].name = "East";
division[1].name = "West";
division[2].name = "North";
division[3].name = "South";
for(count = 0; count < 4; count++){
cout << "Please enter the sales for the " << division[count].name << " for: " << endl;
cout << "Quarter: " << count + 1 << ": " << endl;
cin >> division[count].quarter[count].sales;
}
cin.get();
return 0;
}
似乎我的for
循环根本不起作用,我的cin
语句有问题,因为`除法显示红色下划线。
答案 0 :(得分:2)
替换
cin >> division[count].quarter[count].sales;
与
cin >> division[count].sales;
但是你的应用程序结构至少是可疑的。 quarter
数组有什么意义?
答案 1 :(得分:0)
在您的原始版本中,您将溢出您的quarter
数组...这是危险且未定义的行为,可能会导致内存损坏,以后会出现并且混乱你的程序。
你怎么会溢出来的?好吧,当您的计数值变为“3”时,您将使用quarter[3+1]
= quarter[4]
来解决您的季度数组。这比 ONE 多了数组(从0 - > 3)并且这个内存地址将被写入。
那个地址是什么?我们不知道。
看起来你应该有一个嵌套的for循环:
for(int div_i = 0; div_i < 4; ++div_i)
{
for(int qt_i; st_i < 4; ++qt_i)
{
cout << "Please enter the sales for the " << division[div_i].name << " for: " << endl;
cout << "Quarter: " << qt_i << ": " << endl;
cin >> division[div_i].quarter[qt_i].sales;
}
}
这将为您留下每个部门的单独季度销售额。
您还应该为数组大小使用const uint8:
const unsigned char _DIVISION_COUNT = 4;
const unsigned char _QUARTER_COUNT = 4;
// and your loops become:
for( int count = 0; count < _DIVISION_COUNT; ++count)...
告诉那些在您正在做的事情之后使用/维护代码的人。
答案 2 :(得分:0)
您定义的结构存在一些问题。
首先,销售数据的类型是什么。你是指定整数,但销售额实际上是一个十进制数字(许多现金例子使用双倍金钱表示)?
其次,我对问题陈述有点怀疑。您的结构示例涉及一个数组,但问题陈述中途表明每个结构将只有一个指示它表示的四分之一。这会使结构更像数据库记录。
以下是两种可能的方法:
typedef double money_t;
struct sales_datum {
std::string division; // North, East, South, West
int quarter; // 1, 2, 3, 4
money_t sales;
};
上述方法似乎更符合问题陈述。这些结构中的每一个都将包含一个销售数据 - 针对特定季度的特定部门。
或者,
struct sales_datum {
std::string division; // North, East, South, West
money_t sales_for_quarter[4];
};
这似乎更像你在原帖中所尝试的内容。该结构现在保存一个部门的销售数据一整年(四个季度)。
使用第二种类型会使您的代码朝某些方向发展 - 在转移到另一种结构之前更容易考虑填充整个结构,因此您需要收集一年的所有数据分裂然后继续下一个。
答案 3 :(得分:-1)
结构是一个非常简单的类定义。可以把它想象成一个没有任何方法的类,只需要实例变量。
你在那里做的是询问每个部门每个季度的销售额。
因此,在每个部门中,您有4个不同的销售额,与每个季度相关。这些都保存在你的结构中。
答案 4 :(得分:-1)
您正在使用相同的变量来遍历两个分区&amp;宿舍(两次count
)。