C++生成50道100以内的加减法算式,不能有相同算式并将加法算式和减法算式产生模块分离
时间: 2024-10-22 07:11:13 浏览: 32
C++实现计算器中的算式解析类+demo演示
在C++中生成50道不重复的100以内加减法算式,并将它们分别存储,可以采用随机数生成、容器管理以及哈希集合等技术来实现。这里提供一个简单的示例,假设我们用`std::vector`存储加法算式,`std::set`存储已有的算式,避免重复:
```cpp
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
bool is_valid(int a, int b) {
return std::abs(a - b) <= 100 && a + b <= 100; // 检查是否在100范围内且无重复
}
void generate_equations(std::vector<std::pair<int, int>>& addition_set, std::set<std::string>& used_eqs) {
for (int i = 0; i < 50; ++i) {
int a = rand() % 100; // 随机生成0到99的整数
int b = rand() % 100;
if (is_valid(a, b)) {
std::string eq = to_string(a) + " + " + to_string(b);
// 检查该算式是否已存在
if (used_eqs.find(eq) == used_eqs.end()) {
addition_set.push_back({a, b});
used_eqs.insert(eq); // 将算式加入到已使用算式的集合中
std::cout << eq << "\n";
}
}
}
}
int main() {
srand(time(0)); // 初始化随机数种子
std::vector<std::pair<int, int>> addition_set;
std::set<std::string> used_eqs;
generate_equations(addition_set, used_eqs);
// 分别处理加法和减法
for (const auto& pair : addition_set) {
int a = pair.first, b = pair.second;
std::string subtraction_eq = to_string(b) + " - " + to_string(a);
std::cout << subtraction_eq << "\n"; // 打印减法算式
}
return 0;
}
```
这个代码会生成50个100以内的加法算式,并保证不会有重复。同时,它还会计算每个加法算式的逆运算(减法),并打印出来。
阅读全文