2018年3月13日 星期二

[C_MM151-易] 成績計算(C++)

[C_MM151-易] 成績計算

問題描述:
有某班級的程式設計課 , 共有五次的平時成績 , 每個人選三次最高的成績來計算 , 算出每個人的平均分數 ( 求到小數點第二位 ), 最後輸出全班的總平均值 ( 求到小數點第二位 )
輸入說明:
例如 :
學生平時考 _1平時考 _2平時考 _3平時考 _4平時考 _5
Student_0180609010070
Student_021030905070
Student_035050609090
求出全班總平均分數為 80.00
範例:
輸出輸入測試資料
Sample Input:Sample Output:
80,60,90,100,70
10,30,90,50,70
50,50,60,90,90
80.00
90,90,90,90,90
80,80,80,80,80
70,70,70,70,70
80.00
20,20,20,20,20
30,40,60,70,70
80,54,78,33,68
54.00


  1. #include <iostream>  
  2. #include <algorithm>  //sort  
  3. #include <vector>  
  4. #include <string>  
  5. #include <sstream>  
  6. #include <stdio.h>  
  7. #include <ctype.h>  
  8. #include<iomanip>  
  9. using namespace std;  
  10.   
  11. int main() {  
  12.     // [C_MM151-易] 成績計算  
  13.     string s1;  
  14.     getline(cin, s1);  
  15.     vector<double> stu1;  
  16.     stringstream ss(s1);  
  17.     string token;  
  18.     //字串切割  
  19.     while (getline(ss, token, ','))  
  20.     {  
  21.         stu1.push_back(stod(token));  
  22.     }  
  23.     sort(stu1.begin(), stu1.end());  
  24.     reverse(stu1.begin(), stu1.end());  
  25.     double stu1_ave = 0;  
  26.     for(int i = 0;i < 3;i++)  
  27.     {  
  28.         stu1_ave = stu1_ave + stu1[i];  
  29.     }  
  30.     stu1_ave = stu1_ave/3;  
  31.       
  32.     string s2;  
  33.     getline(cin, s2);  
  34.     vector<double> stu2;  
  35.     stringstream ss2(s2);  
  36.     //字串切割  
  37.     while (getline(ss2, token, ','))  
  38.     {  
  39.         stu2.push_back(stod(token));  
  40.     }  
  41.     sort(stu2.begin(), stu2.end());  
  42.     reverse(stu2.begin(), stu2.end());  
  43.     double stu2_ave = 0;  
  44.     for(int i = 0;i < 3;i++)  
  45.     {  
  46.         stu2_ave = stu2_ave + stu2[i];  
  47.     }  
  48.     stu2_ave = stu2_ave/3;  
  49.       
  50.     string s3;  
  51.     getline(cin, s3);  
  52.     vector<double> stu3;  
  53.     stringstream ss3(s3);  
  54.     //字串切割  
  55.     while (getline(ss3, token, ','))  
  56.     {  
  57.         stu3.push_back(stod(token));  
  58.     }  
  59.     sort(stu3.begin(), stu3.end());  
  60.     reverse(stu3.begin(), stu3.end());  
  61.     double stu3_ave = 0;  
  62.     for(int i = 0;i < 3;i++)  
  63.     {  
  64.         stu3_ave = stu3_ave + stu3[i];  
  65.     }  
  66.     stu3_ave = stu3_ave/3;  
  67.     double class_ave = (stu1_ave + stu2_ave + stu3_ave)/3;  
  68.     cout << fixed << setprecision(2) << class_ave << endl;  
  69.     return 0;  
  70. }  

沒有留言:

張貼留言