Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
class:os2014f:hw5 [2014/10/10 00:21]
mhshin
class:os2014f:hw5 [2025/10/13 12:45] (current)
Line 1: Line 1:
-Student ​클래스를 ​다음과 같이 ​정의하여라. +아래처럼 정의된 Person클래스를 정의하여라. 
-  * Student ​클래스는 다음과 같은 private 데터를 저장할 수 있다. + 
-    ​- 성 (last name), string type +  * 클래스 이름: Person 
-    ​이름 (first name), string type +  * Data: 
-    ​년, integer type +    ​* 나이 ​(integer
-    ​- 수강과목 ​리스트, vector(string) ​type +    ​이름 (string) 
-  Student 클래스는 다음과 같은 public 함를 제공한. +    * 성별 (char), F=여성, M=남성 
-    ​- 생성자는 다음을 인자로 받는다. +    ​교이름 (string) 
-      ​- 성(string)이름(string+    ​* 좋아하는 것들 (vector<​string>​):​ 좋아하는것들의 ​리스트. 중복 불가 
-      ​- ​이 생성자가 불리면 학년을 1로 초기화 ​한다. 수강과목은 없음. +    * 싫어하는 것들 ​(vector<string>): 싫어하는것들의 리스트. 중복 불가 
-    ​string get_name(): ​성+빈칸+이름을 ​string으로 리턴한다. 예Shin Minho +      단, 같은 내용이 좋아하는 과 싫어하는것에 중복되어 있을 ​수  
-    ​- ​int get_year(): 학년을 리턴한다 +  * Actions: 
-    ​void promote(): 학년을 하나 증가한다. 단, 현재 4학년이면 0으로 설정하고이미 0이면 증가하지 않는다. +    ​* Constructors 
-    ​- ​bool graduated(): 학년이 0이면 참을 리턴한다. 그 외는 거짓. +      ​* Person(string ​namechar gender
-    ​void enroll(string ​classname): 주어진 ​이름의 수업을 수강한다. +        * age=1로 초기화 
-    - vector<string> get_classes(): 수강과목 리스트를 ​리턴한다. +        * gender가 '​M'​나 '​F'​가 아니면 '​F'​로 설정 
-  * Student 클래스는 ​다음과 같은 main()함수를 실행했을 때 모두 패해야 한다.+        * 학교이름은 "NO SCHOOL"​ 
 +        * 좋아하는것,​ 싫어하는것은 빈 리스트 ​초기화 
 +    ​* Getters 
 +      * string get_name(
 +      * int get_age() 
 +      * char get_gender() 
 +      * string get_favorite(int i): i번째 좋아하는것 
 +      * string ​get_dislike(int i)i번째 싫어하는것 
 +      ​* ​int get_fav_cnt(): 좋아하는것의 갯수 
 +      * int get_dis_cnt():​ 싫어하는것의 갯수 
 +    ​* Setters 
 +      * void set_name( string name ) 
 +      * void set_age( int age ) 
 +    * Checkers 
 +      * bool is_female(): 여자면 아니면 거짓 
 +      ​* ​bool is_schoolkid(): 가 7살 상, 19살 이하면 참 
 +    ​* Other functions 
 +      * void goto_school(string ​schoolname) 
 +        * 학교이름을 ​설정해준다. 단, 나이가 7살이상 19살 이하가 아니면 "NO SCHOOL"​로 
 +      * void add_favorite(string ​thing) 
 +        * thing을 좋아하는것들에 추가 ​(새로운 것만) 
 +        * 싫어하는 것들에 있으면 삭제 
 +      * void add_dislike(string thing) 
 +        * thing을 싫어하는 것들에 추가 (새로운 것만) 
 +        * 좋아하는 것들에 있으면 삭제 
 +    * Operator overloading 
 +      * operator++(prefix): 나이 1 증가 
 +      * operator>:​ 나이를 비교 
 +  
 +스트 ​방법: 이번에는 테스트 코드를 제공하지 않습니. 다만, 아래 항목들을 주의하세요
 +  * 이름과 성별, 나이가 제대로 저장되는지 
 +  * 좋아하는 리트에 중복된 것들이 없지, 싫어하는 리스트에 중복된 것들이 없는지, 두 리스트간에 중복은 없는지 
 +  * 테스트 코드는 차후에 공개예정. 지난번 제공한 check 매크로를 이용해서 자신만의 테스트를 하시기 바랍니다.  
 + 
 +제출할 것: cpphw5_<​학번>​.cpp 
 +내용: class Person 정의 ​(main함수 ​포함하지 말 것. 포함시키면 감점) 
 + 
 +채점: 채점에 사용된 테트코드에 따라서 각 check 항목마다 1점~2점 감점됨2점 항목은 난이도가 있는 항목임. 점수 배분은 차후 공개. 
  
-<​code>​ 
-#define check( s, a, b ) { \ 
-    if( a != b ) { \ 
-        cout << "## FAIL (" << s << "): " << a << " != " << b << endl; \ 
-        exit(1); \ 
-    } \ 
-    cout << "## PASS (" << s << "): " << ​ a << endl; \ 
-    } 
-    ​ 
-int main() { 
-    Student s1( "​Kim",​ "​Soochul"​ ); 
-    check( s1.get_year(),​ 1 ); 
-    check( s1.get_name(),​ "Kim Soochul"​ ); 
-    s1.promote();​ 
-    check( s1.get_year(),​ 2 ); 
-    check( s1.graduated(),​ false ); 
-    s1.enroll( "​C++"​ ); 
-    s1.enroll( "​Java"​ ); 
-    vector<​string>​ classes = s1.get_classes();​ 
-    check( classes[0], "​C++"​ ); 
-    check( classes[1], "​Java"​ ); 
-    s1.promote();​ 
-    s1.promote();​ 
-    s1.promote();​ 
-    check( s1.graduated(),​ true ); 
-} 
-</​code> ​   ​ 
-    
 
class/os2014f/hw5.1412875275.txt.gz · Last modified: 2025/10/13 12:59 (external edit) · [Old revisions]
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki