[동아리] A반 6차 2일 과제 (2024.03.22)
동적 2차원 배열
동적 2차원 배열을 만들고 배열에 값을 넣은 후 출력하기
프로그램이 끝나기 전 꼭 남김없이 free 해주기
#include <stdio.h>
#include <stdlib.h>
int main() {
int row, col;
printf("행의 수를 입력하세요: ");
scanf("%d", &row);
printf("열의 수를 입력하세요: ");
scanf("%d", &col);
int** matrix = (int**)malloc(sizeof(int*) * col);
for (int i=0;i<row;i++) {
matrix[i] = (int*)malloc(sizeof(int) * row);
}
for (int x=0;x<row;x++) {
for (int y=0;y<col;y++) {
printf("matrix[%d][%d]: ", x, y);
scanf("%d", &matrix[x][y]);
}
}
for (int h=0;h<row;h++) {
for (int z=0;z<col;z++) {
printf("%d ", matrix[h][z]);
}
printf("\n");
free(matrix[h]);
}
free(matrix);
return 0;
}
행렬 곱 연산
선형대수학의 행렬 곱 연산을 구현하기
유저에게서 두 개의 행렬의 행과 열 값을 받아 두 행렬 만들고
두 행렬을 곱하여 나온 행렬 출력
프로그램이 끝나기 전 남김없이 모두 free해주기
행렬 곱 연산을 할 수 없을 경우 연산 불가 메세지 출력하기
#include <stdio.h>
#include <stdlib.h>
int main() {
int row1, row2, col1, col2;
printf("첫 번째 행렬의 행의 수를 입력하세요: ");
scanf("%d", &row1);
printf("첫 번째 행렬의 열의 수를 입력하세요: ");
scanf("%d", &col1);
printf("두 번째 행렬의 행의 수를 입력하세요: ");
scanf("%d", &row2);
printf("두 번째 행렬의 열의 수를 입력하세요: ");
scanf("%d", &col2);
// 첫 번째 행렬
int** matrix1 = (int**)malloc(sizeof(int*) * col1);
int** matrix2 = (int**)malloc(sizeof(int*) * col2);
for (int i1=0;i1<row1;i1++) matrix1[i1] = (int*)malloc(sizeof(int) * row1);
for (int i2=0;i2<row2;i2++) matrix2[i2] = (int*)malloc(sizeof(int) * row2);
printf("첫 번째 행렬의 값을 입력하세요 (%d * %d)\n", row1, col1);
for (int x1=0;x1<row1;x1++) for (int y1=0;y1<col1;y1++) scanf("%d", &matrix1[x1][y1]);
printf("두 번째 행렬의 값을 입력하세요 (%d * %d)\n", row2, col2);
for (int x2=0;x2<row2;x2++) for (int y2=0;y2<col2;y2++) scanf("%d", &matrix2[x2][y2]);
if (col1 != row2) {
printf("두 행렬의 곱셈이 불가능합니다.");
}
else {
printf("행렬 곱셈 결과: \n");
for (int u=0;u<row1;u++) {
for (int t=0;t<col2;t++) {
int result = 0;
for (int r=0;r<row1;r++) {
result += matrix1[r][u] * matrix2[t][r];
}
printf("%d ", result);
}
printf("\n");
}
}
for (int q=0;q<row1;q++) {
free(matrix1[q]);
free(matrix2[q]);
}
free(matrix1);
free(matrix2);
return 0;
}
728x90
반응형
'Programming > C' 카테고리의 다른 글
Visual Studio 2022로 Github 연동해서 협업하기 (C 프로젝트) (0) | 2024.05.16 |
---|---|
[C언어] 포인터로 문자열 거꾸로 출력 (0) | 2024.03.22 |
[C언어] strlen(), fgets(), strcat(), strncpy() 함수 (0) | 2024.03.20 |
[C언어] 마름모 별 찍기, 정수 거꾸로 변환, 소수 판별, 포인터 개념 (0) | 2024.03.15 |
[C언어] 섭씨/화씨 변환, scanf( ) 함수 취약점 (0) | 2024.03.13 |
댓글