先週、中間試験を受けました。プログラミング問題の中で私が一番苦労して解いた行列式計算問題を復習兼ブログに書いてみます。
コーディングを初めて始めて、たくさん不器用ですが、今後、プログラミングに関することもよくアップします![]()
以下は私が書いたコードです。
#include <stdio.h> // 標準入出力関数を使用するため
#define _CRT_SECURE_NO_WARNINGS // 警告メッセージを無効にする(面倒くさい)
#define SIZE 3 // 配列に3をそのまま使ってもいいのですが....
void addMat(int a[][SIZE], int b[][SIZE], int c[][SIZE]);
void subMat(int a[][SIZE], int b[][SIZE], int c[][SIZE]);
void multMat(int a[][SIZE], int b[][SIZE], int c[][SIZE]);
void printMat(int mat[][SIZE]);
//行列式で書く関数宣言
int main() {
int A[][SIZE] = { {10, 20, 10},
{4, 5, 6},
{2, 3, 5} };
int B[][SIZE] = { {3, 2, 4},
{3, 3, 9},
{4, 4, 2} };
int C[][SIZE] = { 0 };
// 計算する行列配列の宣言
int choice; // メニュー選択のための整数宣言
printf("1. 行列加算関数\n");
printf("2. 行列の減算関数\n");
printf("3. 行 列の乗算関数\n");
printf("メニュー選択 >> ");
scanf("%d", &choice);
// メニュー出力とメニュー選択
switch (choice) {
case 1:
addMat(A, B, C);
break;
case 2:
subMat(A, B, C);
break;
case 3:
multMat(A, B, C);
break;
default:
printf("잘못된 입력입니다.\n");
}
// switch文でメニュー入力値による演算を実行します。
printMat(C); // printMat関数でCという演算結果を出力するための宣言。
return 0;
}
void addMat(int a[][SIZE], int b[][SIZE], int c[][SIZE]) {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
c[i][j] = a[i][j] + b[i][j];
}
}
}
// 行列の加算をfor文を使って計算する式。
void subMat(int a[][SIZE], int b[][SIZE], int c[][SIZE]) {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
c[i][j] = a[i][j] - b[i][j];
}
}
}
// 行列の減算をfor文で計算する式。
void multMat(int a[][SIZE], int b[][SIZE], int c[][SIZE]) {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
for (int k = 0; k < SIZE; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
}
// 行列の乗算をfor文で計算する式。
void printMat(int mat[][SIZE]) {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
printf("%d ", mat[i][j]);
}
printf("\n");
}
}
// 計算された式をあらかじめ宣言したprintMat関数のfor文を使って出力します。
投稿を見ていただき、本当にありがとうございます![]()