gpt4 book ai didi

c++ - 计算数组中元素出现的频率

转载 作者:行者123 更新时间:2023-11-28 02:03:14 25 4
gpt4 key购买 nike

你好,我目前被作业问题困住了,因为我不知道如何解决这个问题。

编写一个程序,将整数列表读入具有基本类型的数组诠释。提供从键盘或从文件中,由用户选择。如果用户选择文件输入,程序应该请求一个文件名。您可以假设少于 50数组中的条目。您的程序决定了有多少条目。输出是一个两列列表。第一列是不同的列表数组元素;第二列是数量的计数每个元素的出现。该列表应按条目排序第一列,从大到小。

所以我要输入:1, 2, 1, 10, 15, 12, 2, 10, 10该程序应输出如下内容:

列表频率

1-----2

2-----2

10----3

15----1

我可以对数字进行排序,但不知道如何比较数组中的数字。

#include <iostream>//Input/Output Library
#include <cstdlib>
#include <iomanip>
using namespace std;//Namespace of the System Libraries

//Global Constants
const int MAX = 10;

//Function Prototypes
void input(int array[], int size);
void sort(int array[],int size);

int main(int argc, char** argv){
//Declare Variable
int array[MAX];
int size = MAX;

//Input Data
input(array, size);
sort(array, size);

cout<<"\nSort Frequency\n";
for(int i = 0; i<size; i++){
cout<<array[i]<<endl;
}

return 0;
}

void input(int a[], int size){
cout<<"Enter "<<size<<" numbers for the array: \n";
for(int i=0; i<size; i++){
cin>>a[i];
}
}
void sort(int a[],int n){
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(a[i]>a[j]){
a[i]=a[i]^a[j];
a[j]=a[i]^a[j];
a[i]=a[i]^a[j];
}
}
}
}

最佳答案

除了@stryku 的回答,因为你只想打印频率,你甚至不需要创建 v vector :

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <map>

int main() {

std::map<int, size_t> counts;

std::for_each(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(), [&counts](int k) {
++counts[k];
});

for(const auto &pair : counts)
std::cout<<pair.first <<" "<< pair.second<<"\n";

return 0;
}

关于c++ - 计算数组中元素出现的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38539472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com