C++ 简单抽奖系统代码示例
C++ 简单抽奖系统代码示例
以下是一个用 C++ 编写的简单抽奖系统代码示例,包含奖品结构体、初始化函数、抽奖函数和主函数,并附有代码解释。
#include <iostream>
#include <vector>
#include <random>
// 定义奖品结构体
struct Prize {
std::string name;
int quantity;
};
// 初始化奖品列表
std::vector<Prize> initializePrizes() {
std::vector<Prize> prizes;
// 添加奖品
Prize prize1 = { '奖品1', 5 };
Prize prize2 = { '奖品2', 3 };
Prize prize3 = { '奖品3', 2 };
prizes.push_back(prize1);
prizes.push_back(prize2);
prizes.push_back(prize3);
return prizes;
}
// 抽奖函数
void drawPrize(std::vector<Prize>& prizes) {
std::random_device rd;
std::mt19937 gen(rd());
// 计算奖品总数
int totalPrizes = 0;
for (const auto& prize : prizes) {
totalPrizes += prize.quantity;
}
if (totalPrizes > 0) {
std::uniform_int_distribution<> dis(1, totalPrizes);
int chosenNumber = dis(gen);
// 根据随机数选择奖品
int accumulatedPrizes = 0;
for (const auto& prize : prizes) {
accumulatedPrizes += prize.quantity;
if (chosenNumber <= accumulatedPrizes) {
std::cout << "恭喜你中得奖品:" << prize.name << std::endl;
prize.quantity--;
break;
}
}
} else {
std::cout << "很抱歉,奖品已经抽完了!" << std::endl;
}
}
int main() {
std::vector<Prize> prizes = initializePrizes();
// 模拟抽奖
for (int i = 0; i < 10; i++) {
std::cout << "第 " << i+1 << " 次抽奖结果:" << std::endl;
drawPrize(prizes);
std::cout << std::endl;
}
return 0;
}
代码解释
- 奖品结构体 (Prize): 表示每个奖品的名称和数量。
- 初始化奖品列表函数 (initializePrizes): 定义并返回一个包含奖品的向量。
- 抽奖函数 (drawPrize): 根据随机数选择一个奖品,并在命令行中显示中奖结果。同时,减少选中奖品的数量。
- 主函数 (main): 初始化奖品列表,模拟抽奖过程。
注意事项
- 此代码示例是一个简单的基础框架,不包含输入验证和错误处理。
- 可以根据需要修改和扩展这个基本框架,例如添加更多奖品、自定义抽奖规则等。
- 此代码仅供学习参考,请勿用于实际生产环境。
总结
这个 C++ 代码示例演示了一个简单的抽奖系统,包含了基本的抽奖流程和代码实现,可以帮助初学者理解 C++ 的基本语法和数据结构的使用。
原文地址: https://www.cveoy.top/t/topic/NZb 著作权归作者所有。请勿转载和采集!