백준 2740 c++
#include <iostream>
using namespace std;
int input(int lower, int upper)
{
//cout << "input()" << endl;
int A;
while (1)
{
cin >> A;
if (A >= lower && A <= upper)
{
break;
}
else
{
;
}
}
return A;
}
void input_arr(int** arr, int col, int row)
{
int i, j;
for (i = 0; i < col; i++)
{
for (j = 0; j < row; j++)
{
arr[i][j] = input(-100, 100);
}
}
return;
}
void find_result(int **result, int **A, int **B, int N, int M, int K)
{
int i, j, k;
for (i = 0; i < N; i++)
{
for (j = 0; j < K; j++)
{
result[i][j] = 0;
}
}
for (i = 0; i < N; i++)
{
for (j = 0; j < K; j++)
{
for (k = 0; k < M; k++)
{
result[i][j] = result[i][j] + (A[i][k] * B[k][j]);
}
}
}
return;
}
void print_result(int** result, int N, int K)
{
int i, j;
for (i = 0; i < N; i++)
{
for (j = 0; j < K; j++)
{
cout << result[i][j] << " ";
}
cout << "\n";
}
return;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, M, K, i;
int** A;
int** B;
int** result;
//할당
N = input(1, 100);
M = input(1, 100);
A = new int*[N];
for (i = 0; i < N; i++)
{
A[i] = new int[M];
}
input_arr(A, N, M);
M = input(1, 100);
K = input(1, 100);
B = new int* [M];
for (i = 0; i < M; i++)
{
B[i] = new int[K];
}
input_arr(B, M, K);
result = new int*[N];
for (i = 0; i < N; i++)
{
result[i] = new int[K];
}
find_result(result, A, B, N, M, K);
print_result(result, N, K);
//해제
for (i = 0; i < N; i++)
{
delete[] A[i];
}
for (i = 0; i < M; i++)
{
delete[] B[i];
}
for (i = 0; i < N; i++)
{
delete[] result[i];
}
delete[] A;
delete[] B;
delete[] result;
return 0;
}