[C++] 동적할당을 써서 별찍기, 배수의 배열 그리고 배열범위 넓히기★
2022. 6. 7. 20:43ㆍ코딩 1막 <C++개념편>/코딩 1막 <C++응용편>
728x90
1. <동적배열 써서 별찍기>
#include <iostream>
using namespace std;
void main()
{
int input;
cout << "크기를 입력 받으세요" << endl;
cin >> input;
int* arr = new int[input];
for (int j = 1; j <= input; j++)
{
for (int i = 1; i <= j; i++)
{
arr[i] = i;
cout << "*" ;
}
cout << endl;
}
}
2. <동적배열써서 배수의 배열만들기>
#include <iostream>
using namespace std ;
void main()
{
int input;
cout << "크기를 입력 받으세요" << endl ;
cin >> input ;
int* arr = new int[input] ;
for (int i = 1; i <= input; i++)
{
arr[i] = i * 5 ;
cout << arr[i] << endl ;
}
cout << endl;
cout << arr[5] ;
}
★★★3. <배열의 최대범위를 넓히기>
#include <iostream>
using namespace std;
// 동적할당 : 사용자가 임의로 힙영역에서 메모리를 할당하는 것
void main()
{
int currentSize = 5; // 현재 담긴 사이즈
int addSize = 5; // 넘칠 시 추가할 사이즈
int count = 0;
int* arr = new int[currentSize]; // 5개만큼의 int 공간을 만들어 첫번째 주소를 arr포인터 변수에 넘겨준다
while (1)
{
int input;
cin >> input;
if (input == -1) // -1을 입력받으면 반복문 종료
{
break;
}
arr[count] = input; // 입력받은 것을 배열에 넣어준다
count++; // 다음 인덱스에 넣기위해 count++
if (count >= currentSize) // 정해둔 크기를 넘어선다면
{
currentSize += addSize; // 추가할 사이즈만큼 추가해주고
int* temp = new int[currentSize]; //새로이 공간을 할당한다
for (int i = 0; i < currentSize - addSize; i++)
{
temp[i] = arr[i]; // 새로운 공간에 기존에 내용물을 채워넣는다
}
delete[] arr; // 이제 필요없는 공간을 날려버리고
arr = temp; // 새로운 공간을 가르키도록 한다.
}
}
cout << "-----결과-----" << endl;
for (int i = 0; i < count; i++)
{
cout << arr[i] << endl;
}
}
* 차후에 배울 vector가 이런 구조를 가짐.
728x90
'코딩 1막 <C++개념편> > 코딩 1막 <C++응용편>' 카테고리의 다른 글
[C++] 구조체 만들고, 상속해보고, 오버로딩, 오버라이딩 및 가상함수 구현해보기 (0) | 2022.06.10 |
---|---|
[C++] 상속 : 부모 몬스터 <--- 자식 드래곤 (0) | 2022.06.10 |
[C++] 구조체 변수의 동적할당과 해제 (0) | 2022.06.07 |
[C++] 참조자를 사용해서 swap함수 만들기 (0) | 2022.06.07 |
[C++] 함수의 매개변수로 구조체를 넣어보고 할당과 해제 순서 테스트하기 (0) | 2022.06.07 |