【c++】条件计数器函数设计

源码:

#include<iostream>

// 函数声明
void conditionCount(int *cond, int *total, bool flag);

int main() {
    // 示例数组,包含5个整数
    int arr[5] = {2, 4, 3, 5, 6};
    // 初始化总计数器和条件计数器
    int total = 0;
    int cond = 0;

    // 遍历数组,对每个元素调用conditionCount
    for (int i = 0; i < 5; i++) {
        // 调用conditionCount,其中arr[i]%2==0检查元素是否为偶数
        // &cond 和 &total 分别是条件计数器和总计数器的地址
        conditionCount(&cond, &total, arr[i] % 2 == 0);
    }

    // 计算偶数的概率(注意:这里假设total不为0)
    double gailv = (double)cond / total;

    // 输出偶数的概率
    std::cout << "偶数的概率为:" << gailv << std::endl;

    return 0;
}

// 函数定义
void conditionCount(int *cond, int *total, bool flag) {
    // 总计数器加1
    (*total)++;
    // 如果flag为真(即元素为偶数),则条件计数器加1
    if (flag) {
        (*cond)++;
    }
}

输出结果

 

text

偶数的概率为:0.6

解释

  1. 函数定义‌:conditionCount 函数接受三个参数:两个整数的指针(分别用于条件计数和总计数)和一个布尔值(用于判断是否满足特定条件)。

  2. 主函数‌:

    • 定义了一个包含5个整数的数组 arr
    • 初始化了两个计数器 total 和 cond
    • 通过循环遍历数组 arr,对每个元素调用 conditionCount 函数,其中 arr[i] % 2 == 0 用于检查元素是否为偶数。
    • 最后,计算偶数的概率(偶数的数量除以总元素数),并输出结果。

注意事项

  • 在计算概率时,假设 total 不为0。在实际应用中,可能需要添加一些错误检查或处理逻辑来避免除以零的错误。
  • 示例中的数组和函数都是硬编码的,但在实际应用中,它们可能需要根据具体情况进行调整或参数化。

不过,有一点小细节需要注意,当数组中没有元素(即 total 为 0)时,直接进行除法 (double) cond / total 会导致除以零的错误。虽然在你的例子中数组至少有一个元素,但在更通用的场景中,这种情况可能会发生。

为了避免潜在的除以零错误,你可以在计算概率之前检查 total 是否为 0。如果是,则可以输出一个错误消息或设置概率为 0(或 NaN,表示“不是一个数字”)。下面是修改后的代码示例:

#include<iostream>

void conditionCount(int *cond, int *total, bool flag) {
(*total)++;
if (flag) {
(*cond)++;
}
}

int main() {
int arr[5] = {2, 4, 3, 5, 6};
int total = 0;
int cond = 0;
for (int i = 0; i < 5; i++) {
conditionCount(&cond, &total, arr[i] % 2 == 0);
}

double gailv;
if (total == 0) {
std::cout << "数组中没有元素,无法计算概率。" << std::endl;
gailv = 0.0; // 或者使用 std::numeric_limits<double>::quiet_NaN();
} else {
gailv = (double)cond / total;
std::cout << "偶数的概率为:" << gailv << std::endl;
}

return 0;
}

在这个修改中,我添加了一个检查来确保 total 不为 0,然后才计算概率。如果 total 为 0,则输出一个错误消息,并将 gailv 设置为 0(或者你可以使用 std::numeric_limits<double>::quiet_NaN() 来表示一个未定义或不可表示的值,但这需要包含 <limits> 头文件)。

此外,你的代码逻辑和函数设计是清晰和有效的,能够很好地满足统计和计算概率的需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天若有情673

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值