새소식

컴퓨터공학 💻/자료구조

[자료구조] 배열과 구조체의 활용

  • -
배열과 구조체의 활용

배열

>> 같은 자료형의 변수들이 연속된 메모리 공간을 차지하는 자료구조

>> 인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료구조

>> 자료형이 같은 데이터들을 하나로 묶는 방법

 

구조체

>> 하나 이상의 변수를 묶어 그룹화하는 사용자 정의 자료형

>> 자료형이 다른 데이터들을 하나로 묶는 방법

 

배열과 구조체 자료구조의 활용 문제들입니다. 문제를 먼저 풀어보시고 풀이를 확인해보시기 바랍니다.

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형인 변수 xy를 갖는다. 그리고 Point 자료형으로 변수 p1p2를 선언하라. p1p2를 각각 (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형인 변수 realimag 를 갖는다. Complex 자료형으로 변수 c1c2를 선언하라.

이후 복소수 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;
}
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.