プログラミング演習(2組) 第12回 http://www.fit.ac.jp/~matsuki/PEB1.html.

Slides:



Advertisements
Similar presentations
プログラミング演習( 1 組) 第 6 回
Advertisements

プログラミング演習( 2 組) 第 6 回
プログラミング演習Ⅱ 第 11 回 ポインタ(2) 情報・知能工学系 山本一公
論理回路 第3回 今日の内容 前回の課題の解説 論理関数の基礎 – 論理関数とは? – 真理値表と論理式 – 基本的な論理関数.
プログラミング入門2 芝浦工業大学情報工学科青木 義満 第6回関数(2). プログラミング入門2 2 今回の講義内容 関数 配列データの受け渡し ( p.130 ~) 入出力と文字 ( p.198 ~) 文字列の基本 ( p.208 ~)
プログラミング演習( 2 組) 第 9 回
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング演習(1組) 第7回
関数(1) 第11回 [6月29日、H.16(‘04)] 今日のメニュー 1 前回の課題 2 前回の宿題 3 いろいろな関数の演習 4 課題
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第13回構造体.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
データ構造とアルゴリズム 第10回 mallocとfree
第12回構造体.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第6回 関数(2) 芝浦工業大学情報工学科 青木 義満
第8回 プログラミングⅡ 第8回
問題 1 フィボナッチ数列 xn は次で定義される。
第6章 2重ループ&配列 2重ループと配列をやります.
情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
湘南工科大学 2013年12月10日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
論理回路 第7回
論理回路 第8回
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
第7回 条件による繰り返し.
C言語講座 第3回 ポインタ、配列.
プログラミング論 関数ポインタ と 応用(qsort)
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
関数とポインタ 値呼び出しと参照呼び出し swapのいろいろ 関数引数 数値積分
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
関数の定義.
プログラミング演習(2組) 第8回
第10回関数 Ⅱ (ローカル変数とスコープ).
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
プログラミング演習I 2003年6月25日(第10回) 木村巌.
高度プログラミング演習 (03).
アルゴリズムとデータ構造 補足資料5-2 「サンプルプログラムsetop.c」
第7回 条件による繰り返し.
第7回 プログラミングⅡ 第7回
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
第11回 プログラミングⅡ 第11回
情報理論2 第3回 小林 学 湘南工科大学 2011年10月25日 〒 神奈川県藤沢市辻堂西海岸1-1-25
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
メモリとメモリアドレス, ポインタ変数,関数へのポインタ渡し
Cプログラミング演習資料.
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
論理回路 第4回
プログラミング序論演習.
プログラミング 3 2 次元配列.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
ネットワーク・プログラミング Cプログラミングの基礎.
第5回 プログラミングⅡ 第5回
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
第10回 関数と再帰.
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
湘南工科大学 2013年10月22日 情報理論2 湘南工科大学情報工学科 准教授 小林 学.
プログラミング入門2 第5回 配列 変数宣言、初期化について
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
C言語講座第5回 2017 構造体.
プログラミング演習I 補講用課題
Presentation transcript:

プログラミング演習(2組) 第12回 http://www.fit.ac.jp/~matsuki/PEB1.html

今日の内容 前回の課題の解説 今回の課題の説明

タイピング 喰人王を使用して結果を記録する ステージ:第一の店(中華) Excelのシートにスコアを毎回記録していく 残り時間⇒ FeedBackページで報告 総タイプ数 ミスタイプ数 正確さ⇒ FeedBackページで報告 喰いっぷり ⇒ FeedBackページで報告

前回の課題 課題1: 配列を用いて、10個の整数値を入力させて、その平均値、最大値を求めるGetAve関数とGetMax関数を作れ。 課題2: 配列を用いて、10個の整数値を入力させて、大きい順に並び替えるSort関数を作れ。

前回の課題 課題1: 配列を用いて、10個の整数値を入力させて、その平均値、最大値を求めるGetAve関数とGetMax関数を作れ。

関数の作り方 Point1 関数の仕様を決める Point2 関数のプロトタイプ宣言を書く Point3 関数の定義を書く 戻り値の型 関数名 引数の個数、型、変数名 Point2 関数のプロトタイプ宣言を書く Point3 関数の定義を書く Point4 呼び出し部分を正しく記述する

前回の課題 GetAve関数: GetMax関数: 関数名:GetAve 戻り値の型:double型 引数:int型の配列

課題1の解答例 配列の大きさをdefineで指定 プロトタイプ宣言 main()関数 getMax関数の呼び出し getAve関数の呼び出し #include<stdio.h> #define MAX_SIZE 10 int GetMax(int a[]); double GetAve(int a[]); main() { int data[MAX_SIZE]; int i; printf("入力した整数値の最大値と平均値を求めます。\n"); printf("10個の整数値を入力してください。\n"); for(i = 0;i < MAX_SIZE;i++){ printf("%d個目の値:",i+1); scanf("%d",&data[i]); } printf("最大値は%dです。\n",GetMax(data)); printf("平均値は%3.6lfです。\n",GetAve(data)); 配列の大きさをdefineで指定 プロトタイプ宣言 main()関数 getMax関数の呼び出し getAve関数の呼び出し

課題1の解答例 getAve()関数 配列aを引数としている 配列要素の総和を計算 平均を計算 計算した平均を戻り値として返す double GetAve(int a[]) { int k; int sum; double ave; sum = 0; for(k = 0;k < MAX_SIZE;k++){ sum += a[k]; } ave = sum /(double)k; return ave; 配列aを引数としている 配列要素の総和を計算 平均を計算 計算した平均を戻り値として返す

課題1の解答例 getMax()関数 配列aを引数としている 最初の要素a[0]を暫定最大値としている 暫定最大値maxとすべての要素を比較 int GetMax(int a[]) { int j; int max; max = a[0]; for(j = 1;j < MAX_SIZE;j++){ if(max < a[j]) max = a[j]; } return max; 配列aを引数としている 最初の要素a[0]を暫定最大値としている 暫定最大値maxとすべての要素を比較 求めた最大値を戻り値として返す

課題1の解答例 getMax()関数 あくまで,getMax関数は「最大値を計算する」という機能を持つ maxに最大値が入る int GetMax(int a[]) { int j; int max; max = a[0]; for(j = 1;j < MAX_SIZE;j++){ if(max < a[j]) max = a[j]; } printf(“最大値は%fです.\n”, max); return max; maxに最大値が入る 表示する機能はいらない(むしろ邪魔)

#include <math. h> main() { double x, y; x = sqrt(2); y = sin(3 #include <math.h> main() { double x, y; x = sqrt(2); y = sin(3.14 / 3); printf(“x = %lf, y=%lf\n”,x,y); } sin()関数自体に表示する機能はいらない(むしろ邪魔)

前回の課題 課題2: 配列を用いて、10個の整数値を入力させて、大きい順に並び替えるSort関数を作れ。 いろいろな計算方法(アルゴリズムという)が存在する. 最大値を配列の左側に集める方法を行う

方針(Step1) 7 4 5 9 0 a[0]とa[1]を比較 7 4 5 9 0 a[0]とa[2]を比較 7 4 5 9 0

方針(Step2) 9 4 5 7 0 a[1]とa[2]を比較 9 5 4 7 0 a[1]とa[3]を比較 9 7 4 5 0 最大値が入る(全体で2番目の最大値)

方針(Step3) 9 7 4 5 0 a[2]とa[3]を比較 9 7 5 4 0 a[2]とa[4]を比較 9 7 5 4 0 最大値が入る(全体で3番目の最大値)

方針(Step4) 9 7 5 4 0 a[3]とa[4]を比較 9 7 5 4 0 全体の最小値に確定 a[3]には,a[3]からa[4]までの 最大値が入る(全体で4番目の最大値) 全体の最小値に確定

解答例 a[j] a[k] a[j]がa[k]よりも小さい 場合は交換 void Sort(int a[]) { int j; int k; int tmp; for(j = 0;j < MAX_SIZE-1;j++){ for(k = j+1;k < MAX_SIZE;k++){ if(a[j] < a[k]){ tmp = a[j]; a[j] = a[k]; a[k] = tmp; } a[j]がa[k]よりも小さい 場合は交換 a[j] a[k] 確定

今日の課題(締切:7月30日) 課題1:次の仕様を満たす関数を作れ ・関数名:circleInfo ・戻り値:void ・引数: double型 double r double型へのポインタ double *pLength double型へのポインタ double *pArea; ・機能:引数rを半径とする円の円周長と面積を求め,それぞれの結果をポインタpLength, pAreaの指すメモリに格納する(Call by reference)

戻り値: numがMAX_SIZEより大きい場合は0を,そうでない場合は1を返す 課題2:  配列を初期化する関数InitArrayを以下の仕様に従って作れ.但し,配列の大きさは#define MAX_SIZEで指定されていると見なしてよい. 関数名:InitArray 引数:  int型配列 int a[],  int型変数 int value,  int型変数 int num 戻り値: numがMAX_SIZEより大きい場合は0を,そうでない場合は1を返す 機能:a[0]からa[num-1]までをvalueで初期化し,それ以外はすべて0で初期化する(但し,numがMAX_SIZEより大きい場合は,初期化処理は行わない). 

課題2のmain関数および宣言部分(例) #include <stdio.h> #define MAX_SIZE 10 int InitArray(int a[], int value, int num); main() { int k; int data[MAX_SIZE]; InitArray(data, 3, 8); for (k=0;k<MAX_SIZE;k++) printf(“%2d “,data[k]); printf(“\n”); }

今日の課題 課題3: ポインタを使って,配列にint型の値を入力させる関数InputArray2を作れ. ・関数名:InputArray2 ・戻り値:void ・引数:int型へのポインタ int *pa

注意事項 ソースファイルについて メールについて ソースファイルは添付ファイルで送る ソースファイル以外は送らない ソースファイルの名前は,半角のみ使用 メールについて 件名は,学籍番号+半角スペース+氏名 (例)S09F2099  松木裕二 本文にも短いカバーレター(説明)をつける

その他 講義に関する質問・課題提出など: Feed back page: 2009pe11y@gmail.com http://www.fit.ac.jp/~matsuki/cgi-bin/newpage11.html メールアドレスの入力は不要です ニックネームを決めてください(Ranking表示に使います)