배열과 구조체의 활용
배열
>> 같은 자료형의 변수들이 연속된 메모리 공간을 차지하는 자료구조
>> 인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료구조
>> 자료형이 같은 데이터들을 하나로 묶는 방법
구조체
>> 하나 이상의 변수를 묶어 그룹화하는 사용자 정의 자료형
>> 자료형이 다른 데이터들을 하나로 묶는 방법
배열과 구조체 자료구조의 활용 문제들입니다. 문제를 먼저 풀어보시고 풀이를 확인해보시기 바랍니다.
1. 크기가 8인 배열 pow[]를 선언하고 여기에 3의 제곱 값들을 저장해보자. 즉 배열의 첫 번째 요소에는 3^0을 저장하고 두 번째 요소에는 3^1값을 저장한다. 마지막 요소에는 3^7값을 저장한다. for 루프를 이용하여 pow[] 배열의 전체 요소의 값을 출력하는 프로그램을 작성하라.
#include <iostream>
using namespace std;
int main() {
int pow[8] = { 1, };
for (int i = 1; i < 8; i++) {
pow[i] = pow[i - 1] * 3;
}
for (int i = 0; i < 8; i++) {
cout << pow[i] << endl;
}
return 0;
}
2. typedef를 이용하여 Point라고 하는 새로운 자료형을 정의하라. Point 자료형은 구조체로서 int형인 변수 x와 y를 갖는다. 그리고 Point 자료형으로 변수 p1과 p2를 선언하라. p1과 p2를 각각 (1,2)와 (5,4)로 초기화 하라. 이후 두 점 사이의 거리를 계산하는 함수를 작성하라
#include <iostream>
#include <cmath>
using namespace std;
typedef struct {
int x, y;
} Point;
double get_distance(Point p1, Point p2) {
int diff_x = pow(p1.x - p2.x, 2);
int diff_y = pow(p1.y - p2.y, 2);
double result = sqrt(diff_x + diff_y);
return result;
}
int main3() {
Point p1 = { 1, 2 };
Point p2 = { 5, 4 };
cout << get_distance(p1, p2);
return 0;
}
3. typedef를 이용하여 Complex라고 하는 새로운 자료형을 정의하라. Complex자료형은 구조체로서 double형인 변수 real과 imag 를 갖는다. Complex 자료형으로 변수 c1과 c2를 선언하라.
이후 복소수 a와 복소수 b를 받아서 a-b를 계산하는 함수를 작성해보자. 함수는 구조체를 반환할 수 있다. 복소수는 real+imag*i와 같은 형태를 갖는다.
#include <iostream>
using namespace std;
typedef struct {
double real, imag;
} Complex;
Complex complex_sub(Complex a, Complex b) {
Complex res;
res.real = a.real - b.real;
res.imag = a.imag - b.imag;
return res;
}
int main() {
Complex c1, c2;
c1 = { 3.0, 6.3 };
c2 = { 2.2, 4.9 };
cout << complex_sub(c1, c2).real <<
" " << complex_sub(c1, c2).imag <<
"i";
return 0;
}