계좌 관리 프로그램(포인터 배열 사용) 문제에요...

wjddnr의 이미지

#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 Person[i]->minmoney(money);
cout return;
}
}
cout }

void Inquire() //잔액조회
{
int id;
cout>id;
for(int i=0; i {
if(Person[i]->Getid()==id)
coutGetbalance() return;
}
cout }

컴파일까진 잘되고 실행도 되는데 프롬프트 입력중 에러가 발생합니다... 실행해 보시고 에러를 좀 고쳐주세요 ㅜㅜ;
제 생각에 메모리 동적 할당 부분에서 문제가 있는 것 같습니다.

chadr의 이미지

소스가 다 깨져서 컴파일을 못해보겠네요..
"< 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.

goguma의 이미지

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 변수가 가리키는 곳에 복사를 하신다...
그런데 위에 말씀드린 코드를 사용하신 이유를 모르겠군요...
컴파일을 시켜보진 않아서 확실한 답변은 못드리겠습니다만..
제 생각엔 아무래도 저것 때문인듯...
--------------------------------
스물셋.. 독립.. 열심히 살아보자!!
--------------------------------

--------------------------------
스물셋.. 독립.. 열심히 살아보자!!
--------------------------------

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.