오답노트

[예제] 이중배열 포인터 예제2 본문

C,C++/[국비지원] C,C++프로그래밍

[예제] 이중배열 포인터 예제2

권멋져 2021. 4. 3. 14:32
//행과 열을 입력 받고 각 행렬의 데이터를 입력 후 가로와 세로의 합을 구한다
int main()
{
	int nRows, nCols;
	printf("행과 열의 개수를 각각 입력하세요: ");
	scanf("%d %d", &nRows, &nCols);

	int** nMat;
	int* nSumRow;
	int* nSumCol;

	nMat = (int**)malloc(sizeof(int*) * nRows);
	nSumRow = (int*)malloc(sizeof(int) * nRows);
	nSumCol = (int*)malloc(sizeof(int) * nCols);

	memset(nSumCol, 0x00, sizeof(int) * nCols);
	memset(nSumRow, 0x00, sizeof(int) * nCols);

	for (int i = 0; i < nRows; i++)
	{
		nMat[i] = (int*)malloc(sizeof(int) * nCols);
		printf("%d번째 행의 원소 %d개를 입력하세요 : ", i + 1, nCols);

		for (int j = 0; j < nCols; j++)
		{
			scanf("%d", &nMat[i][j]);
			nSumRow[i] += nMat[i][j];
			nSumCol[j] += nMat[i][j];
		}
	}
	for (int i = 0; i < nRows; i++)
	{
		for (int j = 0; j < nCols; j++)
			printf("%d	", nMat[i][j]);

		printf("|	%d \n", nSumRow[i]);
	}
	
	printf("-------------------------------------\n");
	for (int i = 0; i < nCols; i++)
	{
		printf("%d	", nSumCol[i]);
	}
    
    return 0;
}