差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
lecture:kiso2:2018:ex14 [2019/01/08 08:36]
sano ↷ ex14 から lecture:kiso2:ta:ex14 へページを移動しました。
lecture:kiso2:2018:ex14 [2019/09/23 13:22] (現在)
sano ↷ lecture:kiso2:2019:ex14 から lecture:kiso2:2018:ex14 へページを移動しました。
ライン 1: ライン 1:
 ===== 第14回の演習課題 ===== ===== 第14回の演習課題 =====
-{{page>:​lecture:​kiso2:​ex:​ex13-2.c}} +=== ex14-masu.c === 
-{{page>:lecture:kiso2:ex:ex13-3.c}} +要素の値が 0 から100 の範囲にある大きさ50の整数型の配列変数 data[] と,配列 data[] の要素の値が 0〜9, 10〜19, …, 90〜99, 100 のような10刻みの範囲に何個ずつ含まれているかを*で出力するプログラム ex14-masu.c の一部が以下のように与えられてる. ex14-masu.c 完成させて__kiso2コマンドを用いて提出しなさい。__ 
-{{page>:lecture:kiso2:ex:ex13-4.c}} + 
-{{page>:lecture:kiso2:ex:ex13-5.c}} +<code C ex14-masu.c>​ 
-{{page>:lecture:kiso2:ex:ex13-6.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;​ 
 +
 +</code   
 + 
 +実行例: 
 +<​code>​ 
 +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: * 
 +</​code>​ 
 + 
 +=== ex14-shaku.c === 
 +関数 kuku() は、2つのint型の変数 a,b の値を引数として受け取ると a行 b列の九九表を作る関数である。 
 +関数 kuku()を定義しないさい。 
 + 
 +また、2つの整数値 x,y を入力するとこの関数 kuku() を用いて九九表を書くプログラム ex14-shaku.c を完成させて__kiso2コマンドを用いて提出しなさい。__ 
 +ただし、整数値 x,y の入力と九九表の出力は繰り返し行えるものとし、x,​y どちらかに 0 以下の値が入力されるとプログラムを「終了します」と出力して終了するものとする。 
 + 
 +実行例: 
 +<code> 
 +t180900@s01cd0542-160:~/kiso2-2018/ex14$ ./​ex14-shaku 
 +l? 9 
 +m? 9 
 +  |   ​1 ​  ​2 ​  ​3 ​  ​4 ​    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 
 +</​code>​ 
 + 
 +=== 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() の計算式を出力すること(実行例を参照)。 
 + 
 +実行例: 
 +<code> 
 +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 
 +</​code>​ 
 + 
 + 
 + 
 + 
 + 
  • lecture/kiso2/2018/ex14.1546904216.txt.gz
  • 最終更新: 2019/01/08 08:36
  • by sano