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

基礎プログラミング 第14回
 2017.7.11 
藤木 文彦

http://ffujiki.web.fc2.com/t-kougei/kisoprog/
http://fujiki.tv/t-kougei/kisoprog/

fujiki.kougei@gmail.com  


 試験問題予行演習


試験要項

 来週は月曜振替えで休講ですが、さ来週に試験です。
 試験で出題予定の問題とほとんど同じ問題を以下に掲げます。
 本試験では、以下の問題の数値などを若干変更した問題を出題する予定です。

 時間:

 9時20分 要項説明
 9時40分 試験開始
11時40分 試験終了
        提出状況確認
12時00分 状況確認後終了(退出可)
12時00分 提出状況の確認の取れなかった者、どうしても時間内に終わらなかった者のための予備の時間(〜12時30分まで)

 注意事項:
 試験時間中の私語は禁止。着席のこと。
 携帯電話等は切っておくこと。
 他人と相談しない限り、今までの授業の問題、作成したプログラムその他ネット上の参考資料など自由に参考にして良い。(ただし、他の人に試験問題の内容を問う行為は禁止する。)
 体調の不具合、トイレなどのために一時退出を希望する者は申し出ること。短時間の退室を認める場合もある。
 試験問題に対する質問、不備と思われる事項があれば、挙手して申し出ること。解き方に関わる質問は受け付けない。

 採点要項:

 問題は1問20点とし、合計160点とする。これを調整し40点満点とする。
これに、毎回のメールレポート提出点(30点)、出席点(30点)を加え全体を100点に調整して成績とする。 

 採点は、おおむね次のような基準とする。
 ・要求どおりに動作し、プログラムもきちんと書けている。(20点)
 ・ほぼ要求通りに動作するが、プログラムの一部に問題があると思われる。(15点)
 ・動作はするがプログラムはあやしい(10〜15点)
 ・プログラムはほぼ書けているが、動作がうまくいかない(10〜15点)
 ・問題で要求した事項の一部分だけは動作するが全体が出来ていない(10〜15点)
 ・プログラムが書きかけである。(状況により 0〜9点)
 ・未提出、或いはプログラムの内容がほぼ白紙。(0点)
 ・他人のプログラムを丸ごとコピーしたと疑う十分な証拠がある場合、上記点を半分以下にする。コピーさせた事が明確な者も同様とする。

 試験問題予行演習




 次の問題を読み、プログラムを作成し、

 プログラムの主要部分をメールにコピーし、実行画面も貼り付けた上で、
"Project14xx" のようなタイトルを付けて "fujiki.kougei@gmail.com" 宛てに送付しなさい。


 また、実行画面を印刷してプリンタに出力して提出しなさい。

ただし、今日は、
プリンタに出すだけで、持ってきて提出しなくて良い。(完了したかどうかは自分の画面に表示されるはず。)

 途中まででも結果を送付すれば部分点を与えることもある。作り直したときは、再度おくりなおしなさい。送付されたメールのうち、新しいもののみを採点対象とする。



 問題1 Project1401


 1000以下の7の倍数(正の数)を全て加えた結果を表示するプログラムを作成しなさい。



 問題2 Project1402


 キーボードから文字列を入力します。(100文字未満)続いて回数(1〜20までの整数)を入力すると、入力した文字列を、指定回数表示するプログラムを作成しなさい。その際、行の先頭に行番号を表示しなさい。
入力文字列は、"基礎プログラミング試験"とし、10行表示を指示して次のように表示されるとする。

1: 基礎プログラミング試験
2: 基礎プログラミング試験
3: 基礎プログラミング試験
................
10: 基礎プログラミング試験



 問題3  Project1403


 入力された自然数(10000以下)を5で割った余りを出力するプログラムを作成しなさい。

 問題4 Project1404



 入力された自然数を2進数に変換して出力するプログラムを作成しなさい。(やや難)
 数値として、 12345 を入力し、結果を出力して提出しなさい。

 問題5 Project1405


 キーボードから10個の自然数(1000以下)を入力し、それを大きいものから順に並べ替えて出力するプログラムを作りなさい。

 実際にキーボードから数値を入力して並べ替えた結果を表示し、その結果をメールに貼り付けて提出しなさい。
なお、入力する数値は、自分の学生番号の下2けたを最初とし、そこから、1つずつ増やした数とする。
(配列を使うが、画面に表示される順番の数は、1から始まるようにする。)
 第4回、例題7参照。

実行例: 出席番号 e1390026 の場合。


数値を入力してください。

1: 26
2: 27
3: 28
4: 29
5: 30
6: 31
7: 32
8: 33
9: 34
10: 35

並べ替えた結果

1: 35
2: 34
3: 33
4: 32
5: 31
6: 30
7: 29
8: 28
9: 27
10: 26





 問題6  Project1406


 次の画面のように、 cos(x) の値を、15度刻みでグラフ表示するプログラムを作りなさい。小数の値の表示は、 cos(x) の値である。値の表示の桁揃えには、cout << setw(10) を指定しなさい。



 問題7 Project1407


 前回作成した、平面上の目標に向けて弾を発射するプログラムで、マス目の数を右25マス、縦15マスにしなさい。目標は乱数で決めた位置に出現するとする。


 なお、前回、乱数の発生プログラムの一部に指示忘れがあった。前回のページを再度読むと修正部分が書いてあるので、その指示に従い "time" 関数が使えるようにすること。

 乱数で発生した目標に向かって打っても、なかなかあたらないときは、Windows から、電卓ツールを起動し、次のように計算すると、角度が求まる。

 電卓を起動。表示ー>関数電卓 を選択
 下記の場合、  13/11= としたうえで、   Inv −> tan^-1 とすると、角度が出る。下の例では、49.76...となったはずである。 (左上の角度指示が Deg になっていることを確認すること。)




 問題8 Project1408


 問題7   で作成した、平面上の目標に向けて弾を発射するプログラムでは、目標の発生位置が左上に近いときなど、すり抜けてあたらないことがある。
 乱数の発生場所を制限し、
  10≦x≦20、5≦y≦13
 の位置に限って発生するものとしなさい。
 升目の数は、 たて15、よこ25 とし、脇に座標数値を表示するものとします。

ヒント。 乱数の発生の部分で、発生する乱数を、 0〜10の範囲とし、 その乱数に10を加えれば、 10≦x≦20 の乱数となる。

 また、目標物に当たったとき、その周辺に、"#" が表示され、

###
#$#
###

となるようにしなさい。


 問題9 Project1409



 10個の整数の書かれた入力ファイル "file1.dat" を読み込み、その内容を10倍にした値を画面に表示するプログラムを作りなさい。
 "file1.dat" ファイルは、 "V:" ドライブの、 eng - em - 藤木
の場所においてある物を、自分のプロジェクトのあるフォルダ(おそらく、 Visualstudio2012\Project1409\Project1409)にコピーして使用しなさい。
 (em 以外の人で、ファイルが読めない人は申し出てください。メールに添付ファイルとして送ります。)