계좌 관리 프로그램(포인터 배열 사용) 문제에요...
#include
void print();
void MakeAccount(); // 계좌 계설
void Deposit(); // 입금
void WithDraw(); // 출금
void Inquire(); // 잔액 조회
using std::cout;
using std::cin;
using std::endl;
class Account
{
int id;
char *name;
int balance;
public:
Account(){}
Account(int _id, char *_name, int _balance)
{
this->id=_id;
this->balance=_balance;
this->name=new char[strlen(name)+1];
this->name=new char[strlen(_name)+1];
strcpy(this->name, _name);
}
~Account()
{
delete []name;
}
int Getid()
{
return id;
}
int Getbalance()
{
return balance;
}
int addmoney(int money)
{
return balance+=money;
}
int minmoney(int money)
{
return balance-=money;
}
};
Account *Person[100];
int index=0;
int AccountSum=100;
enum {MAKE=1, DEPOSIT, WITHDRAW, INQUIRE, EXIT};
void main()
{
while(1)
{
int choice;
print();
cin>>choice;
switch(choice)
{
case MAKE :
MakeAccount();
break;
case DEPOSIT :
Deposit();
break;
case WITHDRAW :
WithDraw();
break;
case INQUIRE :
Inquire();
break;
case EXIT :
{
cout
return;
}
default :
cout
break;
}
}
}
void print()
{
cout
cout
cout
cout
cout
}
void MakeAccount() // 계좌 계설
{
int id;
char name[20];
int balance;
cout
cout>id;
cout>name;
cout>balance;
Person[index++]=new Account(id, name, balance); //초기화를 시키면서 동적할당, 이부분에서 문제가 있는것 같음
}
void Deposit() // 입금
{
int id;
int money;
cout>id;
cout>money;
for(int i=0; i
if(Person[i]->Getid()==id)
{
Person[i]->addmoney(money);
cout
return;
}
}
cout
}
void WithDraw() //출금
{
int id;
int money;
cout>id;
cout>money;
for(int i=0; i
if(Person[i]->Getid()==id)
{
if(Person[i]->Getbalance()
cout
return;
}
}
cout
}
void Inquire() //잔액조회
{
int id;
cout>id;
for(int i=0; i
if(Person[i]->Getid()==id)
coutGetbalance()
return;
}
cout
}
컴파일까진 잘되고 실행도 되는데 프롬프트 입력중 에러가 발생합니다... 실행해 보시고 에러를 좀 고쳐주세요 ㅜㅜ;
제 생각에 메모리 동적 할당 부분에서 문제가 있는 것 같습니다.
소스가 다 깨져서
소스가 다 깨져서 컴파일을 못해보겠네요..
"< code >" 태그를 이용해서 깔끔하게 올려보세요.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
이건 무슨 뜻인가요?
Account 클래스 생성자 코드 중에..
this->name=new char[strlen(name)+1];
이건 무슨 이유에서..?
제가 보기에 strlen(name)에서 name변수는 char*형이 될듯 한데..
this->name=new char[strlen(_name)+1];
strcpy(this->name, _name);
이 두줄은 이해가 됩니다..
전달받은 _name변수의 길이 + 1을 동적할당 하고..
생성한 객체의 *name 변수가 가리키는 곳에 복사를 하신다...
그런데 위에 말씀드린 코드를 사용하신 이유를 모르겠군요...
컴파일을 시켜보진 않아서 확실한 답변은 못드리겠습니다만..
제 생각엔 아무래도 저것 때문인듯...
--------------------------------
스물셋.. 독립.. 열심히 살아보자!!
--------------------------------
--------------------------------
스물셋.. 독립.. 열심히 살아보자!!
--------------------------------
댓글 달기