第2回レポートについて(提出日: 6/5)
課題 1
GC 含有量とは、塩基配列中に含まれるグアニン (G) とシトシン (C) の割合のことで、次のように定義される:
\[\textrm{GC含有量} = \frac{\textrm{G と C の数}}{\textrm{塩基配列の長さ}}\]与えられた塩基配列のGC含有量を計算するプログラムを作成しなさい。塩基配列の与え方は次のどちらかを選択せよ:
- プログラム中に文字列として宣言する。
scanf
関数やgets
関数などを使って標準入力(キーボード)から入力する。
実行例
acgt ← 入力
GC content = 50.000000%
gtcatgcaaaactgatgacgttgcatgatgtcga ← 入力
GC content = 44.117647%
課題2
次の3 × 3行列AとBの積を計算するプログラムを作成しなさい。
\[A = \begin{pmatrix} 1 & 3 & 2\\ 7 & 1 & 9\\ 10 & 5 & 0 \end{pmatrix}, \quad B = \begin{pmatrix} 2 & 11 & 3\\ 8 & 3 & 2\\ 9 & 3 & 4 \end{pmatrix}\]ヒント
行列 A, B は次のように与えるとよい。
int A[3][3] = { {1, 3, 2}, {7, 1, 9}, {10, 5, 0} };
int B[3][3] = { {2, 11, 3}, {8, 3, 2}, {9, 3, 4} };
実行例
AB=
44 26 17
103 107 59
60 125 40
課題3
M × L 行列 A と L × N 行列 B を標準入力(キーボード)から入力し、その積 AB を出力するプログラムを作成しなさい。
ヒント
M, N, L は #define 文を使って定義する。
#define M 5
#define N 3
#deinfe L 4
ヒント
M x L行列 \(A= \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1L}\\ a_{21} & a_{22} & \cdots & a_{2L}\\ \vdots &\vdots & \ddots & \vdots\\ a_{M1} & a_{M2} & \cdots & a_{ML} \end{pmatrix}\) と L x N行列 \(B= \begin{pmatrix} b_{11} & b_{12} & \cdots & b_{1N}\\ b_{21} & b_{22} & \cdots & b_{2N}\\ \vdots &\vdots & \ddots & \vdots\\ b_{L1} & b_{L2} & \cdots & b_{LN} \end{pmatrix}\) の積は M x N行列となり、それを \(C= \begin{pmatrix} c_{11} & c_{12} & \cdots & c_{1N}\\ c_{21} & c_{22} & \cdots & c_{2N}\\ \vdots &\vdots & \ddots & \vdots\\ c_{M1} & c_{M2} & \cdots & c_{MN} \end{pmatrix}\) とすると、その要素は \(c_{ij} = \displaystyle\sum_{k=1}^{L} a_{ik} b_{kj}\) となる。
レポート様式
- レポート本体は電子媒体(Wordなど)で作成し、「Canvas LMS」に提出する。
- プログラムは、いつもの演習と同じようにreplitに提出する。
- プログラムの作成方針を述べる。たとえば、変数の取り方、ポイントとなる計算に使う文、アルゴリズムの検討など。
- 考察をする。
if
文とswitch
文の違い、プログラムの作成過程で間違えた箇所とその理由、プログラム作成上の注意など。 - 締め切り: 6月5日(水)10:45