Lecture 13 模擬テスト(7/10)

以下の問それぞれに対応するプログラムを作成しなさい.

問題1

次のプログラムは,入力した文字列の中の子音だけを取り除き, 子音以外の文字列に変換する関数, void shiin_remover()と,その関数のテスト用メイン関数を含むプログラムである. 関数,shiin_remover()の中身を加えて,下の実行例の様に機能するプログラムにしなさい. また,子音かどうかを一文字ずつ判定する関数 is_shiin() も同時に作れ.main()関数を変更してはならない. プログラムのファイル名を 学籍番号10桁-13-1.cpp とせよ.


上記プログラムの実行例

input strings: Today is a fine day!
Today is a fine day!
oa i a ie a!

問題2

下記のソースコードに倣い,任意の数 x および自然数 N を入力して,数列の和

    

を求める関数 func() を作成せよ. なお,必要なヘッダファイルや定数,および関数定義を適宜加えること.main()は変更しないこと. プログラムのファイル名を 学籍番号10桁-13-2.cpp とせよ.



問題3

3次元点群 (x,y,z) を保持する構造体 point3d_t を定義し. 以下の2つの関数
    • 点の座標を表示する関数
    • 2点の重心を計算する関数
を作成せよ. また,これらを用いて,キーボードから2点の座標を入力し, その点の座標(2点)と 重心点の座標(1点)のそれぞれを表示するプログラムを作成せよ. プログラムのファイル名を 学籍番号10桁-13-3.cpp とせよ.
// 実行例
> 13-3
x = 1
y = 2
z = 3
p1 = (1.000000,2.000000,3.000000)
x = 2
y = 5
z = 9
p2 = (2.000000,5.000000,9.000000)
c = (1.500000,3.500000,6.000000)


問題4

任意の2x2の行列Aの逆行列を求める関数,double minverse(Matrix A)を作成せよ. 関数の返り値はdet(M)とする.また,この関数を利用して,
    ax + by = p
    cx + dy = q
の二元連立一次方程式の解を求めるプログラムを作成せよ.
  • 解がない場合は,その旨表示せよ.
【ヒント】行列方程式 A X = P の解 Xは,X = A-1 P
プログラムのファイル名を 学籍番号10桁-13-4.cpp とせよ.