#9
by naohiro » 1年前
matrix33.h
コード:
#ifndef MATRIX33_H
#define MATRIX33_H
void input_matrix33(double mat[][3], char* filename);
void print_matrix33(double mat[][3]);
void sum_matrix33(double matA[][3], double matB[][3], double matS[][3]);
void mul_matrix33(double matA[][3], double matB[][3], double matM[][3]);
#endif
matrix33.c:
コード:
#include "matrix33.h"
#include <stdio.h>
void input_matrix33(double mat[][3], char* filename)
{
FILE* fp;
fp = fopen(filename, "r");
if (fp == NULL) {
printf("File open error\n");
return;
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
fscanf(fp, "%lf", &mat[i][j]);
}
}
fclose(fp);
}
void print_matrix33(double mat[][3])
{
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%lf ", mat[i][j]);
}
printf("\n");
}
}
void sum_matrix33(double matA[][3], double matB[][3], double matS[][3])
{
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matS[i][j] = matA[i][j] + matB[i][j];
}
}
}
void mul_matrix33(double matA[][3], double matB[][3], double matM[][3])
{
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matM[i][j] = 0.0;
for (int k = 0; k < 3; k++) {
matM[i][j] += matA[i][k] * matB[k][j];
}
}
}
}
main.c:
コード:
#include <stdio.h>
#include "matrix33.h"
int main(int argc, char* argv[])
{
double matA[3][3];
double matB[3][3];
double matSum[3][3];
double matMul[3][3];
if (argc != 3) {
printf("Usage: %s filename1 filename2\n", argv[0]);
return 1;
}
input_matrix33(matA, argv[1]);
printf("1st matrix\n");
print_matrix33(matA);
input_matrix33(matB, argv[2]);
printf("2nd matrix\n");
print_matrix33(matB);
sum_matrix33(matA, matB, matSum);
printf("sum of the matrices\n");
print_matrix33(matSum);
mul_matrix33(matA, matB, matMul);
printf("product of the matrices\n");
print_matrix33(matMul);
return 0;
}
Makefile
コード:
CC=gcc
CFLAGS=-Wall -Werror
all: main
main: main.o matrix33.o
$(CC) $(CFLAGS) -o $@ $^
main.o: main.c matrix33.h
$(CC) $(CFLAGS) -c $<
matrix33.o: matrix33.c matrix33.h
$(CC) $(CFLAGS) -c $<
clean:
rm -f main main.o matrix33.o
ChatGPTでこんなコードが生成されました。
matrix33.h
[code=cpp]
#ifndef MATRIX33_H
#define MATRIX33_H
void input_matrix33(double mat[][3], char* filename);
void print_matrix33(double mat[][3]);
void sum_matrix33(double matA[][3], double matB[][3], double matS[][3]);
void mul_matrix33(double matA[][3], double matB[][3], double matM[][3]);
#endif
[/code]
matrix33.c:
[code=cpp]
#include "matrix33.h"
#include <stdio.h>
void input_matrix33(double mat[][3], char* filename)
{
FILE* fp;
fp = fopen(filename, "r");
if (fp == NULL) {
printf("File open error\n");
return;
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
fscanf(fp, "%lf", &mat[i][j]);
}
}
fclose(fp);
}
void print_matrix33(double mat[][3])
{
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%lf ", mat[i][j]);
}
printf("\n");
}
}
void sum_matrix33(double matA[][3], double matB[][3], double matS[][3])
{
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matS[i][j] = matA[i][j] + matB[i][j];
}
}
}
void mul_matrix33(double matA[][3], double matB[][3], double matM[][3])
{
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matM[i][j] = 0.0;
for (int k = 0; k < 3; k++) {
matM[i][j] += matA[i][k] * matB[k][j];
}
}
}
}
[/code]
main.c:
[code=cpp]
#include <stdio.h>
#include "matrix33.h"
int main(int argc, char* argv[])
{
double matA[3][3];
double matB[3][3];
double matSum[3][3];
double matMul[3][3];
if (argc != 3) {
printf("Usage: %s filename1 filename2\n", argv[0]);
return 1;
}
input_matrix33(matA, argv[1]);
printf("1st matrix\n");
print_matrix33(matA);
input_matrix33(matB, argv[2]);
printf("2nd matrix\n");
print_matrix33(matB);
sum_matrix33(matA, matB, matSum);
printf("sum of the matrices\n");
print_matrix33(matSum);
mul_matrix33(matA, matB, matMul);
printf("product of the matrices\n");
print_matrix33(matMul);
return 0;
}
[/code]
Makefile
[code]
CC=gcc
CFLAGS=-Wall -Werror
all: main
main: main.o matrix33.o
$(CC) $(CFLAGS) -o $@ $^
main.o: main.c matrix33.h
$(CC) $(CFLAGS) -c $<
matrix33.o: matrix33.c matrix33.h
$(CC) $(CFLAGS) -c $<
clean:
rm -f main main.o matrix33.o
[/code]
ChatGPTでこんなコードが生成されました。