16
[email protected] 서서서서서 CGVR Lab 서서서 C++ 서서서 1 서

C ++ 다지기 1 부

  • Upload
    garima

  • View
    57

  • Download
    3

Embed Size (px)

DESCRIPTION

C ++ 다지기 1 부. 1. ex_1.1_grade. 문제 학생의 이름을 묻고 입력 받으시오 . 그 후 중간고사와 기말고사 성적을 입력받으시오 . 그 후 과제 성적을 묻고 입력받으시오 . 단 과제 성적은 몇 개가 되던 상관 없이 입력받을 수 있도록 하시오 .( 최소 3 개 이상입력 ) 과제 입력 종료는 콘솔창에서 컨트롤 +z 키입니다 . 과제값은 평균 값 을 내서 반영하도록 하시오 . 과제 값의 비율은 중간 20% 기말 40% 과제 40% 입니다. 1. ex_1.1_grade. - PowerPoint PPT Presentation

Citation preview

Page 1: C ++  다지기  1 부

[email protected]

서경대학교 CGVR Lab

나민영

C++ 다지기 1 부

Page 2: C ++  다지기  1 부

[email protected]

1. ex_1.1_grade

□ 문제○ 학생의 이름을 묻고 입력 받으시오 . 그 후 중간고사와 기말고사 성적을 입력받으시오 . 그 후

과제 성적을 묻고 입력받으시오 . 단 과제 성적은 몇 개가 되던 상관 없이 입력받을 수 있도록 하시오 .( 최소 3 개 이상입력 ) 과제 입력 종료는 콘솔창에서 컨트롤 +z 키입니다 . 과제값은 평균 값을 내서 반영하도록 하시오 .

○ 과제 값의 비율은 중간 20% 기말 40% 과제 40% 입니다 .

Page 3: C ++  다지기  1 부

[email protected]

1. ex_1.1_grade

□ 스코프 (scope) 및 namespace ○ 스코프란 그 이름이 프로그램 상에서 의미를 갖는 범위을 말함 .

○ 즉 , std::cout 는 한정된 이름으로써 :: ( 스코프연산자 ) 를 사용한다 .○ 여기서 std 는 네임스페이스를 지칭 .

Namespace 는 왼쪽처럼 쓸 수도 있고 오른쪽처럼 개별적으로 정의할 수도 있다 .

Page 4: C ++  다지기  1 부

[email protected]

1. ex_1.1_grade

□ 입출력문○ C++ 의 입력은 cout 로 이루어진다 .

cout << “hi”; cout << “ 안녕하세요” << endl;

○ C++ 의 출력은 cin 으로 이루어진다 . cin >> final; cin >> midterm >> final;

Page 5: C ++  다지기  1 부

[email protected]

1. ex_1.1_grade

□ end-of-file ○ 콘솔창에서 입력을 그만 받고자 할 때 사용한다○ ctrl + z 키를 누르면 입력을 그만 받는다 .

^z 가 바로 ctrl + z 키를 누르면 나오는 동작

Page 6: C ++  다지기  1 부

[email protected]

1. ex_1.1_grade

□ while 조건식을 cin 으로 ?○ while 조건식으로 cin >> x 와 같이 입력을 받을 수 있다 .○ 이렇게 한다면 조건식을 테스트 할 뿐 아니라 x 에 값을 읽어들이는 작업까지 한번에 처리가

가능하다 .

while 문 조건식 안에 입력을 받는 모습

Page 7: C ++  다지기  1 부

[email protected]

1. ex_1.1_grade

□ 정밀도 ( 자리수 ) 정하기○ setprecision() 함수를 이용하면 원하는 자리수 만큼 숫자를 출력할 수 있다 .○ 단 자릿수 출력시 출력이 끝난 후 다시 초기화를 해주어야 한다 .

setprecision() 을 이용해서 자리수를 출력하는 예제와 출력 결과

Page 8: C ++  다지기  1 부

[email protected]

1. ex_1.2_gradeVector

□ 문제○ 학생의 이름을 묻고 입력 받으시오 . 그 후 중간고사와 기말고사 성적을 입력받으시오 . 그 후

과제 성적을 묻고 입력받으시오 . 단 과제 성적은 몇 개가 되던 상관 없이 입력받을 수 있도록 하시오 .( 최소 3 개 이상입력 ) 과제 입력 종료는 콘솔창에서 컨트롤 +z 키입니다 . 과제값은 중간 값을 내서 반영하도록 하시오 .

○ 과제 값의 비율은 중간 20% 기말 40% 과제 40% 입니다 .

Page 9: C ++  다지기  1 부

[email protected]

1. ex_1.2_gradeVector

□ 평균값 대신 중앙값 사용하기○ 중앙값이란 들어온 데이터들을 정렬해서 그 정렬된 값들중 중앙에 존재하는 값

○ 중앙값을 사용하는 이유는 전체 평균에 큰 타격을 줄 수 있는 급격히 낮은 성적에 영향을 받지 않으면서 어느정도 일정한 성능을 내주기 때문 .

평균값을 사용한 결과 ( 상 ) 중앙값을 사용한 결과 ( 하 )

Page 10: C ++  다지기  1 부

[email protected]

1. ex_1.2_gradeVector

□ 중앙값 사용하기○ 중앙값을 사용하기 위해서는 모든 과제성적을 읽고 저장해야 한다 . 그 후 데이터를 정렬하고

그 중간에 해당하는 값을 선택하면 된다 .

○ 하지만 기존의 방식의 경우 한번 입력받고 저장하고 다시한번 입력받고 저장하는 작업을 반복한뒤 최종적으로 sum / count 형식으로 나누어주기 때문에 중앙값을 구할 수 없다 .

○ 보편적으로 배열을 떠올릴 수 있지만 우리는 vector 를 이용하여 계산한다 .

Page 11: C ++  다지기  1 부

[email protected]

1. ex_1.2_gradeVector

□ Vector○ vector 은 주어진 타입에 대한 일련의 값을 저장하고 추가적인 값들을 허용 할 수 있도록

필요한 때에 크기가 커지며 개별값들을 효과적으로 접근 가능하다 .

○ 즉 , 우리가 잘 알고 있는 배열과 링크드리스트의 장점을 합쳐놓았다고 볼 수 있다 .

vector 의 맴버함수

Page 12: C ++  다지기  1 부

[email protected]

1. ex_1.2_gradeVector

□ Vector 입력받기○ Vector 안에 있는 push_back 함수를 이용하여 입력받은 데이터를 순차적으로 저장 .

기존 ex_1.1 의 입력부분 ( 좌 ), vector 를 이용한 입력 ( 우 )

Page 13: C ++  다지기  1 부

[email protected]

1. ex_1.2_gradeVector

□ Vector 사이즈 확인○ 중간 값을 알기전에 vector 의 사이즈를 확인한다 .

○ 여기서 typedef 는 코드 작성시 typedef 를 넣게 되면 그 이름을 변수로 사용하는 것이 아니라 해당 타입에 대한 동의어로써 정의 하는것 . 즉 vec_sz 라는 변수의 이름을 vec-tor<double>::size_type 에 대한 동의어로 정의한 것이다 .

○ 아래 구문은 vec_sz 라는 변수를 vector 이 제공하는 vector 이 담을 수 있는 최대 값을 저장할 수 있는 적절한 타입인 size_type 로 정의한다 . 라고 해석할 수 있다 .

○ 왜 int 형을 사용하지 않고 vector 클래스가 제공하는 size_type 를 사용하는가 ? 그 이유는 vec_sz 의 값은 homework 의 크기에 따라 달라지는데 만일 home-

work 의 값이 int 형으로 표현 가능한 길이보다 더욱더 큰 값을 가지고 있다면 int 형으로는 그 값을 감당 할 수 없기 때문에 미리 정의한 타입을 사용하는 것이 좋은 방법이다 .

homework 라는 백터의 사이즈를 확인하는 구문

Page 14: C ++  다지기  1 부

[email protected]

1. ex_1.2_gradeVector

□ Vector 정렬○ sort 를 이용하여 오름차순으로 데이터를 정렬하고 중간위치를 찾는다 .

sort 함수를 이용하여 백터의 값을 정렬

Page 15: C ++  다지기  1 부

[email protected]

1. ex_1.2_gradeVector

□ 중간값을 찾기 위한 삼항연산자○ 데이터가 정렬되고 나면 중간값을 찾을 수 있는데 중간값을 구하는 방법은 데이터의 개수가

짝수일 때 , 홀수일 때 두가지 경우로 나눌 수 있다 .

○ if 와 else 로 나눠서 사용할 수도 있지만 우리는 코드를 간결하게 하기 위해 삼항연산자를 사용한다 .

○ 삼항연산자 아래와 같은 형식으로 동작한다

○ ( 조건문 ) ? (참인 경우 ) : (거짓인 경우 )

3 항 연산자를 사용하여 homework 의 중간 값을 구한다

Page 16: C ++  다지기  1 부

[email protected]

1. ex_1.3_gradeVector

□ 문제○ 여러개의 정수 값을 읽어들여 먼저 모든 수를 출력하고 그 다음에 그 중 가장 큰 네개의

값들만 출력하시오 .