2

私は多次元配列に不慣れです。私が今苦労している質問は次のとおりです。「最大」日数があり、最近の最高気温と最低気温が記録されており、これを使って特定のことをしなければなりません。データ。これらのことの1つは、気温が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]<<" ";
   }
    }

}
4

1 に答える 1

1

単純なforループでそれを行うことができます。そのために2つのネストされたループを使用するのはなぜですか?

さらに、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;

PS:

1.貼り付けたコードのタイプミスを願っています。関数宣言に構文エラーがあります。

2.標準のC++には、VLAはありません(コンパイラ固有の追加機能を無意識のうちに使用しています)。(ありがとう、ジェームズ)でない限りmaxn、次のことを行う必要があります。const

float *a = new fload[n];

//do all the stuffs here

delete[] a;
于 2012-06-05T01:20:45.863 に答える