“菜鱼”课设中的一道数据处理的题目(cpp)

来源:互联网 发布:淘宝网主要特色 编辑:程序博客网 时间:2024/05/21 10:14

设计题3、数据统计

求数组中离平均数最近的那个数。假定函数int mid(int a[], int len);

计算数组a中所有数的平均值,并返回数组中离该平均值最近的那个数。


————————————————————————————————以上是课设题目——————————————————————————————————————
我的源码:
#include<iostream>#include<math.h>using namespace std;int mid(int a[5], float b[5]){int sum = 0;for (int i = 0; i <5 ; i++)                          //输入数组元素{cout << "请输入第" << i + 1 << "个元素的值";cin >> a[i];cout << endl;sum = sum + a[i];}cout << "该数组为";for (int i = 0; i < 5; i++)                         //输出数组{cout << a[i];}float average = sum / 5;                            //求平均值cout << "平均值为" << average << endl;for (int i = 0; i < 5; i++)                 //算各元素与平均值的差值的绝对值放到b数组中{b[i] = fabs(average - a[i]);}float temp=b[0];                                  //用“擂台法”求出b数组中的最小值for (int i = 1; i < 5; i++){if (temp >= b[i])temp = b[i];}cout << "离平均值最近的数是";int x;for (x = 0; x < 5; x++){if (b[x] == temp){cout << a[x];}}return b[x];}int mid(int a[5], float b[5]);int main(){int a[5]; float b[5];mid(a,b);system("pause");return 0;}
这是运行结果:
我的思路是:先创建并输入这个数组a,求出平均值。对每个数组元素求出其与平均值的差,取绝对值,再创建一个数组b来存放这些值。那么问题就变成了找出数组b中的最小元素了。我有想过”冒泡法“,但复杂了一些,毕竟也没有要求按照升序降序排列啥的,所以就采用”擂台法“来找出最小值。找到后还不行,得输出最小值对应的那个a数组中的元素,那么就找到这个这个最小值的下标再根据这个下标输出对应的a数组中的元素啦。
其实还是遇到许多问题的...最大的问题是,都知道数组一般都是得定义时就给出长度的,想要动态分配内存的话,可以用new,再就是vector,当然这就不符合题目要求了。是的啊我想实现可以从键盘输入数组的长度再用new分配内存,这样程序肯定就更人性化了一点点...可是,应该就是int *p=new int[num];这个样子的啊,百度了好久,应该是没错了,可是vs会报错,说什么int"类型的值不能用于初始化" int * "类型的实体???不懂啊...然后就是编的数组作为参数在函数间传递不是很懂,也百度了一下...总之,我对我的思路还是比较满意的,不知道还有什么更简洁的方法呢。
原创粉丝点击