클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

복합 데이터형 4 : 배열 ~ 구조체 단원 연습문제 풀기 본문

프로그래밍 언어/C++

복합 데이터형 4 : 배열 ~ 구조체 단원 연습문제 풀기

huenuri 2024. 8. 25. 13:19

4단원 연습문제는 17문제나 되는데, 내가 공부한 데까지는 9번까지 해당된다. 이제 이 문제들을 풀어볼 것이다.
개념과 예제 코드를 통해 많은 것들을 배웠지만, 문제를 풀어야 진짜로 이해했는지 알 수 있게 될 것 같다.


 

 

 

연습문제 풀기

 

1. 다음과 같은 데이터 객체를 선언하라.

a. 30개의 char형 원소를 가진 배열 actors
b. 100개의 short형 원소를 가진 배열 betsie
c. 13개의 float형 원소를 가진 배열 chuck
d. 64개의 long double형 원소를 가진 배열 dipsea

char actors[30];
short betsie[100];
float chuck[13];
long double dipsea[64];

 

 

2. 내제된 배열 대신 array 템플릿을 이용하여 문제 1의 데이터 객체를 선언하라.

이 문제는 어떻게 풀어야 할지 몰라서 정답을 보고 풀게 되었다.
배열 템플릿을 어디서 보았는지 찾기도 어려웠다. string 클래스에서 템플릿이 등장하긴 하는데, 이걸 배열과 어떻게 연관지을지는 몰랐다.

이 문제는 살펴보니 4장 맨 뒷장에 나오는데 아직 배우지 않은 부분이라 넘어가고 다음에 풀기로 하자.

 

 

3. 5개의 int형 원소를 가진 배열을 선언하고, 이 배열을 1부터 시작하는 처음 다섯 개의 홀수로 초기화하라.

int array[5];
array = { 1,3,5,7,9 };

 

이렇게 배열을 선언하고 초기화했는데, 이러한 경고창이 뜨면서 컴파일이 되지 않았다.

 

배열은 선언과 동시에 초기화를 해야 하는 것 같다.

int array[5] = { 1,3,5,7,9 };

 

이렇게 쓰니까 잘 되었다.

 

 

 

4. 문제 2에 나오는 배열의 첫번째 원소와 마지막 원소를 더하여 even 이라는 새로운 변수에 대입하는 문을 작성하라.

int array[5] = { 1,3,5,7,9 };
int even = array[0] + array[4];

 

 

 

5. float형 배열 ideas의 두번째 원소에 들어 있는 값을 출력하는 구문을 작성하라.

#include <iostream>
using namespace std;

int main()
{
	float ideas[3] = { 1,2,3 };
	cout << ideas[1];

	return 0;
}

 

실제로 출력되도록 선언과 초기화를 해서 만들어보았다. 원래는 구문만 작성하면 되는 거였지만.

 

 

 

6. char형의 배열을 선언하고, "cheeseburger"라는 문자열로 그 배열을 초기화하라.

char name[15] = "cheeseburger";

 

cheeseburger가 13 글자이므로 이것보다 더 많은 15개의 배열로 선언했다.

 

 

 

7. string 객체를 선언하고, "Waldorf Salad"라는 문자열로 초기화하라.

#include <iostream>
#include <string>
using namespace std;

int main()
{
	string str = "waldorf Salad";
}

 

using namespace std;를 쓰지 않으면 string을 사용할 수 없으니 꼭 써주기

 

 

 

8. 물고기를 나타내는 구조체 선언을 설계하라. 그런데 이 구조체는 물고기의 종류(kind), 정수로 된 온스 단위의 무게(weight), 소수부가 있는 인치 단위의 길이(length)로 정의해야 한다.

#include <iostream>
struct fish
{
	char kind[20];
	int weight;
	float lenght;
};

 

 

9. 문제 8번에서 정의한 구조체형으로 변수를 하나 선언하고 초기화하라.

이건 문제가 잘못되었다. 처음에는 6번이라고 해서 배열로 초기화했던 걸 구조체로 선언했는데 정답을 보니 전혀 다른 풀이였다.

8번 문제에서 구조체를 선언만 했으니 이제 초기화하라는 말인 것 같다.

#include <iostream>
struct fish
{
	char kind[20];
	int weight;
	float lenght;
};

fish uruck =
{
	"Rockfish", 500, 30.0
};

 

물고기 중에서 우럭에 대한 정보를 만들어보았다. 영어 이름은 Rockfish이고, 500~800g 정도의 무게가 나간다고 한다. 길이는 30~40cm 이다.
이렇게 실제로 내가 정보에 대한 내역을 만들어보고 프로그램을 작성하니 너무나 재미있었다.


 

 

오늘의 학습을 마치고

 

4단원에서 8문제의 연습문제를 풀었다. 나머지 9문제는 다음에 학습을 한 다음에 풀어볼 예정이다. 개념 학습을 할 때는 뭔가 아리송하고 내가 제대로 알고 있는 게 맞는지 의문이 들었는데, 문제를 풀고 나니 확실히 개념이 잡혔다.
대부분 풀이를 보지 않고 풀었고 잘 모르는 건 책을 뒤적이면서 풀어보았다.

이제 다음 단원은 루프 구문에 대해서 학습해볼 것이다.