1.학생의 최종점수 계산하기
1) 이름을 입력합니다.
2) 중간, 기말 시험 점수를 공백으로 분리하여 입력합니다.(실수형으로 입력가능합니다.)
3) 과제 점수를 입력하고 마지막에 EOF를 입력합니다.(과제의 개수는 몇 개든 상관 없습니다.)
4) 과제 점수의 평균을 구합니다.
5) 중간시험(20%), 기말시험(40%), 과제(40%)의 가중치를 가집니다.
6) 데이터는 소수점 3자리까지의 정확성을 가집니다.
#include <iomanip>
// 입출력 라이브러리에서 전송된 문자수나 버퍼크기를 나타내기 위해 사용
#include <ios>
#include <iostream>
#include <string>
using namespace std;
int main()
{
// 학생의 이름을 묻고 입력받음
cout << "이름을 입력하세요: ";
string name;
cin >> name;
cout << "Hello, " << name << "!" << endl;
// 중간시험과 기말시험의 점수를 묻고 입력받음
cout << "중간, 기말 시험 점수 입력(예 69.0 79.0): ";
double midterm, final;
cin >> midterm >> final;
// 과제 점수를 물음
cout << "과제 점수 입력, ""마지막에 EOF(end-of-file)입력 : ";
// 지금까지 입력된 과제 점수의 개수와 합
int count = 0;
double sum = 0;
// 입력을 위한 변수
double x;
// 불변성: 지금까지 count개 점수를 입력 받았으며 입력받은 점수의 합은 sum
while (cin >> x) {
++count;
sum += x;
}
// 결과 출력
double result = 0.2 * midterm + 0.4 * final + 0.4 * sum / count;
streamsize prec = cout.precision();
cout << "당신의 최종 점수는 \n"
<< setprecision(3) << result << endl // 총 세자리 정밀도
<< fixed << setprecision(3) << result << endl //소수점 아래 3자리
<< fixed << setprecision(prec) << result << endl //C++ 기본 6자리
<< setprecision(prec) << endl; // 후속 출력 정밀도를 초기화
return 0;
}
2 . endl 과 '\n' 그리고 문장에 포함된 '\n'의 실행속도 측정
#include <chrono>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char* argv[]) {
chrono::system_clock::time_point start = chrono::system_clock::now();
//cout << "hello" << endl; // 316us
//cout << "hello" << '\n'; // 373us
cout << "hello\n"; // 140us
chrono::duration<double> sec = chrono::system_clock::now() - start;
chrono::microseconds mic = chrono::duration_cast<chrono::microseconds>(sec);
//cout << sec.count() << endl;
cout << mic.count() << "us" << endl;
return 0;
}
- 프로그램 실행 속도 측정
#include <chrono>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char* argv[]) {
int n;
chrono::system_clock::time_point start = chrono::system_clock::now();
for(int i = 0; i < 100000000; i++){
n++;
}
chrono::duration<double> sec = chrono::system_clock::now() - start;
chrono::microseconds mic = chrono::duration_cast<chrono::microseconds>(sec);
cout << sec.count() << "s" <<endl;
cout << mic.count() << "us" << endl;
return 0;
}
출처 : https://yhc509.tistory.com/m/entry/C-11-chrono-%EC%8B%9C%EA%B0%84-%EC%B8%A1%EC%A0%95?category=938448
3.0 간단하게 vector 알아보기
https://jhnyang.tistory.com/230
3. 학생의 최종점수 계산하기
1) 이름을 입력합니다.
2) 중간, 기말 시험 점수를 공백으로 분리하여 입력합니다.(실수형으로 입력가능합니다.)
3) 과제 점수를 입력하고 마지막에 EOF를 입력합니다.(과제의 개수는 몇 개든 상관 없습니다.)
4) 과제 점수의 가운데값(median)값을 구합니다.
5) 중간시험(20%), 기말시험(40%), 과제(40%)의 가중치를 가집니다.
6) 데이터는 소수점 3자리까지의 정확성을 가집니다.
#include <algorithm>
#include <iomanip>
#include <ios>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
// 학생의 이름을 묻고 입력받음
cout << "이름을 입력하세요: ";
string name;
cin >> name;
cout << "Hello, " << name << "!" << endl;
// 중간시험과 기말시험의 점수를 묻고 입력받음
cout << "중간, 기말 시험 점수 입력(예 69.0 79.0): ";
double midterm, final;
cin >> midterm >> final;
// 과제 점수를 물음
cout << "과제 점수 입력, ""마지막에 EOF(end-of-file)입력 : ";
vector<double> homework;
double x;
// 불변성: homework는 지금까지 입력받은 과제 점수가 있음
while (cin >> x)
homework.push_back(x);
// 과제 점수의 유무 확인
typedef vector<double>::size_type vec_sz;
vec_sz size = homework.size();
if (size == 0) {
cout << endl << "입력한 과제 점수가 없습니다. 종료합니다." << endl;
return 1;
}
// 점수를 정렬
sort(homework.begin(), homework.end());
// 과제 점수의 가운데값(median) 구함
vec_sz mid = size / 2;
double median;
median = size % 2 == 0 ? (homework[mid] + homework[mid - 1]) / 2 : homework[mid];
// 결과 출력
double result = 0.2 * midterm + 0.4 * final + 0.4 * median;
streamsize prec = cout.precision();
cout << "당신의 최종 점수는 \n"
<< setprecision(3) << result << '\n' // 총 세자리 정밀도
<< fixed << setprecision(3) << result << '\n' //소수점 아래 3자리
<< fixed << setprecision(prec) << result << '\n' //C++ 기본 6자리
<< setprecision(prec) << '\n'; // 후속 출력 정밀도를 초기화
return 0;
}
'PROGRAM > C++' 카테고리의 다른 글
CH5. 문자열 분할 (0) | 2020.08.20 |
---|---|
4. 프로그램 및 데이터 구조화 -2 (0) | 2020.08.18 |
CH04. 프로그램 및 데이터 구조화 (0) | 2020.08.17 |
Hello Johns! 출력하기 (0) | 2020.08.16 |
입력한숫자만큼 별 출력하기(4자리수 한정) (0) | 2020.08.12 |