麻烦在C ++中查找数组中的最低值

时间:2017-04-07 14:46:01

标签: c++ arrays

帮我从function4中的数组中找出最小值。我每次都变0。有时我将数组的第一个索引处的值作为最小值。请仔细检查我的代码并帮助我解决问题。

#include <iostream>
using namespace std;
int count=0;
void function1(int a[]) {
 for (count=0;count<100;count++) {
        cin >> a[count];
        if (a[count]==0)
        break; }
} 

int function2 (int a[]) {
int sum=0,avg=0;
 for (int n=0;n<count;n++) {
    sum=sum+a[n]; }
    avg=sum/count;
    return avg;

 }
 //maximum value
 int function3 (int a[]) {
    int max1=a[0];
    for (int count=0;count<100;count++) {
      if (a[count]>max1)
        max1=a[count];  
    } 
      return max1;
    }
    //minimum value
    int function4 (int a[]) {   
    int min1=a[0];
    for (int count=0;count<100;count++) {
        if (a[count]<min1){
        min1=a[count];}
        }
        return min1; 
    }

int main () { 
 int a[100]={0};


function1(a); 
cout <<"Average is : "<<function2(a)<<'\n';
cout <<"Maximum Value is : "<<function3(a) <<'\n';
cout <<"Minimum value is : "<<function4(a) << '\n';
 }

2 个答案:

答案 0 :(得分:0)

也许你可能会对这一行感到困惑:

int a[100]={0}; // This initlizes the whole array to zero.
int a[100]={SOME_VAL}; // This initlizes the first element to SOME_VAL, and the rest of the array to zero.

所以,可能数组有很多零,所以你得到的是最小值。

但是,您不需要自己制作此功能,只需使用std::min_element

即可

示例:

std::cout << "Minimum value is : " << *std::min_element(a,a+99) << std::endl;

答案 1 :(得分:0)

看起来你正在尝试学习编程本身,而不仅仅是C ++。 如果您要了解C ++如何获取容器中较小的元素,我建议您查看STL文档std::min_element()。 之前已在此处询问过:How to find minimum value from vector?

但是你肯定还需要一些提示:

  1. 直观地命名您的功能。 function4是函数的可怕名称,其含义是查找容器中的最小/最小/最小值。如何调用它minimum
  2. 在发布之前总是搜索。 StackOverflow非常智能,可以在您键入时搜索您。
  3. 将数组传递给函数的方法是个问题。你有一个函数可以对数组大小做出假设,没有保证。如果您只是将声明从a[100]更改为a[10],那么您的程序将访问数组边界外的数据。有很多解决方案。例如,包括一个告诉数组大小的额外参数或使用std::vector。 1.请研究如何在C ++中传递参数(特别是数组)。请看Passing arrays to and from functions safely and securely开始。
  4. 重要提示:您的数据正由function1()通过控制台输入填充。 ** 您确定要在数组中填写100个值吗?没有一个是ZERO? **如果您的数组中有任何0并且没有负输入,那么显然{{1 }}值将为minimum