C++ C++;:用二维数组中满足特定要求的元素制作一个数组

C++ C++;:用二维数组中满足特定要求的元素制作一个数组,c++,multidimensional-array,C++,Multidimensional Array,我是多维数组的新手,我现在面临的问题是:我有一个“最大”天数,以及这些天记录的最高和最低温度,我必须用这些数据做一些事情。其中之一是确定温度低于和高于0的天数(即:记录的最低温度低于,最高温度高于)。程序必须输出此类事件发生的天数以及这些天数的索引 然而,无论我使用哪种循环以及如何使用,我都会把它搞砸,要么得到完全无关的东西,要么得到一个无限循环。以下是我到目前为止的情况: void abovebelow (int n, float days[maxn][2]{ int counter=0;

我是多维数组的新手,我现在面临的问题是:我有一个“最大”天数,以及这些天记录的最高和最低温度,我必须用这些数据做一些事情。其中之一是确定温度低于和高于0的天数(即:记录的最低温度低于,最高温度高于)。程序必须输出此类事件发生的天数以及这些天数的索引

然而,无论我使用哪种循环以及如何使用,我都会把它搞砸,要么得到完全无关的东西,要么得到一个无限循环。以下是我到目前为止的情况:

void abovebelow (int n, float days[maxn][2]{

int counter=0;
float a[maxn];

for (int i=0; i<n; i++){
     for (int j=0; j<n; j++){
          if ((days[i][0]<0 && days[i][1]>0) || (days[i][1]<0 && days[i][0]>0)){
           counter++;
           i=a[j];
      cout<<counter<<" "<<a[j]<<" ";
   }
    }

}
void(整数n,浮动天数[maxn][2]{
int计数器=0;
浮动a[maxn];

for(inti=0;i你可以用简单的for循环来实现。为什么要用两个嵌套的循环呢

此外,if条件可以修改为:

for (int i=0; i<n; i++) {
    if (days[i][0]*days[i][1]<0) {
        counter++;
        cout<<"Day "<<i+1<<endl;
    }
}
cout<<"Counter: "<<counter<<endl;

函数声明中存在语法错误。请注意,函数声明中的
maxn
不起任何作用。您的函数与上面声明的
void相同(int n,float days[][2])
或上面声明的
void(int n,float(*days)[2])在C++中,数组从不被值传递;当数组传递给函数时,它被隐式转换为指针,指向它的初始元素。当你看到数组类型函数参数时,它实际上与指针相同。打印出第一次出现的内容,但不是所有内容。我将编辑我的问题以使其更清楚!
maxn
可能是一个常量,在这种情况下,声明格式良好。哦,是的!我习惯于看到所有大写的常量:)我无法编辑我的评论,但我刚刚意识到我的输入文件出错,这就是为什么我认为我只出现了第一次,我现在再次尝试了你建议的简单循环,它确实有效,我很抱歉,谢谢你!是的,maxn是一个常量,但我应该将它全部大写!
float *a = new fload[n];

//do all the stuffs here

delete[] a;