2017-07-07 6 views
-5

私は2つの数字のより大きい数を見つけて、それらを配列の最初の行に格納する単純なプログラムを持っています。2次元配列の値を変更するにはどうすればよいですか?

配列はarr [tot] [2]であり、arr [tot] [0]の各要素とarr [tot] [1]の要素を比較したいのですが、そのことを教えてください。無効な配列割り当て。 私はどの機能/方法を使ってそれを行うべきですか?私の質問に答えるための

for(i=0;i<tot;i++) 
    { 
     if(arr[i,1]>arr[i,0]) 
      { 
      arr[i,0]=arr[i,1]} 
    } 

全プログラム

#include <iostream> 
#include <stdio.h> 
using namespace std; 
int main() 
{ 
    //Input 

    int tot = 23; 
    int arr[tot][2] = { 
    {9272992,-5268711}, 
    {-6457223,-8368810}, 
    {-3415057,-2776446}, 
    {-6492757,-3453386}, 
    {4313482,4783138}, 
    {5573672,8360909}, 
    {-2546018,2224083}, 
    {1267093,4700254}, 
    {6136723,9042717}, 
    {1277125,2796189}, 
    {-2062877,2036481}, 
    {6089545,-6182241}, 
    {-8795303,6074456}, 
    {8152425,785931}, 
    {-5134200,4319924}, 
    {6820437,-5861208}, 
    {9051213,-9636786}, 
    {-4230018,-4363843}, 
    {-2413233,-722776}, 
    {2182770,-8099750}, 
    {-5939638,-2243558}, 
    {-9738840,1514344}, 
    {9980524,1528253} 
     }; 


    //the comparing 
    int i; 
    for(i=0;i<tot;i++) 
     { 
      if(arr[i,1]>arr[i,0]) 
       { 
       arr[i,0]=arr[i,1] 
       } 
     } 
    for(i=0;i<tot;i++) 
     { 
     cout<<arr[i,0]<<" "; 
     } 
    return 0; 
} 

感謝:) またdownvotesに感謝、それは本当に私が唯一のスマートで先進的な質問はここでは許可されていることを理解して助けたと愚か間違いや構文エラーは歓迎されません。

+2

[mcve] – xaxxon

+5

を用意してください。代わりに 'arr [i] [1]'と 'arr [i] [0]'を試してください。 – songyuanyao

+0

2次元配列の宣言。 'intマトリックス[ROWS] [COLS]' – rsp

答えて

0

は正しいです。 2D配列の値にアクセスする場合は、arr[i][0]を使用する必要があります。あなたは配列を宣言するとき

  1. は、要素の数は一定でなければならない:

    あなたのコードは、3個のエラーがあります。したがってint tot = 23;const int tot = 23;

  2. が有効な式である必要がありますが、ここでは使用しないでください。このプログラムでは、構文arr[i][0]を使用する必要があります。

  3. セミコロンがありませんでした。

#2のためのいくつかの説明:エラー「無効な配列の割り当ては、」(あなたがここにも;を逃した)ラインarr[i,0]=arr[i,1]によるものです。 arr[i,0]では、カンマはcomma operatorで、第2オペランドの値を返します。従ってarr[i,0]はと等価であり、これは1Dアレイです。同様にarr[i,1]arr[1]であり、1Dアレイでもある。しかしarray is not a modifiable L-valueなので、arr[i,0]=arr[i,1]は "無効な配列の割り当て"エラーを返します。これはまた、arr[i,1]>arr[i,0]がコンパイル時エラーを出さない理由を説明しますが、ランタイムのバグです。

+0

ええ、私は今理解しています。しかし、私は一定の機能を理解していません。それは私に間違いを与えません。私は、入力したい番号の数をユーザに尋ねたい。私はそれを変更するつもりはありません。私は間違いを犯すと、定数は私にその数字の変更を止めますか? –

-2

これ使ってみて、その代わり

if(arr[i,1]>arr[i,0]) 
    { 
    arr[i,0]=arr[i,1] 
    } 

この構文を使用しないでください:songyuanyaoさんのコメント@

if(arr[i][1]>arr[i][0]) 
    { 
     arr[i][0]=arr[i][1] 
    } 
関連する問題