一个二维数组a[5][5]= {{1,3,4,5,6},{3,9,1,1,7},{2,2,4,5,3},{3,5,5,3,4},{2,5,5,3,4}},计算重复数据及个二维数组没有排序用C++实现,实现结果为:数字:1 重复:3数字:2 重复:3数字:3 重复:6数字:5 重复
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 08:19:48
一个二维数组a[5][5]= {{1,3,4,5,6},{3,9,1,1,7},{2,2,4,5,3},{3,5,5,3,4},{2,5,5,3,4}},计算重复数据及个二维数组没有排序用C++实现,实现结果为:数字:1 重复:3数字:2 重复:3数字:3 重复:6数字:5 重复
一个二维数组a[5][5]= {{1,3,4,5,6},{3,9,1,1,7},{2,2,4,5,3},{3,5,5,3,4},{2,5,5,3,4}},计算重复数据及个
二维数组没有排序
用C++实现,实现结果为:
数字:1 重复:3
数字:2 重复:3
数字:3 重复:6
数字:5 重复:6
等等
要写出程序
一个二维数组a[5][5]= {{1,3,4,5,6},{3,9,1,1,7},{2,2,4,5,3},{3,5,5,3,4},{2,5,5,3,4}},计算重复数据及个二维数组没有排序用C++实现,实现结果为:数字:1 重复:3数字:2 重复:3数字:3 重复:6数字:5 重复
有一个最简单最不伤脑子的做法:
因为里面都是个位数故在0-9之间
int a[5][5]= {{1,3,4,5,6},{3,9,1,1,7},{2,2,4,5,3},{3,5,5,3,4},{2,5,5,3,4}};
int mark_array[10] = {0};//存储重复数据 下标代表这个数据 里面的值代表重复的次数
int mark_i = 0 ;//下标
for ( int vaule = 0 ;vaule < 10; vaule++ )
{
for ( int i = 0 ; i < 5 ; i++ )
{
for ( int j = 0 ; j < 5 ;j++ )
{
if ( a[i][j] == vaule )
{
mark_array[mark_i]++;
}
}
mark_i++;
}
}
很简单的小程序,自已动动脑筋就出来了;
关键是怎样存放计数值的问题;如果数字有范围就简单,没范围就复杂点,例如:
有一个数字是1亿,就麻烦些;
另外用一个标志数组,为方便程序,可以用数据值代表下标,但是该标志数组元素个数就需要按待统计数组的最大值域了。
该标志数组所有元素全部初始化为0,然后从该数组第一个元素开始,一趟扫描所有元素,是几就往该标志数组的几下标加上1,扫描完后将该标志数组从头开始,为0的就不管,不为0的就输出
或者:
用二维数组,也可以是结构体,分别用两个分量代表数据值和出现的频度,此时不需要像刚才的...
全部展开
另外用一个标志数组,为方便程序,可以用数据值代表下标,但是该标志数组元素个数就需要按待统计数组的最大值域了。
该标志数组所有元素全部初始化为0,然后从该数组第一个元素开始,一趟扫描所有元素,是几就往该标志数组的几下标加上1,扫描完后将该标志数组从头开始,为0的就不管,不为0的就输出
或者:
用二维数组,也可以是结构体,分别用两个分量代表数据值和出现的频度,此时不需要像刚才的方法一样,但是每一个值来后需要查找是否已经存在,有就加频度1,没有就增加一项,频度为1
收起