1 / 16

C ++ 다지기 1 부

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

garima
Download Presentation

C ++ 다지기 1 부

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C++ 다지기 1부

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

  3. 1. ex_1.1_grade • 스코프(scope) 및 namespace • 스코프란 그 이름이 프로그램 상에서 의미를 갖는 범위을 말함. • 즉, std::cout는 한정된 이름으로써 :: (스코프연산자)를 사용한다. • 여기서 std는 네임스페이스를 지칭. Namespace 는 왼쪽처럼 쓸 수도 있고 오른쪽처럼 개별적으로 정의할 수도 있다.

  4. 1. ex_1.1_grade • 입출력문 • C++ 의 입력은 cout로 이루어진다. • cout << “hi”; • cout << “안녕하세요” << endl; • C++ 의 출력은 cin으로 이루어진다. • cin >> final; • cin >> midterm >> final;

  5. 1. ex_1.1_grade • end-of-file • 콘솔창에서 입력을 그만 받고자 할 때 사용한다 • ctrl + z 키를 누르면 입력을 그만 받는다. ^z 가 바로 ctrl + z 키를 누르면 나오는 동작

  6. 1. ex_1.1_grade • while 조건식을 cin 으로? • while 조건식으로 cin >> x 와 같이 입력을 받을 수 있다. • 이렇게 한다면 조건식을 테스트 할 뿐 아니라 x에 값을 읽어들이는 작업까지 한번에 처리가 가능하다. while 문 조건식 안에 입력을 받는 모습

  7. 1. ex_1.1_grade • 정밀도(자리수) 정하기 • setprecision() 함수를 이용하면 원하는 자리수 만큼 숫자를 출력할 수 있다. • 단 자릿수 출력시 출력이 끝난 후 다시 초기화를 해주어야 한다. setprecision() 을 이용해서 자리수를 출력하는 예제와 출력 결과

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

  9. 1. ex_1.2_gradeVector • 평균값 대신 중앙값 사용하기 • 중앙값이란 들어온 데이터들을 정렬해서 그 정렬된 값들중 중앙에 존재하는 값 • 중앙값을 사용하는 이유는 전체 평균에 큰 타격을 줄 수 있는 급격히 낮은 성적에 영향을 받지 않으면서 어느정도 일정한 성능을 내주기 때문. 평균값을 사용한 결과 (상) 중앙값을 사용한 결과 (하)

  10. 1. ex_1.2_gradeVector • 중앙값 사용하기 • 중앙값을 사용하기 위해서는 모든 과제성적을 읽고 저장해야 한다. 그 후 데이터를 정렬하고 그 중간에 해당하는 값을 선택하면 된다. • 하지만 기존의 방식의 경우 한번 입력받고 저장하고 다시한번 입력받고 저장하는 작업을 반복한뒤 최종적으로 sum / count 형식으로 나누어주기 때문에 중앙값을 구할 수 없다. • 보편적으로 배열을 떠올릴 수 있지만 우리는 vector 를 이용하여 계산한다.

  11. 1. ex_1.2_gradeVector • Vector • vector 은 주어진 타입에 대한 일련의 값을 저장하고 추가적인 값들을 허용 할 수 있도록 필요한 때에 크기가 커지며 개별값들을 효과적으로 접근 가능하다. • 즉, 우리가 잘 알고 있는 배열과링크드리스트의 장점을 합쳐놓았다고 볼 수 있다. vector 의 맴버함수

  12. 1. ex_1.2_gradeVector • Vector 입력받기 • Vector 안에 있는 push_back 함수를 이용하여 입력받은 데이터를 순차적으로 저장. 기존 ex_1.1의 입력부분 (좌), vector를 이용한 입력(우)

  13. 1. ex_1.2_gradeVector • Vector 사이즈 확인 • 중간 값을 알기전에 vector 의 사이즈를 확인한다. • 여기서 typedef 는 코드 작성시 typedef 를 넣게 되면 그 이름을 변수로 사용하는 것이 아니라 해당 타입에 대한 동의어로써 정의 하는것. 즉 vec_sz 라는 변수의 이름을 vector<double>::size_type 에 대한 동의어로 정의한 것이다. • 아래 구문은 vec_sz 라는 변수를 vector 이 제공하는 vector이 담을 수 있는 최대 값을 저장할 수 있는 적절한 타입인 size_type 로 정의한다. 라고 해석할 수 있다. • 왜 int 형을 사용하지 않고 vector 클래스가 제공하는 size_type 를 사용하는가? • 그 이유는 vec_sz 의 값은 homework 의 크기에 따라 달라지는데 만일 homework 의 값이 int 형으로 표현 가능한 길이보다 더욱더 큰 값을 가지고 있다면 int 형으로는 그 값을 감당 할 수 없기 때문에 미리 정의한 타입을 사용하는 것이 좋은 방법이다. homework 라는 백터의 사이즈를 확인하는 구문

  14. 1. ex_1.2_gradeVector • Vector 정렬 • sort 를 이용하여 오름차순으로 데이터를 정렬하고 중간위치를 찾는다. sort 함수를 이용하여 백터의 값을 정렬

  15. 1. ex_1.2_gradeVector • 중간값을 찾기 위한 삼항연산자 • 데이터가 정렬되고 나면 중간값을 찾을 수 있는데 중간값을 구하는 방법은 데이터의 개수가 짝수일 때, 홀수일 때 두가지 경우로 나눌 수 있다. • if 와 else 로 나눠서 사용할 수도 있지만 우리는 코드를 간결하게 하기 위해삼항연산자를 사용한다. • 삼항연산자 아래와 같은 형식으로 동작한다 • (조건문) ? (참인 경우) : (거짓인 경우) 3항 연산자를 사용하여 homework 의 중간 값을 구한다

  16. 1. ex_1.3_gradeVector • 문제 • 여러개의 정수 값을 읽어들여 먼저 모든 수를 출력하고 그 다음에 그 중 가장 큰 네개의 값들만 출력하시오.

More Related