2011-12-15 96 views
0

此程序使用的結構下面的數據存儲在一個公司部門結構,3或4)C++關於企業銷售

季度銷售

用戶應要求四個季度的銷售數字爲東,西,北和南師,以及數據應該存儲在結構。這是到目前爲止我的代碼,我不知道正確的觀念:

#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

問題是? – INS 2011-12-15 10:45:50

+0

我的for循環根本不起作用,我的cin聲明有些問題,因爲'division'顯示一個紅色下劃線 – user566094 2011-12-15 10:46:41

回答

-1

結構是一個非常簡單的類定義。把它看作一個沒有任何方法的類,只是實例變量。

你在那裏做的是要求每個部門每季度的銷售額。

因此,在每個部門你有4個不同的銷售,屬於每個季度。那些被保存在你的結構中。

2

更換

cin >> division[count].quarter[count].sales; 

cin >> division[count].sales; 

但是你的應用程序的結構是...腥至少。 quarter陣列有什麼意義?

-1

您正在使用相同的變量來循環兩個部門&宿舍(兩次count)。

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; 
    } 
} 

這將使你與個別季度的銷售額爲每個部門。


此外,你應該使用一個常量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)... 

清楚的人誰將會使用/後你保持你的代碼,你在做什麼。

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]; 
}; 

這似乎更像是你在你原來的職位努力。該結構現在持有整個年份(四個季度)的一個部門的銷售數據。

使用第二種類型將趨於使你的代碼在某些方向 - 它更容易想到上轉移到另一個人之前在整個結構中,填滿,所以你要收集所有的數據,一年一個部門,然後再進入下一個部門。