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++ 的基本语法和数据结构的使用。

C++ 简单抽奖系统代码示例

原文地址: https://www.cveoy.top/t/topic/NZb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录