C/C++统计数组中不同数值的个数
时间: 2024-10-01 19:12:48 浏览: 46
在C/C++中,统计数组中不同数值的个数可以采用几种方法,其中一种常见的做法是使用哈希表(如`std::unordered_set`)。下面是一个简单的步骤描述:
1. 创建一个`std::unordered_set`来存储遇到的不同元素。
2. 遍历数组,对于每个元素,检查它是否已经在哈希表中。如果不在,添加到哈希表并计数器加一;如果已存在,则不需要做任何操作,因为这意味着已经遇到了相同的值。
3. 遍历结束后,哈希表中的大小就是不同数值的个数。
这里是伪代码示例:
```cpp
#include <unordered_set>
int countUniqueValues(int arr[], int size) {
std::unordered_set<int> uniqueSet;
for (int i = 0; i < size; ++i) {
if (uniqueSet.find(arr[i]) == uniqueSet.end()) { // 如果元素不在集合中
uniqueSet.insert(arr[i]); // 插入元素并计数
++count; // 或者在这里增加一个局部变量count
}
}
return uniqueSet.size(); // 返回不同数值的数量
}
```
相关问题
功能:求10个数中大于平均值的数的个数。运要C++函数 例如:给定10个数为1,3,6,9,4,23,35,67,12,88时,函数值为3。 #include <iostream> #include <fstream>using namespace std;int fun(int all,int n) int k;//k表示大于平均值的数的个数 float s,ave;//s数组中所有数之和,ave表示平均值 /**********Program**********/ /********** End ******大大**/ void mainO int a[10]; for(int i=0;i<10;i++) cin>>a[i]; int y; y=fun(a,10); cout<<"y="<<y<<endl;
以下是实现题目要求的C++函数代码:
```c++
int fun(int a[], int n) {
int cnt = 0;
float sum = 0;
for (int i = 0; i < n; i++) {
sum += a[i];
}
float avg = sum / n;
for (int i = 0; i < n; i++) {
if (a[i] > avg) {
cnt++;
}
}
return cnt;
}
```
该函数接收一个整数数组和数组长度,然后计算出数组中所有数的平均值,再遍历一次数组统计大于平均值的数的个数,最后返回该个数即可。
c++利用指针求数组最大值 最小值平均值以及高于平均值的数值的个数
好的,以下是用指针求解的C++代码示例:
```c++
#include <iostream>
using namespace std;
int main() {
const int arrSize = 10; // 数组大小
int arr[arrSize] = {1, 5, 3, 2, 9, 7, 8, 4, 6, 0}; // 定义并初始化数组
int *p = arr; // 定义指向数组首元素的指针
int max = *p; // 假设首元素是最大值
int min = *p; // 假设首元素是最小值
int sum = 0; // 数组元素总和
// 遍历数组,求最大值、最小值、元素总和
for (int i = 0; i < arrSize; i++) {
if (*(p+i) > max) {
max = *(p+i);
}
if (*(p+i) < min) {
min = *(p+i);
}
sum += *(p+i);
}
double average = static_cast<double>(sum) / arrSize; // 平均值
int count = 0; // 高于平均值的元素个数
// 遍历数组,统计高于平均值的元素个数
for (int i = 0; i < arrSize; i++) {
if (*(p+i) > average) {
count++;
}
}
cout << "最大值为:" << max << endl;
cout << "最小值为:" << min << endl;
cout << "平均值为:" << average << endl;
cout << "高于平均值的元素个数为:" << count << endl;
return 0;
}
```
输出结果为:
```
最大值为:9
最小值为:0
平均值为:4.5
高于平均值的元素个数为:5
```
希望能解决你的问题,如果还有疑问,请随时追问。
阅读全文