---- 이게 헤더----

 

#include <iostream>
using namespace std;


class Course
{
public :
 void list_start();
 void SetCourseName( const char []); //과정이름을 등록
 void SetStudentName(const char[]);

 
 int GetCourseName (char [][40]);  //현재의 과정명을 넘긴다  (int인 이유 편의상) 포인터값을 넘겨야한다
 int GetStudentName(char [][2][30]); //학생들의 이름 을 받는다
 int Get_stu_Count();    //학생수가 몇명인지 체크
 int Get_cou_Count();

private:
 char CourseName[10][40];  //과목명
 char StudentName[10][2][30]; //학생이름
 int stu_Count;
 int cou_Count;
 

};

 

---정의 부분---

#include "cul.h"

void Course::list_start()
{
 cou_Count=0;
}  

void Course::SetCourseName(const char c[])  
{
 strcpy_s(CourseName[cou_Count], 40 ,c);  
 stu_Count=0;
 cou_Count++;
}        

void Course::SetStudentName(const char n[])
{

 strcpy_s(StudentName[cou_Count-1][stu_Count], 30 ,n);
 stu_Count++;
}

int Course::GetCourseName(char n[][40])
{
 if (cou_Count == 0)
  return false;
 for(int i=0; i<cou_Count; i++)
  strcpy_s(n[i],40,CourseName[i]);

 return true;
}

int  Course::GetStudentName(char n[][2][30])
{
 int i;

 for (i=0; i<stu_Count; i++)
  strcpy_s(n[cou_Count-1][i], 30, StudentName[cou_Count-1][i]);

 return 0;
}

int Course::Get_stu_Count(void)
{
 return stu_Count;
}

int Course::Get_cou_Count(void)
{
 return cou_Count;
}

 

 

-----메인------

#include "cul.h"
void main(void)
{
     Course cou;
     char course[40]={0,}, name[30]={0,}, ch='y';
     char t_name[][2][30]={0,}, c_name[][40]={0,};
     int  i=0,stu_count[20]={0,}, cou_Count=0;


 cou.list_start();

 while(ch=='y' || ch=='Y')
 {
      cout << "과정명 입력 : ";
      cin  >> course;

      cou.SetCourseName(course);
      cou.GetCourseName(c_name);
      while (1)
      {
           cout << "수강학생 이름 입력 : ";
           cin  >> name;

           cou.SetStudentName(name);
           cou.GetStudentName(t_name);
           cout << "계속하시겠습니까? (y/n) ";
           cin  >> ch;
     
           if ( ch == 'n' || ch=='N')
           {
                cout << "새로운 과정을 입력하시겠습니까? (y/n) ";
                cin >> ch;
                break;
           }
   
      }
      stu_count[i]=cou.Get_stu_Count();

      if( ch == 'n' || ch == 'N')
           break;
      i++;
     }
     cou_Count=cou.Get_cou_Count();
 
 


 for(int i=0; cou_Count > i; i++)
 {
  
  cout <<"======================="<<endl;
  cout << "과목명 : " << c_name[i] << endl;
  cout << "수강생 목록 " << endl;
  for(int j=0; stu_count[i] > j; j++)
  {

   cout << j+1 << ". " << t_name[i][j] << endl;
  }
 }


 

}

 

 

 

이건데 지금 거의 다 했어....

 

과목이랑 이름 입력하고 다 잘되고 출력도 되는데

1과목만 입력하면 잘되는데

 

2과목 이상 입력하게되면 제일 첫번째 입력한 과목의 학생 이름에

2번째 과목 첫번째 사람 이름이 들어가버려 탭 명령이랑 같이...

 

2,3,4 번째 과목은 전부 제대로 나오는데

1번째 입력한 과목 수상생 이름만 장애 상태가됨......

 

디버그 해보니까

Course::GetStudentName 이부분 실행할때 그렇게 되는거 같은데 도저히 못찾겠어....

 

도움좀....