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
  • lecture/kiso2/ex14.txt
  • 最終更新: 2019/01/10 16:46
  • by sano