[英]How can I compare elements from different indexes in struct
#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的收款额小于收款额,如何有效检查收款额的价格?
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;
}
经过测试,它似乎可以工作。
该功能
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
但我不知道必须在哪里使用这种条件。 根据您的描述,这还不清楚。
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;
}
}
}
}
}
}
在第二部分中尝试使用此代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.