문제 번호 1553. -- 2021년 2학기 C언어프로그래밍2 - 기말고사 4번

1553: 2021년 2학기 C언어프로그래밍2 - 기말고사 4번

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 89  해결 문제 수: 8
[제출][채점 상황 열람][게시판]

문제 설명

구조체 AA는 int member 2개로 아래와 같이 구성되었다.
struct AA {
int a;
int b;
}

전역변수 pAA는 동적으로 할당되는 구조체 배열 AArray에 대한 포인터 변수이고, 초기값은 NULL이다.
struct AA* pAA = 0;

전역변수 numAA는 AArray에 포함된 구조체들의 개수를 나타내며, 초기값은 0이다.
int numAA = 0;

함수 funAdd(int a, int b)는
a와 b를 값으로 갖는 새로운 구조체를 AArray에 추가하는데,
이를 위해 기존배열보다 1개 구조체 크기만큼 더 큰 공간을 동적으로 할당받아서 추가를 진행한다.
기존 구조체 값들을 새로운 공간으로 복사하고, 새로운 값은 끝에 추가한다.
이때 pAA는 새롭게 할당된 공간주소를 가리킨다.

함수 funAdd를 아래 코드의 표시된 부분에 구현하시오.

 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
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <stdlib.h>

struct AA {
	int a;
	int b;
};

struct AA* pAA = 0;
int numAA = 0;

//-------------- 위로는 수정금지 -----------

void funAdd(int a, int b) {

	// pAA와 numAA를 이용하여
	// funAdd가 호출될 때마다, 기존 보다 1개 더 구조체를 저장할 수 있는 공간을 
	// 동적으로 할당받아서, 새로운 구조체를 저장하는 코드를 저장하면 됨.
	

}

//---------------- 아래로는 수정금지 ------------

int main(void) {

	int a;
	int b;
	int c;

	while (1) {
		scanf("%d", &a);
		if (a == -999) {
			break;
		}
		scanf("%d", &b);
		funAdd(a, b);
	}

	scanf("%d", &c);
	printf("%d %d", pAA[c].a, pAA[c].b);
	return 0;
}

입력

출력

도움말

출처

[제출][채점 상황 열람]