---- 이게 헤더----
#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 이부분 실행할때 그렇게 되는거 같은데 도저히 못찾겠어....
도움좀....
strcpy_s(n[cou_Count-1][i], 30, StudentName[cou_Count-1][i]);
클래스 왜 썼냐