[英]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.