일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 배열문제
- IMGUI
- 표창던지기
- C++
- 화살표 함수
- 언리얼
- Unity
- rendermonkey
- 3차원배열
- 가변배열
- python
- c++class
- premake5
- 이득우언리얼
- uidesign
- 렌더몽키
- 화살표 메서드
- 공부
- 비주얼스튜디오
- 다중상속
- visualstudio2022
- 파이썬
- 이득우
- 화살피하기
- 게임만들기
- 셰이더
- 유니티
- swipe
- c#
- 그림자 효과
- Today
- Total
신입 개발자 공부 과정
C언어 - 다차원 배열 본문
기존 배열은 1차원 배열로
int arr[3] 과 같이 썻지만
2차원배열부터는
int arr[3][2]
3차원배열
int arr[3][2][2]과 같이 표현한다
1차원배열이
[0] | [1] | [2] |
였다면,
2차원배열은
ex) int arr[3][2] = {1,2,3,4,5,6};
[0][0] = 1 | [1][0] = 3 | [2][0] = 5 |
[0][1] = 2 | [1][1] = 4 | [2][1] = 6 |
과 같이 볼 수 있다.
실제로 출력을 해보면
#include <stdio.h>
int main() {
int arr[3][2] = { 1, 2, 3, 4, 5, 6 };
printf("%d\n", arr[0][1]);//몇번째 행 몇번째 열: 2
printf("%d\n", arr[2][1]);//몇번째 행 몇번째 열: 6
printf("%d\n", arr[1][0]);//몇번째 행 몇번째 열: 3
return 0;
}
위와 같이 출력되는 것을 확인 할 수 있다.
배열에서 해깔릴 수 있는 점은 우선 첫번쨰는 0으로 보는 점과
행과 열 순서 대로 값이 입력되는 점이라 생각된다.
Quiz=
4행2열의 배열을 만들고 숫자 1부터 순서대로 값을 대입했을 때,
배열[3][0]의 값은 무엇일까요?
과정과 정답은 아래에서 확인 가능합니다.
코드=
#include <stdio.h>
int main() {
int arr[4][2] = { 1, 2, 3, 4, 5, 6, 7, 8 };
printf("%d\n", arr[3][0]);
return 0;
}
정답= 7
풀이=
arr[0][0] = 1 |
arr[0][1] = 2 |
arr[1][0] = 3 |
arr[1][1] = 4 |
arr[2][0] = 5 |
arr[2][1] = 6 |
arr[3][0] = 7 |
arr[3][1] = 8 |
배열에는 행이 우선 그다음에 열의 순서로 값이 대입 되기 때문에 위와 같이 나타낼 수 있다.
고로 int형식의 행이 4개고 열이 2개인 배열 int arr[4][2] 의
4번째 행 그리고 1번째 열인 arr[3][0] 의 값은 7이 된다.
Quiz2=
코로나로 인해 회사직원의 건강이 염려가 된 Mr.1004는 직원들의 신체검사를 통해 지원금을 지급 하려고한다.
총 회사에는 5명의 직원이 있고, 신체검사 항목은 키와 몸무게만 측정하고 있다.
그 중 3,5번째 직원이 본인의 몸무게가 어떻게 나왔는지 궁금하다고 한다.
다차원 배열을 사용하여 3,5번째 직원의 몸무게를 다음과 같이 출력해보자.
3번째 직원의 몸무게는= **kg이래요 3번째 직원의 몸무게는= **kg이래요 |
1번쨰 직원= 178, 65kg
2번쨰 직원= 180,76kg
3번쨰 직원= 158, 56kg
4번째 직원= 165, 55kg
5번쨰 직원= 175, 69kg
정답은 아래
코드=
#include <stdio.h>
int main() {
int bodycheck[5][2] = { 178, 65, 180, 76, 158, 56, 165, 55, 175, 69 };
printf("3번째 직원의 몸무게는= %dkg이래요\n", bodycheck[2][1]);
printf("5번째 직원의 몸무게는= %dkg이래요\n", bodycheck[4][1]);
return 0;
}
정답=
풀이=
각 행을 직원의 수인 5로 정하고
열의 수는 각 직원들의 키 와 몸무게의 정보를 입력 할 것이어서 2개로 정했다.
Quiz3=
이번에는 3명의 학생의 키와 신발사이즈를 입력하고
출력해 보도록하자
*참고
1학생= 170, 260
2학생= 180,270
3학생= 160,265
정답은 아래
코드=
#include <stdio.h>
int main() {
int size[3][2];
int i, j;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 2; j++)
{
if (j == 0)
{
printf("키를 입력해주세요:\n");
scanf_s("%d", &size[i][j]);
}
else
{
printf("신발 사이즈를 입력해주세요:\n");
scanf_s("%d", &size[i][j]);
}
}
}
for (i = 0; i < 3; i++)
{
printf("%d번째 학생의 키는 %d, 신발 사이즈는 %d입니다.\n",
i+1, size[i][0], size[i][1]);
}
return 0;
}
정답=
풀이=
우선은 학생(i) 마다 키와 몸무게를(j)를 입력받아야 되므로
2중 for문을 사용하였고
그 안에서 if, else문을 사용하여 j가 1번쨰일때 키를 입력받고,
j가 2번째일때 신발사이즈를 입력받았다.
2차원 배열을 연습했으면
3차원 배열을 연습해보려고한다
3차원 배열은
int arr[2][3][4]; 와 같이 표현하고
만약 아파트 동 층 호수로 표현하면 다음과 같이 이해할 수 있다.
#include <stdio.h>
int main() {
int size[2][2][2];
printf("동호수를 배열에 입력한다.\n");
for (int i = 0; i < 2; i++)
{
if (i == 0)
{
printf("1동\n");
}
else
{
printf("2동\n");
}
for (int j = 0; j < 2; j++)
{
if (j == 0)
{
printf("1층");
}
else
{
printf("2층");
}
for (int h = 0; h < 2; h++)
{
if (h == 0)
{
printf("1호,");
}
else
{
printf("2호\n");
}
}
}
}
return 0;
}
'C > 공부' 카테고리의 다른 글
C언어 - 포인터(2) 상수포인터 (0) | 2022.02.22 |
---|---|
C언어 - 포인터(1) (Pointer), &연산자, *연산자 (0) | 2022.02.07 |
C언어 - 배열에 숫자를 입력 받고 높은 순서대로 출력하기 (0) | 2022.02.04 |
C언어 - 상수(Constant) 변하지 않는 값 (0) | 2022.02.04 |
C언어 - 배열(Array) (0) | 2022.02.03 |