-
[C언어] 2차원 배열을 이용하여 각 셀의 합을 더하여라.Development/C 2014. 12. 11. 14:17반응형
Q. 실행결과가 다음과 같이 되도록 구현하여라.
<문제>35
15
25
45
35
15
50
25
45
70
60
60
240
<실행결과>
가로행과 세로열을 구하고 최종합계를 3,3에 출력하는 문제입니다.
우선 문제에 접근하기 전에 변수를 어떻게 설정할 것이며, 어떻게 문제를 해결 해 나갈지를 생각합니다.
저는 변수를 다음과 같이 선언했습니다.
int arr[3][3] = { { 35, 15 }, { 25, 45 } };
이렇게하면 위 문제와 같이 배열이 생성되며, 빈 곳은 자동으로 0으로 채워집니다.
그리고 다음과 같이 배열이 구성되어 있으므로 i,와 j변수를 이용하여 for루프를 돌립니다.
(0,0)
(0,1)
(0,2)
(1,0)
(1,1)
(1,2)
(2,0)
(2,1)
(2,2)
for루프를 돌리기 전에 잠깐 짚고가야 할 부분이 있습니다!
arr[0][2] = arr[0][0] + arr[0][1];
arr[1][2] = arr[1][0] + arr[1][1];
arr[2][0] = arr[0][0] + arr[1][0];
arr[2][1] = arr[0][1] + arr[1][1];
arr[2][2] = arr[0][2] + arr[1][2] + arr[2][0] + arr[2][1];
저는 계산이 용이하기 위하여 변수를 다음과 같이 설정했습니다.
c_sum = arr[0][0] + arr[0][1]; //가로 행
c_sum = arr[1][0] + arr[1][1]; //가로 행
r_sum = arr[0][0] + arr[1][0]; //세로 열
r_sum = arr[0][1] + arr[1][1]; //세로 열
total = arr[0][2] + arr[1][2] + arr[2][0] + arr[2][1]; //총 합
가로와 세로의 합을 별도로 구하기로 하고 다음과 같이 소스를 구현하였습니다.
Source.cpp
-------------------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
/*
ㅡㅡㅡㅡㅡㅡㅡㅡ
| 35 | 15 | 50 |
ㅡㅡㅡㅡㅡㅡㅡㅡ
| 25 | 45 | 70 |
ㅡㅡㅡㅡㅡㅡㅡㅡ
| 60 | 60 | 240|
ㅡㅡㅡㅡㅡㅡㅡㅡ
*/
void main()
{
int arr[3][3] = { { 35, 15 }, { 25, 45 } };
int c_sum = 0; //column
int r_sum = 0; //row
int total = 0; //column + row
int len = sizeof(arr)/3/sizeof(int); //배열길이
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len-1; j++)
{
c_sum += arr[i][j];
r_sum += arr[j][i];
}
arr[2][i] = r_sum;
arr[i][2] = c_sum;
total += c_sum + r_sum;
arr[2][2] = total;
c_sum = 0;
r_sum = 0;
}
//Output Table
printf(" %d %d %d\n %d %d %d\n %d %d %d \n",
arr[0][0], arr[0][1], arr[0][2],
arr[1][0], arr[1][1], arr[1][2],
arr[2][0], arr[2][1], arr[2][2]);
}
반응형'Development > C' 카테고리의 다른 글
[열혈강의 C]Part2. 13장 - 포인터와 배열! 함께 이해하기(연습문제13-1-2) (1) 2013.08.27 [열혈강의 C]Part2. 13장 - 포인터와 배열! 함께 이해하기(연습문제13-1-1) (0) 2013.08.27 [열혈강의 C]Part2. 13장 - 포인터와 배열! 함께 이해하기-두번째[포인터/배열 완전정복] (0) 2013.08.23 [열혈강의 C]Part2. 13장 - 포인터와 배열! 함께 이해하기-첫번째[포인터/배열 완전정복] (4) 2013.08.22 [열혈강의 C]Part2. 12장 - 포인터의 이해(연습문제12-1-3) (0) 2013.08.09 [열혈강의 C]Part2. 12장 - 포인터의 이해(연습문제12-1-2) (0) 2013.08.09 [열혈강의 C]Part2. 11장 - 1차원 배열(연습문제11-2-3) (0) 2013.08.07 [열혈강의 C]Part2. 11장 - 1차원 배열(연습문제11-2-2) (0) 2013.08.07 [열혈강의 C]Part2. 11장 - 1차원 배열(연습문제11-2-1) (0) 2013.08.07 [열혈강의 C]Part2. 11장 - 1차원 배열(연습문제11-1-3) (0) 2013.08.06