如何比较结构中不同索引的元素
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 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;
}
}
}
}
}
}
在第二部分中尝试此代码。
此函数
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
但我不知道这个条件必须在哪里使用。从你的描述来看,这是完全不清楚的。
相关文章:
- 在对向量中查找元素的索引
- 当该数组的索引中没有元素时,指针指向什么?
- 如何在 STL 函数中找到传递给谓词的元素的索引?
- 如何在C++中递归地找到max元素的索引?
- 编译器(Visual C++)如何优化按索引访问矢量元素?
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- 使用推力根据索引更改某些元素的值
- 为什么 min_element() 返回最小元素的索引,而不是迭代器?
- CPtrList - 如何获取元素的索引?
- 获取结构 c++ 中元素的索引
- C++ STL 数据结构常时按索引推送/弹出/随机访问,并具有指向元素的可靠指针
- 矢量指针索引处的读取元素
- C++函数返回两个 char 数组的相同索引元素
- C++如何获取索引I处的元素,并检查它在向量或数组中是否为空
- 使用索引与迭代器将向量迭代到倒数第二个元素
- 从数组中搜索元素的索引
- 程序必须将奇数索引元素放在新的向量 C 中,将偶数索引元素放在另一个向量 T 中
- 当结构数组在主线程中填充数据时,从结构数组的低索引元素读取是否线程安全
- 为什么空字符串可以在C++中输出索引 0 元素
- 循环范围在使用索引元素时不起作用