프로그래밍 언어/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;
}