개발자 데뷔!

[C/C++ 3.4] 2중 for문 마스터 (2차원 배열 접근하기) 본문

프로그래밍 언어/C

[C/C++ 3.4] 2중 for문 마스터 (2차원 배열 접근하기)

물꼮이 2022. 3. 11. 22:03
// 9 6 3
// 8 5 2
// 7 4 1
int arr[3][3];
int f = 1;

for (int j = 2; j >= 0; j--) {
	for (int i = 2; i >= 0; i--) {
		arr[i][j] = f;
		f++;
	}
}
// 7 8 9
// 4 5 6
// 1 2 3
int arr[3][3];
int f = 1;

for (int i = 2; i >= 0; i--) {
	for (int j = 0; j <3; j++) {
		arr[i][j] = f;
		f++;
	}
}
// 1 4 7
// 2 5 8
// 3 6 9
int arr[3][3];
int f = 1;

for (int j = 0; j <3; j++) {
	for (int i = 0; i < 3; i++) {
		arr[i][j] = f;
		f++;
	}
}
// 7 4 1
// 8 5 2
// 9 6 3
int arr[3][3];
int f = 1;

for (int j = 2; j >= 0; j--) {			// 2중 for문에 같이 정리 !!!!!
	for (int i = 0; i < 3; i++) {
		arr[i][j] = f;
		f++;
	}
}
// 9 8 7
// 6 5 4
// 3 2 1
int arr[3][3];
int f = 1;

for (int i = 2; i >= 0; i--) {
	for (int j = 2; j >= 0; j--) {
		arr[i][j] = f;
		f++;
	}
}

 

 

배열 대각선 채우는 법

int arr[4][4];
int filler = 0;
for (int i = 0; i < 4; i++) {		
		arr[i][i] = filler;
		filler++;
}

 

2차원 피라미드 

	//입력 
	st = a + 8;			// 시작 숫자 설정
	for (int i = 2; i >= 0; i--) {			// 뒤에서 부터 거꾸로 넣되,
		for (int j = 3; j >= adj; j--) {
			arr[i][j] = st;
			st--;							// 입력하는 수 1씩 감소
		}
		adj++;								// 위로 올라갈수록 좁아지는 피라미드 형태
	}

 

2차원 삼각형

	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < i+1; j++) {		// 이중 for문에 같이 정리 !!! ******
			sum += arr[i][j];
		}
	}

 

2차원 역삼각형

	for (int i = 0; i < 5; i++) {
		for (int j = i; j < 5; j++) {		
			cout<< arr[j]<<" ";
		}
		cout << endl;
	}

 

 

2중 for 문 case     -> ??????결과?

//ed는 열의 어디까지 채울 것인가 를 표시
	if (a >= '0' && a <= '9') {
		ed = 2;							
		for (int i = 2; i >= 0; i--) {
			for (int j = 2; j >= ed; j--) {
				arr[i][j] = num;
				num++;
			}
			ed--;
		}
	}
	else if (a >= 'A' && a <= 'Z') {
		ed = 2;						
		for (int i = 2; i >= 0; i--) {
			for (int j = 0; j <= ed; j++) {
				arr[i][j] = num;
				num++;
			}
			ed--;
		}
	}

 

 

가로줄 합 & 세로줄 합 & 대각선 합 => 각 추가된 행,렬에 입력하기 

//3번
int main() {
	int arr[4][4] = { 0 };
	//입력
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			cin >> arr[i][j];
		}
	}
	//계산		// 표의 가로, 세로, 대각선 합 채워서 새 칸에 채워넣기 !!!!!! 
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			// 가로합 구하기
			arr[i][3] += arr[i][j];
			// 세로합 구하기
			arr[3][j] += arr[i][j];
		}
		// 대각선 합 구하기
		arr[3][3] += arr[i][i];	// 대각합은 2중 for문을 돌며 [i][i]번으로 중복될 수 있으므로, 1차 for문에만 써주기
	}
	//출력
	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < 4; j++) {
			cout<< arr[i][j]<<" ";
		}
		cout << endl;
	}
	return 0;
}