東京工芸大学 工学部  電子機械学科 2年 前期 

基礎プログラミング 第10回
 2017.6.13
藤木 文彦

http://fujiki.tv/t-kougei/kisoprog/
fujiki.kougei@gmail.com  



 授業もあと数回になりましたので、この辺で、今までに学んだ事項を復習しておきます。

 解説無しで、自力で以下の課題を行ってください。今までのホームページや、自分で作成したプログラムを参考にしてもらって構いません。

 今日は、課題ひとつごとに、メールを出してください。
 メールには、プログラム本文部分のコピーと、実行画面のコピーを、貼り付けなさい。(ファイル添付ではなく、内容を本文にコピーすること。)

メールのタイトルは、Project1001 などとします。

 【問題1】計算


Project1001
 13以上1000未満の13の倍数を全部表示し、最後にその合計を表示するプログラムを作成しなさい。

 【問題2】計算

Project1002
 100未満の 「3で割ると割り切れるが、4で割ると割り切れない」数を全て表示し、その合計を表示するプログラムを作成しなさい。
 なお、ある数 x が a の倍数であるかどうかは、次のようにして調べます。
 全ての変数が、 int 型であるとします。

  if ( ( x/a) * a == x )

 変数が、 int 型でないときは、  if ( ( (int)x / a ) * a == x ) 
のようにしますが、そもそも、 x が int 型で無いときに、割り切れるかどうか、と言うことには意味がないので、あまり使うことは無いでしょう。



 【問題3】関数のグラフ

Project1003
                
   y=x^3 - 12x + 2
         xの 3乗を x^3 と書きました。
のグラフを、次の例のように書きなさい。
 グラフは、描画の都合上、X軸の正方向を下。 y軸の正方向を右とし、 -5  =< x <= 5
の範囲を表示します。(一部が画面からはみ出してもやむをえない。)
 
 Project0403 を参照。



ヒント(一部隠してある)



 【問題4】配列

Project1004

配列 a[10]
を宣言し、それに、すべて初期値 10 を入力した後 その内容を a[0] は1倍。a[1]は2倍、、、、a[9] は10倍し、画面に出力しなさい。 出力は、たてに並ぶ形式でよい。

【問題5】文字列入力と変換

Project1005
キーボードから入力した文字列(半角英数字)を逆順にして出力するプログラムを作りなさい。




【問題6】2次元配列


 2次元配列の使い方は授業で十分に触れませんでしたが、次のように使います。

// 使用例です。

#define XMAX 10
#define YMAX 10

int _tmain(int argc, _TCHAR* argv[])
{
	int a[XMAX][YMAX];

	for (int x = 0; x < XMAX; x++){
		for (int y = 0; y < YMAX; y++){
			a[x][y] = x*y;
		}
	}
	getchar();
	return 0;
}



Project1006
 配列 a[10][10] を宣言し、その初期値として、

a[0][0]=0
a[0][1]=1
....
a[1][2]=12
....
a[9][9]=99

 という値を入れなさい。

この配列の値が3の倍数であるものの値を全て、0 にしなさい。

結果を次のように表示しなさい。

 なお、ある数 x が a の倍数であるかどうかは、次のようにして調べます。
 全ての変数が、 int 型であるとします。

  if ( ( x/a) * a == x )

 変数が、 int 型でないときは、  if ( ( (int)x / a ) * a == x )
のようにしますが、そもそも、 x が int 型で無いときに、割り切れるかどうか、と言うことには意味がないので、あまり使うことは無いでしょう。

 表示例


【問題7】配列要素の操作

 上記の問題に続きます。

Project1007

 Project1006 で作ったプログラムをコピーして基本形を作ります。
 それに、次の機能を追加して下さい。

この配列の値が2の倍数であるものの値を全て、0 にしなさい。
この配列の値が3の倍数であるものの値を全て、0 にしなさい。
5,7

の倍数も0にしなさい。(2,3,4.。。倍していって、その数を0にする。100を越えたら打ち切る。)

 以上の処理が終わった後、
 データが、0でない配列に入っているデータを全て表示しなさい。

 表示は、

1,2,3,5,7,、  ... 97

 となるはずです。

(ここで表示された数は、何という種類の数でしょうか。)

【問題8】余りの計算

Project1008
 キーボードから、2つの正の整数を入力し、その2つの数の和、差、積、商と余りを表示するプログラムを作りなさい。
 出来たら、2数として、始めの数に、239 を、後の数に、自分の学生番号の下2桁(一桁の人は、そのまま一桁の数でよい。ただし、1番の人は、11を2番の人は22を入れなさい。)を入れて計算しなさい。

 (ヒント、商と余りの計算が難しいと思うが、【問題3】の
  if ( ( x/a) * a == x )
 という式で用いている計算を用いると、商の求め方が分かるはず。
 商が分かったら、  ( x/a )*a - x  を計算してみると良い。)


【問題9】入力とソート

Project1009
 配列 a[10] を用意し、それに、キーボードから、10個の初期値を入力し、大きいものの順に並び替えて、大きいものから順に表示するプログラムを作りなさい。
 出来たら、キーボードから、下に指定する方法で、10個の数字を入力して、並べ替えた結果を表示しなさい。

 入力する数字は以下の表の、自分の学生番号の下二桁の示すマス目から始まり、右に10個分の数字とします。右端に達したら、1行下に移ります。
 例えば、番号 25番の人は、

  59, 37, 93, 43, 90, 28, 73, 8, 10, 44

の10個の数字とします。

 表示は、横並びで、

 93, 90, 70, 59, 44, 43, 37, 28, 10, 8

のようになるようにします。(多少の行間の幅などに違いがあっても構いません。)
入力する数値の表。見方は上に解説。
上の桁→
下の桁↓ 
 0 1  2  3  4  5  6  7  8  9 
 0   70  22   13  31  88  36  82  57   7   51
 1  21  76  46   71   2   92  56  27   65  18
 2  69  20   41   12  87  26  91  35   50  84
 3  77  11  60  55  42  96   5  81  58  30
 4  45  86   1   66  34  72  83  49  17  95
 5  52   0  59  37  93  43   90  28  73   8
 6  10  44  99  14  75  25    6  64  80  39
 7  78  40   53  67   3  61  38   98  29  94
 8  32  85  23   79  15  47  89  16   97  63
 9   9  54  68  33   24   62   4   48  74  19 




■ この後の課題メモ
ニュートン法による近似解の求め方。



http://www1.cts.ne.jp/~clab/index.html