/*
2. 사용자로부터 계속 정수를 입력받는다.
-1이 되면 출력한다.
default로 5개를 동적할당하고
5개를 넘어가면 +5씩 동적할당을 증가시킨다.
5 -> 10 -> 15
반드시 new 연산자를 사용할 것
*/
#include <iostream>
#define ARR_LEN 5
using namespace std;
int main(int argc, char** argv)
{
int cnt = 1;//몇번 나갔나
int*num = new int [5]();
int*ptr = (int*)malloc(sizeof(int)*ARR_LEN);
//int*pptr = ptr;
int i = 0;
int j;
while(1)
{
cout<<"입력";
cin>>num[i];
*(ptr+i) = num[i];
if(num[i] == -1)
break;
++i;
if(i !=0 && i%5 ==0)
{
delete[] num;
int *num = new int[cnt*ARR_LEN]();
for(j = 0 ; j<i ; j++)
num[j] = *(ptr+j);
ptr = (int*)realloc(ptr,sizeof(int)*ARR_LEN*++cnt);
}
}
i = 0;
while(true)
{
if( num[i] == -1)
break;
cout <<" "<<num[i];
i++;
}
free(ptr);
delete[] num;
return 0;
}
에러메시지임.. 어디가 잘못된지 모르겠음
학교과제 아님 .. 알려줘 ! ㅠㅠ
bokboot.me 써
new 연산자 사용하라는 것을 봤을 때malloc, realloc 사용한다는 것은 어쩌면.. 문제출제 의도와 약간 어긋난다고 생각됩니다.순수히 new 만 가지고 원래값을 유지하면서 크기변경을 할 수 있느냐를 묻는게 아닌지 싶네요.이제 자료구조 공부하는 입장에서.. 잡설이고 이렇게 하니까 됨..나머지 부분은 적절히 수정하시면 됩니다.if(i!=0 && i%5==0){ int* npTmp = new int [nCnt*ARR_LEN]; for(int k=0; k<nCnt*ARR_LEN; k++) { npTmp[k] = npNum[k]; } delete[] npNum; npNum = new int [++nCnt*ARR_LEN]; for(int k
댓글쓸때 엔터 어떻게 침? 다음줄에 글 쓰고 싶은데 등록이 되어버리넹 ㅋㅋㅋㅋㅋㅋㅋ
그냥 저상태에서 간단히 완성 시키려면 num = new int[++cnt*ARR_LEN]; ptr = (int*)realloc(ptr,sizeof(int)*ARR_LEN*cnt); 두 줄 바꾸면 됨.. 앞에 int 붙였을 때 상관없이 될 것 같은데.. 안되는 이유는 저도 멍청해서 잘 모르겠음.. 내부적으로 메모리 관련 이슈가 있을 것임.. 아랫분이 설명해 주실듯