プログラミング 3 2 次元配列.

Slides:



Advertisements
Similar presentations
プログラミング入門2 芝浦工業大学情報工学科青木 義満 第11回構造体. プログラミング入門2 2 構造体 5 人分のサッカー選手データ 全てのデータを関数に渡して,処理する場合 char name[5][256]; int assist[5]; int score[5]; void func( char.
Advertisements

メモリとポインタ. プログラムの前提 コンピュータは、0と1で計算をし、 0と1でデータを保存している。 メモリを学ぶのに必要な知識である。
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
ISD実習E 2009年6月29日 LISPシステム入門 (第5回) 関数ポインタ eval システム関数.
C言語 配列 2016年 吉田研究室.
プログラミング言語としてのR 情報知能学科 白井 英俊.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング演習(2組) 第12回
第4章 配 列 オブジェクト指向Javaプログラミング入門 近代科学社©2008 Toru Kato Masahiro Higuchi
12: コマンドライン引数 C プログラミング入門 総機1 (月1) Linux にログインし、以下の講義ページ を開いておくこと
12: コマンドライン引数 C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
問題 1 フィボナッチ数列 xn は次で定義される。
第6章 2重ループ&配列 2重ループと配列をやります.
構造体.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
プログラミング 3 構造体(1).
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
プログラミング論 ファイル入出力
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
プログラミング 4 記憶の割り付け.
第10章 これはかなり大変な事項!! ~ポインタ~
プログラミング 3 構造体(2).
第7回 プログラミングⅡ 第7回
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
プログラミング論 ファイル入出力
第11回 プログラミングⅡ 第11回
09: ポインタ・文字列 C プログラミング入門 総機1 (月1) Linux にログインし、以下の講義ページ を開いておくこと
プログラミング基礎B 文字列の扱い.
第2回課題 配布した通り.氏名・学生番号を忘れないこと.
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
プログラミング 3 スタックとキュー.
メモリとメモリアドレス, ポインタ変数,関数へのポインタ渡し
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
プログラミング基礎a 第6回 C言語によるプログラミング入門 配列と文字列(その2)
アルゴリズムとプログラミング (Algorithms and Programming)
ポインタとポインタを用いた関数定義.
プログラミング論 ポインタ
アルゴリズムとデータ構造1 2009年6月15日
地域情報学 C言語プログラミング 第4回 while文、do~while文、switch文、 2次元配列、ポインタ 2017年11月10日
ネットワーク・プログラミング Cプログラミングの基礎.
第5回 プログラミングⅡ 第5回
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
プログラミング 4 文字列.
アルゴリズムとデータ構造 2010年6月17日
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
プログラミング演習I 2003年6月11日(第9回) 木村巌.
情報処理Ⅱ 2005年11月25日(金).
プログラミング演習II 2004年11月 16日(第5回) 理学部数学科・木村巌.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
プログラミング演習II 2003年12月10日(第7回) 木村巌.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
プログラミング入門2 第5回 配列 変数宣言、初期化について
情報処理Ⅱ 小テスト 2005年2月1日(火).
プログラミング演習II 2003年10月29日(第2,3回) 木村巌.
第5回 配列.
プログラミング演習I 補講用課題
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング 3 ポインタ(1).
12: コマンドライン引数 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
プログラミング 2 静的変数.
Presentation transcript:

プログラミング 3 2 次元配列

1 次元配列 名前と(1 つの)番号で個々の変数(要素)を指定で きる一連の変数 int a[5]; と定義された配列は,a[0],a[1],a[2],a[3], a[4] の 5 つの要素を持つ

2 次元配列(1) 2 つの番号で要素を指定する配列:2 次元配列 縦横に箱が並んだようなものを想像するとよい 表形式のデータ 縦横に箱が並んだようなものを想像するとよい 表形式のデータ 宣言のしかた 型名 配列名[次元 1 の個数][次元 2 の個数]; int a[3][4]; a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3]

2 次元配列(2) 2 次元配列の初期化 int a[3][4] = {{ 3, 1, 4, 1 }, { 5, 9, 2, 6 }, { 5, 3, 5, 8 }}; 「4 個の配列が 3 個」とみる cf. 1 次元の場合 int a[10] = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3 };

2 次元配列(3) 2 次元配列は 2 重の繰り返しとともに使用されるこ とが多い int a[3][4], i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { a[i][j] = 0; } }

2 次元配列と関数(1) 2 次元配列も関数に渡すことができる ただし,1 次元配列と同じ受け渡しではない 1次元配列の場合: void func(int a[]) void func(int *a) 2 次元配列を受け取る関数は,2 次元めの要素数を指 定しなければならず,渡す配列は 2 次元めの要素数 が合致していなければならない void func(int a[][5]) [] と書けるのは 1 次元めのみ(int a[][] とは書けない) この関数に渡せるのは 2 次元めの要素数が 5 の 2 次元配列 のみ 呼び出すとき引数にするのは配列名のみ(func(x);)

2 次元配列と関数(2) void func(int a[][5]) が受け取れる配列 x[3][5],x[10][5] など 2 次元配列の場合も先頭要素のアドレスが渡されるが,詳細 は難しい 読み替えは void func(int (*a)[5]) になる どんな大きさの 2 次元配列でも受け取れる関数は特別な方法 を使わないと作れない

2 次元配列と関数(3) int sumAry2D(int a[][10], int n) { int i, j, s; s = 0; for (i = 0; i < n; i++) { for (j = 0; j < 10; j++) { s += a[i][j]; } } return s; }

2 次元配列と関数(4) 2 次元配列は「配列の配列」 たとえば a[3][4] は,「4 個の配列」の 3 個の配列 a[0][],a[1][],a[2][] は 1 次元配列として扱える 1 次元配列を受け取る関数に,2 次元配列の一部を渡せる func(a[0]) と渡すと,a[0][0],a[0][1],……,の 1 次元 配列を渡せる

ポインタの配列 ポインタも変数の一種→配列が作れる int *p[10]; int へのポインタ 10 個の配列 ポインタの配列を受け取る関数 void func(int *a[]) void func(int **a) ポインタへのポインタ型が現れる *a:a の指す先(int * 型) **a:a の指す先(ポインタ)の指す先(int 型) ポインタへのポインタは, int **pp; のように宣言する