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

embedded/2024/10/19 6:08:27/

源码:

#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;// 遍历数组,对每个元素调用conditionCountfor (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为真(即元素为偶数),则条件计数器加1if (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> 头文件)。

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


http://www.ppmy.cn/embedded/123663.html

相关文章

二叉树进阶学习——从中序和后续遍历序列构建二叉树

1.题目解析 题目来源&#xff1a;106.从中序和后序遍历序列构造二叉树 测试用例 2.算法原理 后序遍历&#xff1a;按照左子树->右子树->根节点的顺序遍历二叉树&#xff0c;也就是说最末尾的节点是最上面的根节点 中序遍历&#xff1a;按照左子树->根节点->右子树…

【数据分享】2000—2023年我国省市县三级逐年植被覆盖度(FVC)数据(Shp/Excel格式)

之前我们分享过2000—2023年逐月植被覆盖度&#xff08;FVC&#xff09;栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;和Excel和Shp格式的省市县三级逐月FVC数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff0c;原始的逐月栅格数据来源于高吉喜学者…

AI大语言模型进阶应用及模型优化、本地化部署、从0-1搭建、智能体构建技术

在过去几年中&#xff0c;人工智能领域的发展迅猛&#xff0c;尤其是大语言模型的应用&#xff0c;为各行各业带来了前所未有的创新与突破。从ChatGPT-3.5的推出到GPT Store的上线&#xff0c;再到最新的多模态交互ChatGPT-4o&#xff0c;OpenAI不断引领科技潮流&#xff0c;推…

c# 线性回归和多项式拟合

1. 线性回归 公式&#xff1a; 线性回归的目标是拟合一条直线&#xff0c;形式为&#xff1a; ymxbymxb 其中&#xff1a; yy 是因变量&#xff08;目标值&#xff09;xx 是自变量&#xff08;特征值&#xff09;mm 是斜率&#xff08;slope&#xff09;bb 是截距&#xff08…

【PyCharm】Ubuntu20.04 卸载 PyCharm 并安装激活 Professional

【PyCharm】Ubuntu20.04 卸载 PyCharm 并安装激活 Professional 1 卸载2 安装激活 1 卸载 参考文档: Link 删除安装目录 删掉之前压缩包解压出来的目录&#xff0c;例如&#xff1a;我之前是放在家目录下 rm -rf ~/pycharm-community-2023.2.1删除配置文件 rm -rf ~/.config…

My_qsort() -自己写的 qsort 函数

2024 - 10 - 05 - 笔记 - 21 作者(Author)&#xff1a;郑龙浩 / 仟濹(网名) My_qsort()- 自己写的qsort函数 My_qsort为自己写的qsort函数&#xff0c;但是采用的不是快速排序&#xff0c;而是冒泡排序&#xff0c;是为了模仿qsort函数而尝试写出来的函数。 思路&#xff1a…

基于SPI协议的Flash扇区擦除实验

当一块Flash芯片中的不同的扇区烧录了不同的程序&#xff0c;而我们只想擦除某个扇区的程序保留其他程序时&#xff0c;Flash的全擦除是不能满足要求的&#xff0c;这时候就需要扇区擦除来实现这一功能。扇区擦除可以对Flash芯片中的某一扇区进行擦除而不改变其他扇区中的存储数…

数学建模 第四讲 - 数学规划模型

在数学建模的学习过程中&#xff0c;第四章介绍了几种常见的数学规划模型&#xff0c;这些模型在实际问题中有着广泛的应用。以下是对这些模型的整理和总结。 4.1 奶制品的生产与销售 问题描述 考虑一个奶制品厂&#xff0c;需要根据外部需求和内部条件&#xff08;如设备、…