2次元データ処理.

Slides:



Advertisements
Similar presentations
特別課題 あまりにも優秀すぎて, 時間をもてあましている人へ.
Advertisements

配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
次ページに関数の解答例 課題12-1 (問題と解答) 複素数xとして, 実部を入力してください.10 虚部を入力してください.20
復習 2次元配列 4列 j = 0 j = 1 j = 2 j = 3 i = 0 i = 1 i = 2 3行
復習 2次元配列 4列 j = 0 j = 1 j = 2 j = 3 i = 0 i = 1 i = 2 3行
配列(2) 第10回目 [6月22日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)課題
ループで実行する文が一つならこれでもOK
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
データ構造とアルゴリズム 第10回 mallocとfree
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
多重ループ 繰り返し構造:補足事項 第8回目 [6月8日、H.16(‘04)] 本日のメニュー 1)前回の課題について
多重ループ 繰り返し構造:補足事項 第8回目 [6月12日、H.15(‘03)] 本日のメニュー 1)前回の課題について
CGプログラミング論 平成28年6月1日 森田 彦.
プログラミング論 II 2008年9月25日 誤り検出,訂正符号 ハミング符号
C言語講座 第4回 ポインタ.
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
第6章 2重ループ&配列 2重ループと配列をやります.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月6日、H.16(‘04)] 今日のメニュー 1 前回の課題の復習
Stack & Queue & List 3.
プログラミング入門2 第2回 複合文、繰り返し 情報工学科 篠埜 功.
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
C言語講座 第3回 ポインタ、配列.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
プログラミング論 ファイル入出力
独習Java ・ 8.1  例外処理 ・ 8.2  catch ブロックの検索  12月 5日    小笠原 一恵.
繰り返し計算 while文, for文.
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
木の走査.
アルゴリズムとデータ構造 補足資料5-2 「サンプルプログラムsetop.c」
知能情報工学演習I 第12回(後半第6回) 課題の回答
メモリの準備 メモリには、その準備の方法で2種類ある。 静的変数: コンパイル時にすでにメモリのサイズがわかっているもの。 普通の変数宣言
今までの練習問題の復習.
indentについて forやifの「中身」を右に寄せる. forやifの「外枠」は右に寄せない. int x; x = 3;
高度プログラミング演習 (08).
プログラミング論 ファイル入出力
復習 2次元配列 4列 j = 0 j = 1 j = 2 j = 3 i = 0 i = 1 i = 2 3行
高度プログラミング演習 (05).
高度プログラミング演習 (05).
2分法のプログラム作成方法 2分法のプログラム(全体構成) プログラム作成要領 2分法のメイン関数(変数宣言)
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
疑似乱数, モンテカルロ法によるシミュレーション
計算機プログラミングI 第5回 配列 文字列(Stringクラス) mainの引数 配列の利用例
プログラミング序論演習.
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
高度プログラミング演習 (09).
プログラミングⅡ 第2回.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
Indent.
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
高度プログラミング演習 (11).
第5章 まだまだ続く反復処理!! ~繰り返しその2 for~
変数を一度にたくさん宣言するよ! それだけじゃないよ!
さまざまなプログラミング言語, オンライン開発環境
プログラミング基礎演習 第4回.
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
Inline 展開のアルゴリズム 長谷川啓
ループだよ! 第7章 for(ループ応用);.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
モバイルプログラミング第2回 C言語の基礎 (1).
プログラミング1 プログラミング演習I 第2回.
プログラミング序論演習.
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
知能情報工学演習I 第11回(後半第5回) 課題の回答
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
プログラミング演習I 補講用課題
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
Presentation transcript:

2次元データ処理

九九 以下の様な九九の表を作成 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81

void main(){ int x, y; for(y=1; y<=9; y++){ for(x=1; x<=9; x++){ printf("%2d ", x*y); } printf("\n");

2次元配列を2次元平面に表示 int a[3][3]; a[0][0] = 0; a[0][1] = 1; a[0][2] = 2; a[1][0] =10; a[1][1] =11; a[1][2] =12; a[2][0] =50; a[2][1] =51; a[2][2] =52; 0 1 2 10 11 12 50 51 52 a[0][2]を表示 a[1][0]を表示 a[2][1]を表示

void main(){ int a[3][3], x, y; a[0][0] = 0; a[0][1] = 1; a[0][2] = 2; a[1][0] =10; a[1][1] =11; a[1][2] =12; a[2][0] =50; a[2][1] =51; a[2][2] =52; for(y=0; y<3; y++){ for(x=0; x<3; x++){ printf("%2d ", a[y][x]); } printf("\n");

○× (2次元平面に表示) int a[3][3]; a[0][0] = 2; a[0][1] = 0; a[0][2] = 2; a[1][0] = 0; a[1][1] = 1; a[1][2] = 0; a[2][0] = 1; a[2][1] = 0; a[2][2] = 0; × ・ × 0なら・を表示 ・ ○ ・ 1なら○を表示 ○ ・ ・ 2なら×を表示 a[0][2]を表示 a[1][0]を表示 a[2][1]を表示

void main(){ int a[3][3], x, y; a[0][0] = 2; a[0][1] = 0; a[0][2] = 2; a[1][0] = 0; a[1][1] = 1; a[1][2] = 0; a[2][0] = 1; a[2][1] = 0; a[2][2] = 0; for(y=0; y<3; y++){ for(x=0; x<3; x++){ if( a[y][x] == 0 ){ printf("・"); } else if( a[y][x] == 1 ){ printf("○"); } else if( a[y][x] == 2 ){ printf("×"); } printf("\n");

○× (そろっているか調査) int a[3][3]; a[0][0] = 1; a[0][1] = 2; a[0][2] = 1; a[1][0] = 2; a[1][1] = 1; a[1][2] = 0; a[2][0] = 1; a[2][1] = 2; a[2][2] = 0; ○ × ○ × ○ ・ ○ × ・

void main(){ int a[3][3], x, y, cnt; a[0][0] = 1; a[0][1] = 1; a[0][2] = 1; a[1][0] = 2; a[1][1] = 2; a[1][2] = 0; a[2][0] = 1; a[2][1] = 2; a[2][2] = 0; for(y=0; y<3; y++){ // 横を確認 cnt = 0; for(x=0; x<3; x++){ if( a[y][x] == 1 ){ cnt ++; } if( cnt == 3 ){ printf("縦座標%dにて,○が横にそろっている.\n", y);

void main(){ int a[3][3], x, y, cnt; a[0][0] = 1; a[0][1] = 2; a[0][2] = 1; a[1][0] = 2; a[1][1] = 1; a[1][2] = 0; a[2][0] = 1; a[2][1] = 2; a[2][2] = 0; cnt = 0; for(x=0; x<3; x++){ // 斜めを確認 y = 2-x; if( a[y][x] == 1 ){ cnt ++; } if( cnt == 3 ){ printf("右上がり斜めにて,○がそろっている\n");

数独 (表示) static int a[9][9] = { 5,3,0,0,7,0,0,0,0, 6,0,0,1,9,5,0,0,0, 0,9,8,0,0,0,0,6,0, 8,0,0,0,6,0,0,0,3, 4,0,0,8,0,3,0,0,1, 7,0,0,0,2,0,0,0,6, 0,6,0,0,0,0,2,8,0, 0,0,0,4,1,9,0,0,5, 0,0,0,0,8,0,0,7,9 }; 5 3 . . 7 . . . . 6 . . 1 9 5 . . . . 9 8 . . . . 6 . 8 . . . 6 . . . 3 4 . . 8 . 3 . . 1 7 . . . 2 . . . 6 . 6 . . . . 2 8 . . . . 4 1 9 . . 5 . . . . 8 . . 7 9 問題は, http://ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC より引用

void main(){ int x, y; static int a[9][9] = { 5,3,0,0,7,0,0,0,0, (略) 0,0,0,0,8,0,0,7,9 }; for(y=0; y<9; y++){ for(x=0; x<9; x++){ if( 0 == a[y][x] ){ printf(" ."); } else { printf("%2d", a[y][x]); } printf("\n");

数独 (表示) 5 3 . . 7 . . . . 6 . . 1 9 5 . . . . 9 8 . . . . 6 . 8 . . . 6 . . . 3 4 . . 8 . 3 . . 1 7 . . . 2 . . . 6 . 6 . . . . 2 8 . . . . 4 1 9 . . 5 . . . . 8 . . 7 9 static int a[9][9] = { 5,3,0,0,7,0,0,0,0, 6,0,0,1,9,5,0,0,0, 0,9,8,0,0,0,0,6,0, 8,0,0,0,6,0,0,0,3, 4,0,0,8,0,3,0,0,1, 7,0,0,0,2,0,0,0,6, 0,6,0,0,0,0,2,8,0, 0,0,0,4,1,9,0,0,5, 0,0,0,0,8,0,0,7,9 };

int x, y; static int a[9][9] = { 5,3,0,0,7,0,0,0,0, (略) 0,0,0,0,8,0,0,7,9 }; for(y=0; y<9; y++){ if( y % 3 == 0 ){ printf("\n"); } for(x=0; x<9; x++){ if( x % 3 == 0 ){ printf(" "); } if( 0 == a[y][x] ){ printf(" ."); } else { printf("%2d", a[y][x]); } printf("\n");

数独 (データの誤りを調査) 5 3 . . 7 . . . . 6 . . 1 9 5 . . . . 9 8 . . . . 6 . 8 . . . 6 . . . 3 4 . . 8 . 3 . . 1 7 . . . 2 . . . 6 . 6 . 8 . . 2 8 . . . . 4 1 9 . . 5 . . . . 8 . . 7 9 static int a[9][9] = { 5,3,0,0,7,0,0,0,0, 6,0,0,1,9,5,0,0,0, 0,9,8,0,0,0,0,6,0, 8,0,0,0,6,0,0,0,3, 4,0,0,8,0,3,0,0,1, 7,0,0,0,2,0,0,0,6, 0,6,0,8,0,0,2,8,0, 0,0,0,4,1,9,0,0,5, 0,0,0,0,8,0,0,7,9 };

int x, y, n, cnt; static int a[9][9] = { 5,3,0,0,7,0,0,0,0, (略) 0,0,0,0,8,0,0,7,9 }; for(x=0; x<9; x++){ for(n=1; n<=9; n++){ cnt = 0; for(y=0; y<9; y++){ if( a[y][x] == n ){ cnt ++; } } if( 1 < cnt ){ printf("%d %ds at x==%d.\n", cnt, n, x);

数独 (データの誤りを調査) 5 3 . . 7 . . . . 6 . . 1 9 5 . . . . 9 8 . . . . 6 . 8 . . . 6 . . . 3 4 . . 8 . 3 . . 1 7 . . . 2 . . . 6 . 6 . 8 . . 2 8 . . . . 4 1 9 . . 5 . . . . 8 . . 7 9 static int a[9][9] = { 5,3,0,0,7,0,0,0,0, 6,0,0,1,9,5,0,0,0, 0,9,8,0,0,0,0,6,0, 8,0,0,0,6,0,0,0,3, 4,0,0,8,0,3,0,0,1, 7,0,0,0,2,0,0,0,6, 0,6,0,8,0,0,2,8,0, 0,0,0,4,1,9,0,0,5, 0,0,0,0,8,0,0,7,9 };

int x, y, xx, yy, n, cnt; static int a[9][9] = { (略) }; for(xx=0; xx<3; xx++){ for(yy=0; yy<3; yy++){ for(n=1; n<=9; n++){ cnt = 0; for(x=xx*3; x<(xx+1)*3; x++){ for(y=yy*3; y<(yy+1)*3; y++){ if( a[y][x] == n ){ cnt ++; } if( 1 < cnt ){ printf("%d %ds in block (%d,%d).\n", cnt, n, xx, yy);