게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C++ 코드를 실행했는데 자꾸 죽습니다.....
게시물ID : jisik_110815짧은주소 복사하기
작성자 : 마약파리소녀
추천 : 0
조회수 : 763회
댓글수 : 3개
등록시간 : 2011/10/17 15:15:43
#include<iostream>
#include<string>

using namespace std;


class Student
{
public :
Student();
~Student();
void inputData(); // Input all data from user
void resetClasses(); // reset class list
Student& operator =(const Student& rightSide) ; // Assignment operator
friend ostream& operator << (ostream &outStream, const Student &s) ;
private :
string name ;
int numClasses ;
string *classList ;
};

void prob4(); // 4번 문제

int main(void)
{
int iSelect;

while(1)
{
cout << "문제 번호 입력(3~5), 0입력시 종료 : ";
cin >> iSelect;

switch(iSelect)
{
case 0:
return 0;
case 4:
cout << "4번" << endl << endl;
prob4();
break;
}
}
}


void prob4()
{
Student s1, s2;
s1.inputData() ; // Input data for student 1

cout << "첫번째 학생의 정보:" << s1 << endl;
cout << endl;

s2 = s1;
cout << "첫번째 학생 정보를 할당받은 두번째 학생의 정보: " << s2 << endl ;

s1.resetClasses();

cout << "리셋 후 첫번째 학생의 정보:" << s1 << endl;
cout << "리셋 후 두번째 학생의 정보는 그대로 유지:" << s2 << endl ;
cout << endl;
}

Student::Student() 
{
name = "";
numClasses = 0;
classList = NULL;
}

Student::~Student()
{
if(classList != NULL)
delete [] classList;
}

void Student::inputData() // Input all data from user
{
cout << "학생의 이름을 입력하세요 : ";
cin >> name;

cout << "수강 교과목 수를 입력하세요 : "; // 과목 수를 입력 받음
cin >> numClasses;

if(classList != NULL) // 동적 할당 받은 부분이 있을 경우 메모리 해제
delete [] classList;

classList = new string[numClasses]; // 과목 수에 따라 배열을 동적 할당

if(classList == NULL) // 동적 할당을 받았는지 체크
{
cout << "Memory Allocated ERROR!" << endl;
exit(1);
}

for(int i = 0; i < numClasses; i++)
{
cout << " " << i + 1 << "번째 교과목의 이름을 입력하세요 : ";
cin >> classList[i];
}
}

void Student::resetClasses() // reset class list
{
numClasses = 0;

if(classList != NULL)
delete [] classList;
}

Student& Student::operator =(const Student& rightSide) // Assignment operator
{
name = rightSide.name;
numClasses = rightSide.numClasses;

if(classList != NULL)
delete [] classList;

classList = new string [numClasses];

for(int i = 0; i < numClasses; i++)
{
classList[i] = rightSide.classList[i];
}

return (*this);
}

ostream& operator << (ostream &outStream, const Student &s)
{
outStream << "첫번째 학생의 정보 : " << endl;
outStream << "이름 : " << s.name << endl;
outStream << "수강교과목수 : " << s.numClasses << endl;

if(s.numClasses != 0)
{
for(int i = 0; i < s.numClasses; i++)
{
outStream << " " << i + 1 << "번째 교과목명 : " << s.classList[i] << endl;
}
}
outStream << endl;

return outStream;
}


아무리 보아도 어디서 죽는 건지 모르겠어요

나름 생각하며 짰는데 

학생이름 입력 받다가도 죽고

과목이름 입력 받다가도 죽고;;;

죽는 곳은 아무데서나 막 죽네요;;

돌아가는 경우도 있고;;

대체 어디가 문제인 걸까요;;

대체 어디서 잘못된걸까요;;
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호