Holey_yan

20141028_KUAS_VisualC++_Exam06

Oct 28th, 2014
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.17 KB | None | 0 0
  1. /************************************/
  2. /** 20141028 Exam 06               **/
  3. /** Maker  : Yan                   **/
  4. /** E-Mail : [email protected] **/
  5. /** Date   : 2014/10/28 pm.12:00   **/
  6. /************************************/
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10.  
  11. int main(int argc, char const *argv[])
  12. {
  13.     FILE *fptr = fopen("input.txt", "r");
  14.  
  15.     float averages[1000] = {0}; //建立平均值陣列(稍後排序)
  16.     int count[1000] = {0}; //建立每條目之顯示行陣列
  17.     int temp_i = 0; //暫存總共有幾項條目
  18.     for(int i = 0; ; i++)
  19.     {
  20.         char name[5] = {NULL};
  21.         float score1 = 0, score2 = 0;
  22.         fscanf(fptr, "%s %f %f", name, &score1, &score2);
  23.         if((name[0] == NULL) || (score1 == 0) || (score2 == 0))
  24.         {          
  25.             temp_i = i;
  26.             break;
  27.         }
  28.  
  29.         //建立平均值陣列
  30.         float average = (score1 + score2) / 2;
  31.         averages[i] = average;
  32.     }
  33.     //暫時關閉檔案資料流
  34.     fclose(fptr);
  35.  
  36.     //設定每條目之顯示行陣列(count)
  37.     int counter = 0;
  38.     for(int i = 100; i > 0; i--)
  39.     {
  40.         for(int j = 0; j < temp_i; j++)
  41.         {
  42.             if((i > averages[j]) && (averages[j] >= (i - 1)))
  43.             {
  44.                 count[j] = counter;
  45.                 counter++;
  46.                 continue;
  47.             }
  48.         }
  49.     }
  50.  
  51.     //以二分排序法排序averages(平均值)陣列
  52.     for(int i = 0; i < temp_i; i++)
  53.     {
  54.         for(int j = i; j < temp_i; j++)
  55.         {
  56.             if(averages[j] > averages[i])
  57.             {
  58.                 float temp_average = averages[j];
  59.                 averages[j] = averages[i];
  60.                 averages[i] = temp_average;
  61.             }
  62.         }
  63.     }
  64.  
  65.     /*data = 二維字串(長度50)陣列,格式如下
  66.       [Name] [Chinese score] [English score]
  67.       [Name] [Chinese score] [English score]
  68.       [Name] [Chinese score] [English score]
  69.       [Name] [Chinese score] [English score]*/
  70.     char data[1000][3][50];
  71.     fptr = fopen("input.txt", "r"); //再次開啟檔案資料
  72.     //再次進行寫入data 以做後續輸出動作
  73.     for(int i = 0; i < temp_i; i++)
  74.         fscanf(fptr, "%s %s %s", data[count[i]][0], data[count[i]][1], data[count[i]][2]);
  75.  
  76.     //輸出資料
  77.     for(int i = 0; i < temp_i; i++)
  78.         printf("Name: %s.\n  Chinese score: %s, English score: %s. Score average is: %.1f\n", \
  79.             data[i][0], data[i][1], data[i][2] , averages[i]);
  80.  
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment