概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C 例題8 2次元配列を使ったプログラム
2006年08月04日 (金) | 編集 |
2次元配列を用いたプログラムを組んでみる。
1次元配列と違って何かややこしいからな、例題は重要だぜ。

勝利条件:
「5x5の配列の対角要素を1、その他を0にするプログラムを作れや」

攻略方法:

対角要素ってのは2次元配列の行と列の番号が同じ要素のことだそうだ。
なので、この配列をa[5][5]とした場合、
a[0][0]、a[1][1]、a[2][2]、a[3][3]、a[4][4]
が対角要素ってことになる。

んで対角要素を1に、それ以外を0にという条件なので

10000
01000
00100
00010
00001

こんな感じの配列に。


んじゃ、実際にやってみよう。

配列a[5][5]の行要素、列要素を表現する為にj、kを宣言。
勿論配列[5][5]も宣言。

int_string_sq_ex.jpg

次に判定部分。
ループを使って判定する。ループ部分を日本語で書くと

jを0から4まで片っ端から試す
 kを0から4まで片っ端から試す
  もし対角要素だったら(j=kだったら)
    値を1にする(a[j][k]=1)
     そうでなければ0にする(a[j][k]=0)
 ループ閉じる
ループ閉じる


int_string_sq_ex2.jpg

で、後はそれを表示すればOK。
一応日本語で書くと

jを0から4まで片っ端から試す
 kを0から4まで片っ端から試す
  a[j][k]の値を表示する
 ループ閉じる
ループ閉じる


int_string_sq_ex3.jpg

実行してみよう。

int_string_sq_ex4.jpg
はいはいお約束お約束

shift押し忘れていたのか。馬鹿か。
修正して実行。

int_string_sq_ex5.jpg
ちょ、改行

またか。馬鹿か。
修正して実行。

int_string_sq_ex7.jpgint_string_sq_ex6.jpg

1回改行位置をミスったりして更に修正。
全く手際の悪い。くそ、これもコンパイラのせいだ。
これでは意図する動作はしないと事前に教えてくれればいいのに。


今回の教訓:

改行ちゃんを忘れないで
2次元配列の場合、改行するのは列要素のループが終わった後が良い
=(イコール)はshiftキー押し忘れていると-(マイナス)になる


以上。
ミスが多すぎた。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。