[3번]
/*
크기가 10인 배열 two[]를 선언하고 여기에 2의 제곱 값들을 저장해보자.
즉 배열의 첫 번째 요소에는 2^0을 저장하고 두 번째 요소에는 2^1값을 저장한다.
마지막 요소에는 2^9값을 저장한다.
for 루프를 이용하여 two[] 배열의 전체 요소의 값을 출력하는 프로그램을 작성한다
*/
#include <iostream>
using namespace std;
void Initialize(int two[10]); //초기화
void Display(int two[10]); //출력
int main(void)
{
int two[10];
Initialize(two);
Display(two);
return 0;
}
void Initialize(int two[10])
{
for (int i = 0; i < 10; i++)
{
int res = 1;
for (int j = 0; j < i; j++)
{
res *= 2;
}
two[i] = res;
}
}
void Display(int two[10])
{
for (int i = 0; i < 10; i++)
cout << two[i] << " ";
cout << endl;
}
[4번]
/*
복소수를 나타내는 클래스를 만들어보자.
복소수는 real+imag*i와 같은 형태를 갖는다.
여기서 i=sqrt(-1)이다.
복소수에 필요한 속성들과 가능한 메소드들을 결정한 후에
클래스를 작성하고 객체를 생성하여서 테스트한다
*/
#include <iostream>
using namespace std;
class complexNumber
{
private:
int real; //실수
int imag; //허수
public:
complexNumber(int num1 = 0, int num2 = 0) :real(num1), imag(num2)
{
}
void Input()
{
cout << "복소수를 입력합니다" << endl;
cout << "실수부를 입력하세요: ";
cin >> real;
cout << "허수부를 입력하세요: ";
cin >> imag;
}
void Add(complexNumber c1, complexNumber c2)
{
*this = c1;
real += c2.real;
imag += c2.imag;
}
void Subtract(complexNumber c1, complexNumber c2)
{
*this = c1;
real -= c2.real;
imag -= c2.imag;
}
void Multiply(complexNumber c1, complexNumber c2)
{
*this = c1;
int temp1 = real, temp2 = imag; //연산과정 중 겹치는것을 방지
real = (temp1*c2.real) - (temp2*c2.imag);
imag = (temp1*c2.imag) + (temp2*c2.real);
}
void Display()
{
cout << "복소수: ";
if (real)
cout << real;
if (real && imag)
cout << " + " << imag << "i";
else if (imag)
cout << imag << "i";
cout << endl;
}
};
int main(void)
{
complexNumber c1, c2, c3;
c1.Input();
c1.Display();
c2.Input();
c2.Display();
c3.Add(c1, c2);
cout << endl;
cout << "덧셈 결과\t";
c3.Display();
c3.Subtract(c1, c2);
cout << "뺄셈 결과\t";
c3.Display();
c3.Multiply(c1, c2);
cout << "곱셈 결과\t";
c3.Display();
return 0;
}
[5번]
/*
사각형을 나타내는 클래스 Rectangle을 만들어보자.
사각형은 가로(w)와 세로(h)를 가지며, 사각형의 넓이를 반환하는 area(),
사각형의 둘레를 반환하는 perimeter() 등의 메소드를 가진다.
Rectangle 클래스를 작성하고 객체를 생성핳여 테스트하라
*/
#include <iostream>
using namespace std;
class Rectangle
{
private:
int w; //가로
int h; //세로
public:
Rectangle(int num1 = 1, int num2 = 1) :w(1), h(1)
{
}
void Input() //가로 세로 입력
{
cout << "사각형의 가로, 세로 길이를 입력합니다" << endl;
cout << "가로: ";
cin >> w;
cout << "세로: ";
cin >> h;
}
int area() //넓이
{
return (w*h);
}
int perimeter() //둘레길이
{
return 2 * (w + h);
}
void Display() //정보 출력
{
if (w == h)
{
cout << "정사각형의 한변의 길이는 " << w << "이다" << endl;
cout << "넓이는 " << area() << endl;
cout << "둘레길이는 " << perimeter() << endl;
}
else
{
cout << "직사각형의 가로 길이는 " << w << " 세로 길이는 " << h << "이다" << endl;
cout << "넓이는 " << area() << endl;
cout << "둘레길이는 " << perimeter() << endl;
}
}
};
int main(void)
{
Rectangle r;
r.Input();
r.Display();
return 0;
}
[6번]
/*
2차원 배열로 행렬(Matrix)이 주어졌을 때 전치 행렬(transpose)을 구하는 프로그램을 작성하라
*/
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
class Matrix
{
private:
int col; //열
int row; //행
int **arr; //배열을 위한 더블포인터
int **temp; //전치를 위한 더블포인터
public:
Matrix(int c, int r):col(c), row(r)
{
arr = new int*[c];
temp = new int*[c];
for (int i = 0; i < c; i++)
{
arr[i] = new int[r]; //2차원 동적할당
temp[i] = new int[r]; //임시 배열
}
}
~Matrix()
{
for (int i = 0; i < col; i++)
{
delete[]arr[i];
delete[]temp[i];
}
delete[]arr;
delete[]temp;
}
void randomInput()
{
for (int i = 0; i < col; i++)
for (int j = 0; j < row; j++)
arr[i][j] = rand() % 10; //무작위로 숫자를 넣는다
}
void transpose() //전치
{
cout << "전치 후 ";
for (int i = 0; i < col; i++)
for (int j = 0; j < row; j++)
temp[i][j] = arr[i][j]; //복사한다
for (int i = 0; i < col; i++)
for (int j = 0; j < row; j++)
arr[j][i] = temp[i][j];
}
void Display()
{
cout << "이차원 배열 출력" << endl;
for (int i = 0; i < col; i++)
{
for (int j = 0; j < row; j++)
cout << arr[i][j] << " ";
cout << endl;
}
}
};
int main(void)
{
srand((unsigned)time(NULL));
Matrix m(5, 5); //5*5 이차원 배열
m.randomInput();
m.Display();
m.transpose();
m.Display();
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
[참고] C++로 쉽게 풀어쓴 자료구조
'C++ > C++로 쉽게 풀어쓴 자료구조' 카테고리의 다른 글
C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 4 (7) | 2017.09.27 |
---|---|
C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 3 (12) | 2017.09.23 |
C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 2(2) (0) | 2017.09.20 |
C++/C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 2(1) (0) | 2017.09.20 |
C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 1 (0) | 2017.09.18 |