精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)

Slides:



Advertisements
Similar presentations
1 第5回 配列. 2 今回の目標 マクロ定義の効果を理解する。 1次元配列を理解する。 2次元配列を理解する。 ☆2 × 2の行列の行列式を求めるプログラ ムを作成する.
Advertisements

配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
ポインタ プログラミング入門2 第10回 芝浦工業大学情報工学科 青木 義満
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第12回新しい型と構造体.
第13回構造体.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
データ構造とアルゴリズム 第10回 mallocとfree
第12回構造体.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング論 I 行列の演算
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
プログラミング演習(2組) 第12回
C言語講座 第4回 ポインタ.
第8回 プログラミングⅡ 第8回
問題 1 フィボナッチ数列 xn は次で定義される。
IT入門B2 ー 連立一次方程式 ー.
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
構造体.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月6日、H.16(‘04)] 今日のメニュー 1 前回の課題の復習
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
第10回 プログラミングⅡ 第10回
第7回 条件による繰り返し.
C言語講座 第3回 ポインタ、配列.
プログラミング2 関数
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
第10回関数 Ⅱ (ローカル変数とスコープ).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
精密工学科プログラミング基礎 第10回資料 (12/18実施)
第10章 これはかなり大変な事項!! ~ポインタ~
知能情報工学演習I 第12回(後半第6回) 課題の回答
講義では、Cプログラミングの基本を学び 演習では、やや実践的なプログラミングを通して学ぶ
第7回 条件による繰り返し.
第7回 プログラミングⅡ 第7回
第11回 プログラミングⅡ 第11回
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
メモリとメモリアドレス, ポインタ変数,関数へのポインタ渡し
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
復習 2次元配列 4列 j = 0 j = 1 j = 2 j = 3 i = 0 i = 1 i = 2 3行
プログラミング 3 2 次元配列.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
第13回 ポインタ 1 1.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
精密工学科プログラミング基礎 第7回資料 (11/27実施)
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
変数を一度にたくさん宣言するよ! それだけじゃないよ!
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
プログラミング入門2 第5回 配列 変数宣言、初期化について
第4回 配列.
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
第5回 配列.
プログラミング演習I 補講用課題
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
Presentation transcript:

精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.) 2次元配列の使い方   (前回の1次元配列の復習もします.) 宣言の仕方 アクセス (値の代入・参照) の方法 繰り返し文と配列の組み合わせの方法 配列を引数とする関数の作り方 資料のURL : http://www.den.t.u-tokyo.ac.jp/prog

「2次元配列」とは? 配列を配列として並べたデータ 行列や画像などを扱う時に便利 int A[2][3]; A[0][0] = 1; int g[14][13]; g[0][0] = 1; g[0][1] = 1; … g[0][4] = 0;

配列名[縦のインデックス][横のインデックス] 2次元配列の宣言と参照 宣言 : 参照 : (※インデックスは 0~長さ-1 まで) 型 配列名[縦の長さ][横の長さ]; 配列名[縦のインデックス][横のインデックス] 例: 3×4 の実行列を扱いたい: 宣言 : double A[3][4]; A[1][3] A[2][2]

標準入力からの読み込み 例: 正方行列を読み込んで,表示する. とりあえず 100 ×100 個で十分 実際に使う長さ 読み込み プリント int i,j; double a[100][100]; int n; scanf("%d", &n); for(i=0; i<n; i++){ for(j=0; j<n; j++){ scanf("%lf", &(a[i][j]) ); } printf("%lf ", a[i][j]); printf("\n"); とりあえず 100 ×100 個で十分 実際に使う長さ 読み込み プリント ※ include と main は 省略されています。

配列を引数とする関数 前ページと同じことをするプログラム 読み込み プリント void scan(double A[MAX][MAX], int *pN){ int i,j; scanf("%d", pN); for(i=0; i<*pN; i++){ for(j=0; j<*pN; j++){ scanf("%lf", &(A[i][j]) ); } #include <stdio.h> #define MAX 100 void scan(double A[MAX][MAX], int *pN); void print(double A[MAX][MAX], int N); int main(){ int i,j; double a[MAX][MAX]; int n; scan(a, &n); print(a, n); return 0; } 変更があった時に便利 読み込み 長さは 呼び出し先で 代入するので アドレスを渡す void print(double A[MAX][MAX], int N){ int i,j; for(i=0; i<N; i++){ for(j=0; j<N; j++){ printf("%lf ", A[i][j]); } printf("\n"); プリント

課題 (前回の復習) WEBページに置いてある雛形を基に 以下のプログラムを完成させよ. 課題 (前回の復習) WEBページに置いてある雛形を基に 以下のプログラムを完成させよ. 2つの3次元ベクトルを入力して、 それらの内積を計算せよ. Main 関数のみで済ませる版 : product_main.c サブ関数も使う版 : product_func.c 整数の列を配列へ入力して、          配列を昇順に並び替えよ. Main 関数のみで済ませる版 : sort_main.c サブ関数も使う版 : sort_func.c

課題 (1) N×N の実行列を2次元配列へ入力した後, 以下を行い結果を出力するプログラムを作成せよ. (必要ならばWEBの雛形とデータを利用して下さい) 指定した2つの行を交換する. 指定した2つの列を交換する. 行と列を入れ替える(転置) . 指定した要素より右下の部分行列において,         絶対値が最大となる要素を見つける. 行の交換を繰り返し行い,  指定した列の絶対値が降順に並ぶようにする.

課題 (2)