簡體   English   中英

在文本文件中搜索最大值

[英]searching for the maximum in text file

每個人! 我是編程的初學者,我對 C 語言特別感興趣。如果我問的問題太明顯,我很抱歉,但是,正如我已經提到的,我只是一個新手。 另外,這是我的第一篇文章,很抱歉我不知道如何使用編輯模式

因此,假設我有一個結構學生,其中包括他們的姓名、gpa 和已完成作業的數量:

typedef struct {

   char name[20];
    
   int gpa;
    
   int assignments

} students;

我的文件的內容是:

Name          GPA        Assignments
Antonio        3              5
Christine      2              2
Veronika       3              7
Jade           1              3

我想實現函數 bestStudent,如果這個學生的 gpa 最高,它必須返回一個指向最好的學生的指針; 但是,如果有幾個學生的 gpa 最高,那么最好的學生就是 gpa 最高和作業數量最多的學生。 但是如果有幾個最好的學生同時擁有最高的 gpa 和最高的作業數量,那么該函數應該返回一個空指針。

其實我在網上搜了下如何求數組中的最大值,所以只看gpa就知道怎么實現了。 但是我如何才能查看作業的數量,例如,如果有兩個學生的 gpa 最高? 我應該將指針返回給那個學生。 假設,n 是學生人數,最多可能有 10 名學生。

    students* bestStudent (int n, students Student[10]){
      int l=0;
      int maximum = Student[l].gpa;
      for (int s=0; s<n; s++){
        if (Student[s].gpa > maximum){
          l=s;
          maximum = Student[s].gpa;
          return &Student[l];
        }
      }
      return NULL;
   }

如果有兩個或更多學生的 gpa 相同,我不明白如何檢查作業數量。 我是否需要再創建一個循環來檢查這一點? 如果這些問題對你來說很愚蠢,我真的很抱歉:)

問題本質上是你回來得太早了。 可能有多個值大於當前最大值。 讓我給你舉個例子。

假設 gpa 為 1.7、2.7、2.0、3.9、4.0。 您的代碼將看到 2.7 大於 1.7,然后返回該值,因為它更大。 這顯然是不正確的,因為我們希望 4.0 是最大值。 基本上,您只想在完成所有必要的比較后返回。 此外,您還需要進行檢查以確保學生的 gpa 最高作業數量最多。

另外,對於兩個 gpa 相同的學生,應該注意上面的解釋。 不一定有什么特別需要的。 作業數量較多的學生將被退回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM