2014-01-12 93 views
1
#include<iostream> 

using namespace std; 

struct workspace { 
    int ID; 
    int price; 
    int incoming_amount; 
    int outgoing_amount; 
    int date; 
}; 

int main() 
{ 
    workspace works[5]; 
    string type_amount; 
    int incoming_IDs[5]; 
    int incoming_IDs_counter = 0; 
    for(int i = 0; i < 5; i++){ 
     cin >> works[i].ID; 
     cin >> works[i].price; 
     cout << "What type of amount (inc/out)?" << endl; 
     cin >> type_amount; 
     if(type_amount == "inc"){ 
      incoming_IDs[incoming_IDs_counter] = works[i].ID; 
      incoming_IDs_counter++; 
      works[i].outgoing_amount = 0; 
      cin >> works[i].incoming_amount; 
     } 
     else if(type_amount == "out"){ 
      works[i].incoming_amount = 0; 
      cin >> works[i].outgoing_amount; 
     } 
     cin >> works[i].date; 
    } 
    return 0; 
} 

從不同的索引元素這是到目前爲止我的代碼,現在我要檢查以下內容:我怎樣才能比較結構

  • 確認ID已添加到它進入的量,在它可以是一個外向量之前。

  • 確保收到金額的價格小於傳出金額。

所以,我的工作是第一個,我得到這個功能:

bool INC_Exists(workspace &works, int &incoming_IDs_counter, int incoming_IDs[]){ 
    for(int i = 0; i < incoming_IDs_counter; i++){ 
     if(incoming_IDs[i] == works.ID){ 
      return true; 
      break; 
     } 
    } 
    return false; 
} 

看來工作和做這項工作,但對於第二個,我不知道該怎麼解決它。如何有效檢查即將離任的金額是否小於同一ID的入金額?

回答

3
bool Valid_Price(workspace *works, int& incoming_IDs_counter, int incoming_IDs[], workspace &workz){ 
    bool valid_price; 
    for(int j = 0; j < incoming_IDs_counter; j++){ 
     if(incoming_IDs[j] == workz.ID){ 
      for(int k = 0; k < 5; k++){ 
       if(works[k].ID == workz.ID){ 
        if(works[k].price < workz.price){ 
         valid_price = true; 
        } 
        else if(works[k].price > workz.price){ 
         valid_price = false; 
        } 
       } 
      } 
     } 
    } 
    return valid_price; 
} 

測試,它似乎工作..

1

此功能

bool INC_Exists(workspace &works, int &incoming_IDs_counter, int incoming_IDs[]){ 
    for(int i = 0; i < incoming_IDs_counter; i++){ 
     if(incoming_IDs[i] == works.sifra){ 
      return true; 
      break; 
     } 
    } 
    return false; 
} 

是無效的,因爲結構的工作區沒有數據成員sifra,

如果我理解正確的要求

•確保ID具有傳入量添加到它之前,它可以是 外向金額

您需要檢查對象是否在int incoming_IDs []的元素之間工作。該功能可以看看下面的方式

bool INC_Exists(const int incoming_IDs[], int incoming_IDs_counter, const workspace &works) 
{ 
    int i = 0; 

    while (i < incoming_IDs_counter && works.ID != incoming_IDs[ i ]) i++; 

    return (i != incoming_IDs_counter); 
} 

至於這個條件

•確保呼入量的價格,如果比即將卸任的 量

再小它可以表示通過表達

works.price < works. outgoing_amount 

但我不知道這個情況在哪裏被使用。從你的描述來看,它是完全不清楚的。

+0

修正了上次更新的sifra部分。現在讓我解釋第二件事。當我們輸入「工程」時,我們有類型的輸入或輸出的類型,如果它是輸入的,那麼它的輸出量= 0。輸入的數量也有特定的價格和輸出量。如果價格大於具有相同ID的收入金額,我需要檢查輸入金額的輸入。 (incoming_amount.price user3182683

+0

問題是,當輸入傳出量時,數組可能沒有元素收到的金額和相同的ID。它可以稍後出現(它會出現)。所以我不明白這個要求。 –

+0

這只是一個示例代碼(爲了更容易理解,80%的代碼被剪切掉),所以第一個要求就是因爲這個。在執行第一個之後,我必須做第二個,這是我的主要問題。我不知道如何實現這一點。 – user3182683

1
bool Valid_Price(workspace *works, int& incoming_IDs_counter, int incoming_IDs[], workspace &workz){ 
    for(int i = 0; i < 5; i++){ 
     for(int j = 0; j < incoming_IDs_counter; j++){ 
      if(incoming_IDs[j] == workz.ID){ 
       for(int k = 0; k < 5; k++){ 
        if(works[k].price < workz.price){ 
         return true; 
        } 
        else{ 
         return false; 
        } 
       } 
      } 
     } 
    } 
} 

試試這個代碼的第二部分。