SlideShare a Scribd company logo
제출일: 2011년 12월 5일
담당교수: 김 호 준
C++ Programming
1분반
C++ Final Term Project
- 소그룹 팀 배정 프로그램 -
20800577
장 호 상
팀원 : 05 김영환 07 정희준
1. Objective
36명으로 구성된 팀을 6개의 소그룹으로 배정하는 작업을 자동화 하는 프로그램을
구현한다. 이때 특정 기준에 의해 팀원들의 다양성을 최대한 고려해서 배정하도록 한다.
2. Algorithm
목록을 무작위로 썩어 각 소그룹 별로 팀 구성에 따른 평가를 실시한다. 모든 소그
룹이 특정 기준치 이상이 되면 썩는 것을 멈추고 출력하고, 그렇지 않으면 계속 썩기를 반
복한다.
3. More details
① member class
C++의 핵심기능
OOP의 기본 단위라고 할 수 있는 Class 구현
C++의 operator oveloading 구현
C++의 manipulator를 이용해 output
format을 설정 하였다.
② 전체 팀원
③ 특정 소그룹 팀원
④ 팀 배정
suffle() 함수는 member를 썩기 위한 함수이다.
이 함수에서는 30까지의 숫자 중 난수를 출력한다. 이
난수를 list array의 index로 사용하여, relist[0]에서
relist[29]까지 차례대로 복사하는 방식을 사용하였다.
다 썩고 난 뒤에는 relist의 팀 정보를 수정해 준다.
여기서 사용한 GetTickCount() 함수는 기존에 seed를
time(null)을 사용하던 것보다 좀 더 작은 단위의 시간
을 사용함으로서 한번 실행된 프로그램 안에서도 다른
수를 출력하기 위해 사용한 함수이다.
isNew 함수는 비복원 난수를 추출하기 위해 기존에 발
생한 수인지 아닌지 판단해주는 함수이다.
모든 팀의 점수가 2점 이상이면 true를 return, 2점 이하이면 false를 return. 즉 2가지 항
목 이상을 만족해야한다. 특별히 직전 팀이 모두 다른 경우는 드문 경우이므로 2점을 준다.
따라서 직전 팀이 모두 다른 경우는 다른 조건을 만족하지 않아도 2점으로 통과점수이다.
evaluation은 각 소그룹에 구성에 따라
점수를 매겨주는 함수다.
기준 1. 남녀수의 차이가 1이하이면 +1점
기준 2. 이과생 수와 문과생 수의 차이가 1이하이면 +1점
기준 3. 11학번과 10학번이 2명 이상이면 +1점
기준 4. 직전 팀이 다 다른 경우에 +2점
evaluation을 통해 각 팀의 점수를 매기
고 이 점수를 가지고 다시 썩을지 아니면
배정을 완료할지 정하는 함수이다.
말 그대로 팀 만들기 함수이다. suffle 함수를 통해 멤버를 썩으면서 모두 합격점 이상이 되
면 그 때 만들어진 팀을 최종 팀으로 결정한다. 팀 배정이 끝나면 before 팀에 현재 팀을
복사하고, relist의 값을 다시 list에 복사해주면 팀 배정이 모두 종료된다.
4. Result
위의 실행결과를 보면 알겠지만, 프로그램은 성공적으로 돌아간다. 다만 조금 무식한 방법
이 아닌가 생각해본다. 특히 운에 따라 더 빨리 배정이 끝 날 수도 있다. 또 컴퓨터 성능에
따라 조금 배정이 늦게 끝날 수도 있다. 그래도 출력되는 팀원들의 구성을 보면, 정한 기준
에 맞게 배정은 잘 이루어지고 있다.

More Related Content

More from 호상 장

장호상, 유재우 Program structure 130529
장호상, 유재우 Program structure 130529장호상, 유재우 Program structure 130529
장호상, 유재우 Program structure 130529호상 장
 
장호상, 유재우 Wbs, gant chart 130515
장호상, 유재우 Wbs, gant chart 130515장호상, 유재우 Wbs, gant chart 130515
장호상, 유재우 Wbs, gant chart 130515호상 장
 
19.컴퓨터 네트워크 program homework
19.컴퓨터 네트워크 program homework19.컴퓨터 네트워크 program homework
19.컴퓨터 네트워크 program homework호상 장
 
17.tigerteam design document
17.tigerteam design document17.tigerteam design document
17.tigerteam design document호상 장
 
15.ai term project_final
15.ai term project_final15.ai term project_final
15.ai term project_final호상 장
 
13.dsd 도어락 최종보고서_2분반 6조
13.dsd 도어락 최종보고서_2분반 6조13.dsd 도어락 최종보고서_2분반 6조
13.dsd 도어락 최종보고서_2분반 6조호상 장
 
12.dsd dicegame
12.dsd dicegame12.dsd dicegame
12.dsd dicegame호상 장
 
11.dsd alarmed clock
11.dsd alarmed clock11.dsd alarmed clock
11.dsd alarmed clock호상 장
 
10.dsd 4 bit-alu
10.dsd 4 bit-alu10.dsd 4 bit-alu
10.dsd 4 bit-alu호상 장
 
4. 공설입 로봇축구 보고서
4. 공설입 로봇축구 보고서4. 공설입 로봇축구 보고서
4. 공설입 로봇축구 보고서호상 장
 
3. 공학설계 입문 라인트레이서 보고서
3. 공학설계 입문 라인트레이서 보고서3. 공학설계 입문 라인트레이서 보고서
3. 공학설계 입문 라인트레이서 보고서호상 장
 
1.c term project report
1.c term project report1.c term project report
1.c term project report호상 장
 
18.소공 final 발표
18.소공 final 발표18.소공 final 발표
18.소공 final 발표
호상 장
 
장호상, 유재우 요구사항 분석 130501
장호상, 유재우 요구사항 분석 130501장호상, 유재우 요구사항 분석 130501
장호상, 유재우 요구사항 분석 130501호상 장
 
장호상 유재우 문제재정의-130417
장호상 유재우 문제재정의-130417장호상 유재우 문제재정의-130417
장호상 유재우 문제재정의-130417호상 장
 

More from 호상 장 (15)

장호상, 유재우 Program structure 130529
장호상, 유재우 Program structure 130529장호상, 유재우 Program structure 130529
장호상, 유재우 Program structure 130529
 
장호상, 유재우 Wbs, gant chart 130515
장호상, 유재우 Wbs, gant chart 130515장호상, 유재우 Wbs, gant chart 130515
장호상, 유재우 Wbs, gant chart 130515
 
19.컴퓨터 네트워크 program homework
19.컴퓨터 네트워크 program homework19.컴퓨터 네트워크 program homework
19.컴퓨터 네트워크 program homework
 
17.tigerteam design document
17.tigerteam design document17.tigerteam design document
17.tigerteam design document
 
15.ai term project_final
15.ai term project_final15.ai term project_final
15.ai term project_final
 
13.dsd 도어락 최종보고서_2분반 6조
13.dsd 도어락 최종보고서_2분반 6조13.dsd 도어락 최종보고서_2분반 6조
13.dsd 도어락 최종보고서_2분반 6조
 
12.dsd dicegame
12.dsd dicegame12.dsd dicegame
12.dsd dicegame
 
11.dsd alarmed clock
11.dsd alarmed clock11.dsd alarmed clock
11.dsd alarmed clock
 
10.dsd 4 bit-alu
10.dsd 4 bit-alu10.dsd 4 bit-alu
10.dsd 4 bit-alu
 
4. 공설입 로봇축구 보고서
4. 공설입 로봇축구 보고서4. 공설입 로봇축구 보고서
4. 공설입 로봇축구 보고서
 
3. 공학설계 입문 라인트레이서 보고서
3. 공학설계 입문 라인트레이서 보고서3. 공학설계 입문 라인트레이서 보고서
3. 공학설계 입문 라인트레이서 보고서
 
1.c term project report
1.c term project report1.c term project report
1.c term project report
 
18.소공 final 발표
18.소공 final 발표18.소공 final 발표
18.소공 final 발표
 
장호상, 유재우 요구사항 분석 130501
장호상, 유재우 요구사항 분석 130501장호상, 유재우 요구사항 분석 130501
장호상, 유재우 요구사항 분석 130501
 
장호상 유재우 문제재정의-130417
장호상 유재우 문제재정의-130417장호상 유재우 문제재정의-130417
장호상 유재우 문제재정의-130417
 

14.c++ final term

  • 1. 제출일: 2011년 12월 5일 담당교수: 김 호 준 C++ Programming 1분반 C++ Final Term Project - 소그룹 팀 배정 프로그램 - 20800577 장 호 상 팀원 : 05 김영환 07 정희준
  • 2. 1. Objective 36명으로 구성된 팀을 6개의 소그룹으로 배정하는 작업을 자동화 하는 프로그램을 구현한다. 이때 특정 기준에 의해 팀원들의 다양성을 최대한 고려해서 배정하도록 한다. 2. Algorithm 목록을 무작위로 썩어 각 소그룹 별로 팀 구성에 따른 평가를 실시한다. 모든 소그 룹이 특정 기준치 이상이 되면 썩는 것을 멈추고 출력하고, 그렇지 않으면 계속 썩기를 반 복한다. 3. More details ① member class C++의 핵심기능 OOP의 기본 단위라고 할 수 있는 Class 구현 C++의 operator oveloading 구현 C++의 manipulator를 이용해 output format을 설정 하였다.
  • 3. ② 전체 팀원 ③ 특정 소그룹 팀원 ④ 팀 배정 suffle() 함수는 member를 썩기 위한 함수이다. 이 함수에서는 30까지의 숫자 중 난수를 출력한다. 이 난수를 list array의 index로 사용하여, relist[0]에서 relist[29]까지 차례대로 복사하는 방식을 사용하였다. 다 썩고 난 뒤에는 relist의 팀 정보를 수정해 준다. 여기서 사용한 GetTickCount() 함수는 기존에 seed를 time(null)을 사용하던 것보다 좀 더 작은 단위의 시간 을 사용함으로서 한번 실행된 프로그램 안에서도 다른 수를 출력하기 위해 사용한 함수이다. isNew 함수는 비복원 난수를 추출하기 위해 기존에 발 생한 수인지 아닌지 판단해주는 함수이다.
  • 4. 모든 팀의 점수가 2점 이상이면 true를 return, 2점 이하이면 false를 return. 즉 2가지 항 목 이상을 만족해야한다. 특별히 직전 팀이 모두 다른 경우는 드문 경우이므로 2점을 준다. 따라서 직전 팀이 모두 다른 경우는 다른 조건을 만족하지 않아도 2점으로 통과점수이다. evaluation은 각 소그룹에 구성에 따라 점수를 매겨주는 함수다. 기준 1. 남녀수의 차이가 1이하이면 +1점 기준 2. 이과생 수와 문과생 수의 차이가 1이하이면 +1점 기준 3. 11학번과 10학번이 2명 이상이면 +1점 기준 4. 직전 팀이 다 다른 경우에 +2점 evaluation을 통해 각 팀의 점수를 매기 고 이 점수를 가지고 다시 썩을지 아니면 배정을 완료할지 정하는 함수이다.
  • 5. 말 그대로 팀 만들기 함수이다. suffle 함수를 통해 멤버를 썩으면서 모두 합격점 이상이 되 면 그 때 만들어진 팀을 최종 팀으로 결정한다. 팀 배정이 끝나면 before 팀에 현재 팀을 복사하고, relist의 값을 다시 list에 복사해주면 팀 배정이 모두 종료된다. 4. Result 위의 실행결과를 보면 알겠지만, 프로그램은 성공적으로 돌아간다. 다만 조금 무식한 방법 이 아닌가 생각해본다. 특히 운에 따라 더 빨리 배정이 끝 날 수도 있다. 또 컴퓨터 성능에 따라 조금 배정이 늦게 끝날 수도 있다. 그래도 출력되는 팀원들의 구성을 보면, 정한 기준 에 맞게 배정은 잘 이루어지고 있다.