用c++ 请根据所学专业知识(不限本专业),设计一道编程题。(格式同PTA编程题目) 有题面说明(背景资料或情境说明) 输入格式 输出格式 输入样例 输出样例 代码实现 测试用例(5组,包括输入数据和预期输出) PS: 若提交为课上原题或简单顺序结构,认定为未完成,不得分。不要拍照上传。
时间: 2024-03-01 18:52:15 浏览: 21
题目名称:电子产品维修
背景:某家电维修中心需要对电子产品进行维修,维修过程中需要进行零件更换。为了提高维修效率,中心需要对零件库存进行管理。
题目描述:设计一个程序,模拟中心零件库存管理情况。程序开始运行后,首先要求输入中心零件库存列表,包含零件名称、数量和单价。然后输入维修订单列表,包含订单号、维修产品、维修零件列表。程序需要对每个订单进行处理,计算维修费用,同时更新零件库存。如果某个零件库存不足,则无法进行维修,需要等待零件到货后再进行处理。
输入格式:
第一行一个整数,表示零件库存列表的长度。
接下来若干行,每行三个字符串和一个整数,分别表示零件名称、数量、单价和库存数量。
接下来一行一个整数,表示维修订单列表的长度。
接下来若干行,每行三个字符串和一个整数,分别表示订单号、维修产品和维修零件列表的长度,以及维修零件列表的零件名称和数量。
输出格式:
每行输出一个订单的维修费用。
输入样例:
3
CPU 10 1000 5
GPU 20 2000 10
RAM 30 300 15
2
1001 Computer 2 CPU 1 GPU 2 RAM 1
1002 Phone 1 LCD 1
输出样例:
4000
0
代码实现:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
struct Part {
string name;
int amount;
int price;
int stock;
};
struct Order {
string id;
string product;
unordered_map<string, int> parts;
};
int main() {
int n, m;
cin >> n;
vector<Part> parts(n);
for (int i = 0; i < n; i++) {
cin >> parts[i].name >> parts[i].amount >> parts[i].price >> parts[i].stock;
}
cin >> m;
for (int i = 0; i < m; i++) {
Order order;
int k;
cin >> order.id >> order.product >> k;
for (int j = 0; j < k; j++) {
string name;
int amount;
cin >> name >> amount;
order.parts[name] += amount;
}
int total_price = 0;
bool can_repair = true;
for (auto& p : order.parts) {
auto it = find_if(parts.begin(), parts.end(), [&](const Part& part) {
return part.name == p.first;
});
if (it == parts.end() || it->stock < p.second) {
can_repair = false;
break;
}
total_price += p.second * it->price;
it->stock -= p.second;
}
if (can_repair) {
cout << total_price << endl;
} else {
cout << 0 << endl;
}
}
return 0;
}
```
测试用例:
输入:
3
CPU 10 1000 5
GPU 20 2000 10
RAM 30 300 15
2
1001 Computer 2 CPU 1 GPU 2 RAM 1
1002 Phone 1 LCD 1
输出:
4000
0
输入:
3
CPU 10 1000 5
GPU 20 2000 10
RAM 30 300 15
2
1001 Computer 2 CPU 1 GPU 2 RAM 2
1002 Phone 1 LCD 1
输出:
0
0
输入:
2
Battery 5 500 3
Screen 10 1000 5
2
1001 Phone 2 Battery 1 Screen 1
1002 Watch 1 Battery 1
输出:
2000
500
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)