第14回の演習課題
ex14-masu.c
要素の値が 0 から100 の範囲にある大きさ50の整数型の配列変数 data[] と,配列 data[] の要素の値が 0〜9, 10〜19, …, 90〜99, 100 のような10刻みの範囲に何個ずつ含まれているかを*で出力するプログラム ex14-masu.c の一部が以下のように与えられてる. ex14-masu.c 完成させてkiso2コマンドを用いて提出しなさい。
- ex14-masu.c
#include <stdio.h> #define N 11 //a[]の個数 #define M 50 //data[]の個数 /* 関数のプロトタイプ宣言 */ int main(void) { int data[] = {57, 25, 5, 82, 39, 37, 3, 16, 1, 7, 80, 4, 72, 81, 95, 8, 67, 83, 9, 95, 40, 13, 34, 49, 100, 83, 79, 5, 90, 11, 8, 96, 89, 38, 30, 45, 59, 90, 32, 71, 42, 6, 57, 84, 97, 17, 84, 51, 64, 56}; int a[N]={0}, i; //10刻みの範囲に何個ずつ含まれているかを格納する配列 a proc(a,data); //10刻みの範囲に何個ずつ含まれているかを格納する処理 for(i=0;i<N;i++){ printf("%3d - %3d: ", /* %dに対応する変数 */ ); starwrt( /* 対応する変数 */ ); } return 0; } void proc( /* 対応する引数 */) { int i; for(i=0;i<M;i++) a[data[i]/10]++; return; } void starwrt(int n) { int i; for(i=0;i<n;i++) printf("*"); printf("\n"); return; }
実行例:
t180900@s01cd0542-160:~/kiso2-2018/ex14$ ./ex14-masu 0 - 9: ********** 10 - 19: **** 20 - 29: * 30 - 39: ****** 40 - 49: **** 50 - 59: ***** 60 - 69: ** 70 - 79: *** 80 - 89: ******** 90 - 99: ****** 100 - 109: *
ex14-shaku.c
関数 kuku() は、2つのint型の変数 a,b の値を引数として受け取ると a行 b列の九九表を作る関数である。 関数 kuku()を定義しないさい。
また、2つの整数値 x,y を入力するとこの関数 kuku() を用いて九九表を書くプログラム ex14-shaku.c を完成させてkiso2コマンドを用いて提出しなさい。 ただし、整数値 x,y の入力と九九表の出力は繰り返し行えるものとし、x,y どちらかに 0 以下の値が入力されるとプログラムを「終了します」と出力して終了するものとする。
実行例:
t180900@s01cd0542-160:~/kiso2-2018/ex14$ ./ex14-shaku l? 9 m? 9 | 1 2 3 4 5 6 7 8 9 ---------------------------------------- 1| 1 2 3 4 5 6 7 8 9 2| 2 4 6 8 10 12 14 16 18 3| 3 6 9 12 15 18 21 24 27 4| 4 8 12 16 20 24 28 32 36 5| 5 10 15 20 25 30 35 40 45 6| 6 12 18 24 30 36 42 48 54 7| 7 14 21 28 35 42 49 56 63 8| 8 16 24 32 40 48 56 64 72 9| 9 18 27 36 45 54 63 72 81 l? 10 m? 4 | 1 2 3 4 -------------------- 1| 1 2 3 4 2| 2 4 6 8 3| 3 6 9 12 4| 4 8 12 16 5| 5 10 15 20 6| 6 12 18 24 7| 7 14 21 28 8| 8 16 24 32 9| 9 18 27 36 10| 10 20 30 40 l? 4 m? 8 | 1 2 3 4 5 6 7 8 ------------------------------------ 1| 1 2 3 4 5 6 7 8 2| 2 4 6 8 10 12 14 16 3| 3 6 9 12 15 18 21 24 4| 4 8 12 16 20 24 28 32 l? 0 m? 4 t180900@s01cd0542-160:~/kiso2-2018/ex14$ ./ex14-shaku l? 4 m? 0
ex14-miran.c
関数 f() は引数 x の値を受け取ると x*x/2 の値を返す関数である。 また、関数 g() は引数 x の値を受け取ると x*x/3 の値を計算し出力する関数である。
以下の実行例を実現するように、適切な引数の型と返り値の型を選び、関数 f() と g() を定義しなさい。 さらに、これらの関数 f(), g() を用いて、値 x を入力すると f(), g() の結果を出力するプログラム ex14-miran.c を作成しkiso2コマンドを用いて提出しなさい。 ただし、値 x の入力と計算結果の出力は繰り返し行えるものとし、x に 0 が入力されるとプログラムは終了するものとする。 また、プログラムの実行直後には、f() と g() の計算式を出力すること(実行例を参照)。
実行例:
t180900@s01cd0542-160:~/kiso2-2018/ex14$ ./ex14-miran f(x)=x*x/2 g(x)=x*x/3 x? 1 f(1)=0.50 g(1)=0.33 x? 2 f(2)=2.00 g(2)=1.33 x? 3 f(3)=4.50 g(3)=3.00 x? 10 f(10)=50.00 g(10)=33.33 x? 100 f(100)=5000.00 g(100)=3333.33 x? 2019 f(2019)=2038180.50 g(2019)=1358787.00 x? 0