【第7回】


『内容』

1. ポインタと配列

『演習』

7.4.3 ポインタと2次元配列

 1次元配列では,ポインタを1ずつ増やせば,配列要素も1ずつ移動した.2次元要素では,「行の若い順で,列の若い順に」メモリ上にデータ領域が確保されるので,この順序に沿ってポインタも移動する(教科書p.69参照).

 【練習1】 行列A,Bを与え,C=A+Bをポインタを用いて計算し,行列Cの結果を表示せよ.ただし,行列A,Bは以下のものである.(ヒント:行列A,B,Cを2次元配列で表し,行列A,Bは与えられたように初期化しておく.行列A,B,Cの先頭アドレスを示すポインタは,それぞれ,A[0],B[0],C[0]である.)

 

<答え>
 

 解答例 ←(まずは見ないで,自分で考えてプログラムすること)

 【練習2】 行列Aと行列Bの和を求める部分を関数化し,練習1を行え.ただし,和を求める関数への引数をポインタとすること.(ヒント:和を求める関数は,引数を,行列A,B,Cの先頭アドレスを持つポインタとし,返り値を持たない.)

 解答例 ←(まずは見ないで,自分で考えてプログラムすること)


 教科書p.69の「プログラム7-8」を実行し,その動作を確認せよ.

 【練習3】 「プログラム7-8」を例とし,5名分3教科のテスト結果が5行3列の2次元配列に入っているものを考える.各教科毎に点数の高い順に並び替えて表示する関数sort_scoreを作成し,この関数を用いて結果を表示せよ.

<答え>
 英語:77,75,65,50,30
 数学:92,80,69,65,40
 国語:90,90,80,50,45

 解答例 ←(まずは見ないで,自分で考えてプログラムすること)

 【練習4】 行列の和を求める関数add_matrix,ならびに行列を表示する関数print_matrixを作成し,以下の計算を1つのプログラムで行え.(ヒント:和を求める関数は,【練習2】のものを修正し,行列の行と列の数を引数に加える.行列を表示する関数も行列の行と列の数を引数とする.)

 

<答え>
 

 解答例 ←(まずは見ないで,自分で考えてプログラムすること)

レポート課題7(授業終了後にアップロード)

 RePORTシステム