グレーディング(Zhejiang大学のマシンでの再テスト)

序文:

21.再テストに参加できるかどうかに関係なく、道路に書かれたゴミコードを記録します。もともと「AlgorithmNotes」をかじったのですが、やりすぎたので、Kingway ComputerTestGuideに変更しました。

タイトル説明:

何十万もの大学院入試を採点するのは大変な作業です。結果を可能な限り公平にするためのプロセスを設計することはさらに困難です。1つの方法は、各試験の問題を3人の独立した専門家に割り当てることです。彼らが互いに同意しない場合は、裁判官が最終決定を下すように求められます。ここで、このプロセスを支援するプログラムを作成するように求められます。問題ごとに、フルマークPと許容誤差T(<P)が与えられます。採点規則は次のとおりです。•G1とG2を取得するために、問題は最初に2人の専門家に割り当てられます。差が許容範囲内にある場合、つまり| G1-G2 |の場合 ≤Tの場合、この問題のグレードはG1とG2の平均になります。•差がTを超える場合、3番目の専門家がG3を与えます。•G3がG1またはG2のいずれかで許容範囲内にあるが、両方ではない場合、この問題のグレードはG3と最も近いグレードの平均になります。•G3がG1とG2の両方の許容範囲内にある場合、この問題のグレードは3つのグレードの最大値になります。•G3がG1とG2のどちらでも許容範囲内にある場合、ジャッジは最終評点GJを与えます。

説明を入力してください

各入力ファイルには、複数のテストケースが含まれる場合があります。
問題で説明されているように、各ケースは、P、T、G1、G2、G3、およびGJの6つの正の整数を含む行を占めます。すべてのグレードが有効であることが保証されています。つまり、[0、P]の間隔です。

出力の説明:

テストケースごとに、問題の最終グレードを1行で出力する必要があります。答えは小数点以下1桁まで正確でなければなりません。

回答:

#include<stdio.h>
#include<cmath>

int main()
{
    
    
	double P, T, G1, G2, G3, GJ;
	while (scanf("%lf%lf%lf%lf%lf%lf", &P, &T, &G1, &G2, &G3, &GJ) != EOF) {
    
    
		if (fabs(G1 - G2) <= T)
			GJ = (G1 + G2) / 2;
		else {
    
    
			if ((fabs(G3 - G2) <= T) && fabs(G3 - G2) <= T)
				GJ = fmax(fmax(G1, G2), G3);
			else 
				if ((fabs(G3 - G2) > T) && fabs(G3 - G2) > T);
			else {
    
    
				if (G3 - G1 > G3 - G2)
					GJ = (G3 + G2) / 2;
				else
					GJ = (G3 + G1) / 2;
			}
		}
		printf("%.1lf\n", GJ);
	}
	return 0;
}

おすすめ

転載: blog.csdn.net/weixin_44897291/article/details/112741409