C++輸入成績後分析統計

請問如果我需要分析輸入的成績

要從中找出最大值和最小值

可是都一直算不出來

可以請大大們幫我解答嗎

下面是我的程式碼

#include "stdafx.h"

#include <iostream>

using namespace std ;

int _tmain(int argc, _TCHAR* argv[])

{double dSum=0,dScore=0,dAve=0,dMax=0,dMin=0;

int iNum=0,iFail=0;

char cYN;

cout << "Please enter your score(輸入999結束) : ";

cin >> dScore;

while (dScore != 999)

{

if (dScore < 60)

iFail++;

dSum = dSum + dScore;

cin >> dScore ;

iNum++;

if (dMin >= dScore)

dMin = dScore;

if (dScore != 999)

dScore >= dMax;

dMax = dScore;

}

dAve = dSum/iNum;

cout << "分數總和 : " << dSum << endl;

cout << "人數 : " << iNum << endl;

cout << "不及格人數 : " << iFail << endl;

cout << "分數平均 : " << dAve << endl;

cout << "最高分 : " << dMax << endl;

cout << "最低分 : " << dMin << endl;

system("pause");

return 0;

}

-----

如果我想要再開頭先出現"要繼續嗎(y/n)?"

輸入y就繼續,輸入n就結束程式

要怎麼寫?

還有如果我想要輸入一筆成績後

會跳出"要繼續嗎(y/n)?"

輸入y就繼續輸入下一筆

輸入n就結束輸入開始分析

要怎麼寫?

請各位大大幫幫我了~~~

Update:

呃......為什麼不能用匈牙利命名

不好意思因為我還是初學者所以很多都是照著老師上課所講的

Update 2:

不好意思我還要輸入999後就可以開始運算的話我應該加在哪邊

Update 3:

就是停止輸入,然後開始統計輸入的資料

2 Answers

Rating
  • 卸貨
    Lv 5
    6 years ago
    Favorite Answer

    #include <iostream>

    using namespace std;

    int main(int argc, char *argv[])

    {

    int TotalCount = 0;

    int FailCount = 0;

    double SumScore = 0;

    double MinScore = INT_MAX;

    double MaxScore = INT_MIN;

    double AveScore = 0;

    char AnswerOfContinue;

    do

    {

    double Score;

    cout << "Please enter your score : ";

    cin >> Score;

    ++TotalCount;

    SumScore += Score;

    if( Score < 60 ) ++FailCount;

    if( MinScore > Score ) MinScore = Score;

    if( MaxScore < Score ) MaxScore = Score;

    cout << "Continue? (y/n) : ";

    cin >> AnswerOfContinue;

    } while( AnswerOfContinue == 'y' );

    AveScore = SumScore / TotalCount;

    cout << "Summation : " << SumScore << endl;

    cout << "Peoples : " << TotalCount << endl;

    cout << "Failed guys : " << FailCount << endl;

    cout << "Average score : " << AveScore << endl;

    cout << "Highest score : " << MaxScore << endl;

    cout << "Lowest score : " << MinScore << endl;

    return 0;

    }

    1. 請不要使用 stdafx.h。

    2. 請不要使用 _tmain、TCHAR 等奇怪的東西。

    3. 請不要使用匈牙利命名。

    4. 給你的程式碼,有想問什麼的話一定要問。

    2015-05-20 00:24:26 補充:

    為什麼不要用匈牙利命名法?我找到下面的討論串中有人介紹的蠻詳細的,文字比較多,請自己看:

    https://www.ptt.cc/man/C_and_CPP/DBF2/DC60/DC2B/M....

    簡而言之,匈牙利命名法的出現有他的時代背景和當時的需求,他當然有優點也有缺點;

    只不過以現代的程式寫作方式來看,再加上現代強大的IDE工具等技術下,匈牙利命名的優點以不再需要且沒有必要,只剩下一堆的缺點來擾亂程式的寫作與閱讀。

    2015-05-20 00:29:04 補充:

    再多家一條:請不要在程式裡放 system("PAUSE");

    2015-05-20 09:35:27 補充:

    我發現我程式裡有個地方可能是寫太快而沒有注意到的,INT_MIN、INT_MAX可能改為DBL_MIN、DBL_MAX更合適。

    2015-05-20 13:28:41 補充:

    To John:

    我不知道你說的是不是像 libvlc_media_player_is_playing 這樣的命名?如果是的話,一般好像不會叫這個為匈牙利命名法。

    這種命名我也很愛用,不過他是把「分類名稱」放在前面修飾。以這函式為例,這是指 libvlc 程式庫下的 media_player 類別下的 is_playing 函式,與 C++ 的 namespace 和 member function 比較類似。

    這種命名法可以在很多的開源軟體上看到,不過我還真不知道這命名法有沒有個什麼稱呼?也許知道的大大可以說明一下。

    2015-05-23 18:53:53 補充:

    把判斷 y, n 的那段改成判斷分數不就得了?

  • John
    Lv 6
    6 years ago

    我喜歡匈牙利命名法, 但是, 我強烈要求, 前綴不要放型別.

    前綴放型別, 似乎是從IBM開始的實作方式(原理一樣, 但方式百百種), 後來一些大廠沿用; 型別可包含在其命名原則中卻不能完整涵蓋此命名法的用處, 只能說是其中一種實作方式.

    匈牙利命名法的精隨在於前綴字串做識別, 其識別文字採用型別, 只是諸多用法中的一種, 在時代演進中, 該用法已經不適用.

    其實我們很多人在命名時, 也都或多或少採用了匈牙利命名法, 只是一般人都以為, 只有用型別開頭才叫做匈牙利命名. 建議用抽象定義的概念去設計前綴, 這樣依然符合匈牙利命名法, 卻改善了型別前綴所衍生的問題.

Still have questions? Get your answers by asking now.