Q&A (電気電子)

メモ

いつでも見れるようにノートにしておく。

double a;
int b;
a=b=1.5

a=b; b=1.5と同義

bはint型なので1となり、aはdouble型なので1.000000となる。

#define a b

この指令以降、aをbに置換せよ。 という意味。

a[k][i]で表される行列と、b[i][j]で表される行列の積について

kとjの位置に注意。これがカギ。
行数x列数の形で行列を定義すると、
mxn行列とaxb行列の積は、「mxb行列」となる。
なお、「n==a」でなければ行列の積は計算できない。
(かけ合わせるものがなくなってしまうので。)

つまり、a[k][i]とb[i][j]の積は、c[k][j]になる!

手前の行列であるa[k][i]が答えの行列の行数を決め、後ろのかける側の行列b[i][j]が答えの行列の列数を決める

つまり、答えの行列「c[k][j]」においては、kを外側のループとして動かし、jを列成分として内側で動かせばよい!

なお、iはかける途中にうごかす変数なので、プログラムは3重ループとなり、
一番内側にiのループがくる

char型について

putchar('x');
で表されるとき、内部の単一文字は文字定数で「int型」。

配列 eng[5], mat[5] と宣言されている。
これを関数内で引数として呼び出したい場合は配列を引数として呼び出すために、
(v[],n)のように配列、要素数として呼び出す。
これがv[0]→eng[0]のように対応することになる。(vは要素数の限定なし。)

エラーの参照

以下のような画像が出てきた場合、配列の要素数をオーバーする宣言などがされてしまっている。
このエラーが出たら、要素数などがおかしくなっていないか確認する。

この場合は要素数がn=5なのに対し、tensu[n - i] (i=0)という計算をしてしまっていた。
次回以降要確認。

-Q&A (電気電子)
-