문제 4.
이차원 배열 사용 방법
//문제4
int A[][4] = {12, 30, 82, 54, 43, 51, 32, 47, 30, 42, 41, 69};
//배열 A의 원소 값 출력
for(int i=0; i<3; i++){ //행의 수만큼 반복
for(int j=0; j<4; j++) { //열의 수만큼 반복
printf("%d ", A[i][j]);
}
printf("\n");
}
//배열 A의 원소 값을 주어진 식으로 계산
for(int i=0; i<3; i++){ //행의 수만큼 반복
for(int j=0; j<4; j++) { //열의 수만큼 반복
A[i][j] = A[i][j]*10+2;
}
}
//계산 이후의 배열 A의 원소 출력
for(int i=0; i<3; i++){ //행의 수만큼 반복
for(int j=0; j<4; j++) { //열의 수만큼 반복
printf("%d ", A[i][j]);
}
printf("\n");
}
이차원 배열의 경우는 행과 열로 구성된 테이블을 다루는 것이기 때문에
이중 for문으로 사용해야 간편합니다.
밖의 for문은 행을 탐색하고, 안의 for문은 열을 탐색하는 식으로 구성합니다.
문제 5.
//문제5
int a[] = {4, 7, 9, 3, 6};
int b[] = {10, 20, 30, 40, 50, 60};
int countA = sizeof(a)/sizeof(a[0]); // a 원소 수
int countB = sizeof(b)/sizeof(b[0]); // b 원소 수
for(int i=0; i<countA; i++){
//배열 b의 마지막 원소 다음부터 값 넣기
b[countB+i] = a[i];
}
for(int j=0; j<countA+countB; j++){
printf("%d ", b[j]);
}
5번의 문제 해결 방식은 이전 블로깅의 3번과 동일합니다.
배열 b의 마지막 원소는 countB-1의 참조번호(index)를 가집니다.
이후 a의 값을 저장하기 위해서는 countB의 인덱스를 가진 위치부터 시작하고
a의 원소 개수(countA) 만큼 반복하여 값을 추가합니다.
인덱스에 접근하는 방법은 countB+i를 사용했습니다.
문제 6.
두 배열이 같음을 판별 (배열 원소 탐색)
//문제6
int a[] = {4, 7, 9, 3, 6};
int b[] = {4, 7, 9, 3, 6, 1};
int count = sizeof(a)/sizeof(a[0]);
int ano = 0; //서로 다른 값인지 판단
if(sizeof(a) == sizeof(b)){
//배열 a와 b가 가진 원소 수가 같으면
for(int i=0; i<count; i++){
if(a[i] != b[i]){ //원소 값이 다르다면
ano++; //다르다는 의미의 수
}
if(ano != 0){
printf("a와 b는 서로 다른 배열(원소 값이 다름)\n");
break;
}
}
if(ano == 0) //다른 값이 없다면
printf("a와 b는 서로 같은 배열\n");
}
else printf("a와 b는 서로 다른 배열(원소 개수 다름)\n");
첫 번째 조건은 배열의 크기에 따른 동등 유무입니다.
sizeof()를 사용하여 a와 b의 크기가 같은지 if문으로 검사합니다.
같다면 다음 조건을 검색하러 들어가고,
그렇지 않다면 서로 다른 배열임을 알려주고 종료합니다.
두 번째 조건은 원소값의 동등 유무입니다.
같은 인덱스에 들어있는 값이 같아야 합니다.
for문을 통해 배열의 공간을 탐색할 수 있도록 합니다.
for문의 내부에 if문을 추가하여 두 번째 조건을 검사할 수 있도록 합니다.
배열의 원소값이 같다면 for문을 계속 진행하고,
배열의 원소값이 다르다면 다른 수가 있다는 것을 의미하는 ano 변수의 값을 1 증가시킵니다.
ano의 값이 1 이상이면 다른 수가 하나라도 있다는 의미이며
그것은 배열이 다르다는 것을 의미하기 때문에 더이상의 탐색이 필요 없습니다.
그래서 배열이 다르다고 출력시킨 다음 break로 for문을 탈출하여 종료합니다.
-끝-
'작업 > Programming' 카테고리의 다른 글
C언어 행렬의 곱 구하기 (0) | 2020.06.05 |
---|---|
Perfect C 프로그래밍 연습 9장 7, 8, 9, 10번 해결 (0) | 2020.06.04 |
Perfect C 프로그래밍 연습 9장 1, 2, 3번 해결 (0) | 2020.06.04 |
Perfect C 프로그래밍 연습 8장 해결 (0) | 2020.05.31 |
Perfect C 프로그래밍 연습 7장 6, 7, 11, 13번 해결 (0) | 2020.05.12 |