プログラミング演習(2組) 第11回 http://www.fit.ac.jp/~matsuki/PEB1.html 今日の内容 • 前回の課題の解説 • 配列を用いたプログラミング – 配列要素をすべて表示する関数の作成 – 配列要素をすべて2倍する関数の作成 • 今回の課題の説明 タイピング • 喰人王を使用して結果を記録する • ステージ:第一の店(中華) • Excelのシートにスコアを毎回記録していく – 残り時間⇒ FeedBackページで報告 – 総タイプ数 – ミスタイプ数 – 正確さ⇒ FeedBackページで報告 – 喰いっぷり ⇒ FeedBackページで報告 前回の課題 課題1: 3つの値を入力させて,最大値を求めるプログラ ムを関数を使って,実現せよ.ただし,関数は 以下のような仕様に統一する. • 関数名:getMax • 引数:すべてdouble型とし, 変数名はa, b, cとする • 戻り値: double型とし,引数a,b,cの中の最大値を返す 前回の課題 課題2: 三角形の3辺の長さを入力させて,余弦定理を 使って面積を求めるプログラムを作れ.ただし, 計算部分は,以下の仕様の関数を作ること. • 関数名:getTriangle • 引数:すべてdouble型とし, 変数名はa, b, cとする • 戻り値: double型とし,引数a,b,cを3辺とする三角形の 面積を返す 関数の作り方 • Point1 関数の仕様を決める – 戻り値の型 – 関数名 – 引数の個数、型、変数名 • Point2 関数のプロトタイプ宣言を書く • Point3 関数の定義を書く • Point4 呼び出し部分を正しく記述する 課題1の解答例 #include<stdio.h> double getMax(double a, double b, double c); プロトタイプ宣言 main() { double a, b, c, x; printf("3つの値を入力してください\n"); printf("1回目"); scanf("%lf", &a); printf("2回目"); scanf("%lf", &b); printf("3回目"); scanf("%lf", &c); x = getMax(a, b, c); printf("最大値は%fです",x); main()関数 getMax関数の呼び出し } double getMax(double a, double b, double c) { double x; x = a; if (b > x) x = b; if (c > x) x = c; return x; } getMax()関数 課題1の解答例 プロトタイプ宣言 double getMax(double a, double b, double c); 変数は省略してもOK セミコロン「;」 を忘れない 課題1の解答例 #include<stdio.h> double getMax(double a, double b, double c); プロトタイプ宣言 main() { double a, b, c, x; printf("3つの値を入力してください\n"); printf("1回目"); scanf("%lf", &a); printf("2回目"); scanf("%lf", &b); printf("3回目"); scanf("%lf", &c); x = getMax(a, b, c); printf("最大値は%fです",x); main()関数 getMax関数の呼び出し } double getMax(double a, double b, double c) { double x; x = a; if (b > x) x = b; if (c > x) x = c; return x; } getMax()関数 課題1の解答例 main()関数 main() { double a, b, c, x; printf("3つの値を入力してください\n"); printf("1回目"); scanf("%lf", &a); printf("2回目"); scanf("%lf", &b); printf("3回目"); scanf("%lf", &c); x = getMax(a, b, c); printf("最大値は%fです",x); } 数値の入力処理 getMax関数の呼び出し 結果表示 課題1の解答例 getMax()関数 double getMax(double a, double b, double c) { double x; x = a; 最大値の選択 if (b > x) x = b; (変数xに最大値が格納される) if (c > x) x = c; return x; 最大値(x)を戻り値として返す } 課題2の解答例 #include <stdio.h> #include <math.h> double getTriangle (double a,double b,double c); プロトタイプ宣言 double getTriangle (double a,double b,double c) { double x; double cos; double sin; cos = (b*b+c*c-a*a) / (2*b*c);//余弦定理でcosAを求める sin = sqrt(1-cos*cos); //cosAをsinAに変換 x = (b*c*sin)/2; return x; } main() { double n; double a; double b; double c; printf("3つの辺の長さを入力せよ\n"); scanf("%lf",&a);//1つ目入力 scanf("%lf",&b);//2つ目入力 scanf("%lf",&c);//3つ目入力 n = getTriangle(a,b,c); getTriangle()関数 getTriangle関数 の呼出 printf("三辺の長さはそれぞれ%f、%f、%f。\nこの三角形の面積は%fである。\n",a,b,c,n); return 0; } main()関数 課題2の解答例() ヘッダーファイルの読み込み(呪文)と、プロトタイプ宣言 #include <stdio.h> #include <math.h> ヘッダーファイルの読み込み ・printf、scanf関数を使うため(標準入出力) ・sqrt関数を使うため(数学計算関数) double getTriangle (double a,double b,double c); 変数は省略してもOK セミコロン「;」 を忘れない 課題2の解答例 #include <stdio.h> #include <math.h> double getTriangle (double a,double b,double c); プロトタイプ宣言 double getTriangle (double a,double b,double c) { double x; double cos; double sin; cos = (b*b+c*c-a*a) / (2*b*c);//余弦定理でcosAを求める sin = sqrt(1-cos*cos); //cosAをsinAに変換 x = (b*c*sin)/2; return x; } main() { double n; double a; double b; double c; printf("3つの辺の長さを入力せよ\n"); scanf("%lf",&a);//1つ目入力 scanf("%lf",&b);//2つ目入力 scanf("%lf",&c);//3つ目入力 n = getTriangle(a,b,c); getTriangle()関数 getTriangle関数 の呼出 printf("三辺の長さはそれぞれ%f、%f、%f。\nこの三角形の面積は%fである。\n",a,b,c,n); return 0; } main()関数 課題2の解答例 main()関数 main() { double n; double a; double b; double c; printf("3つの辺の長さを入力せよ\n"); scanf("%lf",&a);//1つ目入力 数値の入力処理 scanf("%lf",&b);//2つ目入力 scanf("%lf",&c);//3つ目入力 getTriangle関数の呼び出し n = getTriangle(a,b,c); printf("三辺の長さはそれぞれ%f、%f、%f。\nこの三角形の面積は%fであ る。\n",a,b,c,n); } 結果表示 課題2の解答例 #include <stdio.h> #include <math.h> double getTriangle (double a,double b,double c); プロトタイプ宣言 double getTriangle (double a,double b,double c) { double x; double cos; double sin; cos = (b*b+c*c-a*a) / (2*b*c);//余弦定理でcosAを求める sin = sqrt(1-cos*cos); //cosAをsinAに変換 x = (b*c*sin)/2; return x; } main() { double n; double a; double b; double c; printf("3つの辺の長さを入力せよ\n"); scanf("%lf",&a);//1つ目入力 scanf("%lf",&b);//2つ目入力 scanf("%lf",&c);//3つ目入力 n = getTriangle(a,b,c); getTriangle()関数 getTriangle関数 の呼出 printf("三辺の長さはそれぞれ%f、%f、%f。\nこの三角形の面積は%fである。\n",a,b,c,n); return 0; } main()関数 課題2の解答例 getTriangle()関数 double getTriangle (double a,double b,double c) { double x; double cos; double sin; cos = (b*b+c*c-a*a) / (2*b*c);//余弦定理でcosAを求める sin = sqrt(1-cos*cos); //cosAをsinAに変換 x = (b*c*sin)/2; //面積計算 return x; //面積を戻り値として返す } 課題2の解答例 getTriangle()関数 //ヘロンの公式を使った場合 double getTriangle(double a,double b,double c) { double area; double s; s = (a+b+c)/2; area = sqrt(s*(s-a)*(s-b)*(s-c)); return area; } 課題2の解答例 • 入力された3つの値で,三角形が構成できる かを判定する関数を追加(黒武者さん,近藤 君,松川君) #defineの使い方 #include <stdio.h> #define PI 3.141592 main() { double r = 2; printf(“半径%lfの面積は%lf\n”,r , PI*r*r); } 配列のプログラム例 #include <stdio.h> #define MAX_SIZE 10 //プロトタイプ宣言 void display_all(int a[]); void twice(int a[]); main() { int data[MAX_SIZE] = {1,2,3,9,8,7,6,5,4,111}; display_all(data); twice(data); display_all(data); void display_all(int a[]) { int k; for (k=0;k< MAX_SIZE;k++) { printf("%d ", a[k]); } printf("\n"); } void twice(int a[]) { int k; for (k=0;k< MAX_SIZE;k++) { a[k] = a[k] * 2; } } } 今日の課題 課題1: 配列を用いて、10個の整数値を入力させて、そ の平均値、最大値を求めるGetAve関数と GetMax関数を作れ。 課題2: 配列を用いて、10個の整数値を入力させて、大き い順に並び替えるSort関数を作れ。 注意事項 • ソースファイルについて ソースファイルは添付ファイルで送る ソースファイル以外は送らない ソースファイルの名前は,半角のみ使用 • メールについて 件名は,学籍番号+半角スペース+氏名 (例)S09F2099 松木裕二 本文にも短いカバーレター(説明)をつける その他 • 講義に関する質問・課題提出など: [email protected] • Feed back page: http://www.fit.ac.jp/~matsuki/cgi-bin/newpage11.html メールアドレスの入力は不要です ニックネームを決めてください(Ranking表示に使います)
© Copyright 2024 ExpyDoc