Calificación (prueba de la Universidad de Zhejiang en la máquina)

Prefacio:

21. Independientemente de si puede ingresar a la nueva prueba o no, registre el código de basura escrito en el camino. Originalmente mordí "Notas de algoritmo", pero sentí demasiado para hacerlo, así que lo cambié a una guía de prueba manual.

Descripción del Título:

Calificar cientos de miles de exámenes de ingreso para graduados es un trabajo duro. Es incluso más difícil diseñar un proceso para que los resultados sean lo más justos posible. Una forma es asignar cada problema de examen a 3 expertos independientes. Si no están de acuerdo entre sí, se invita a un juez a tomar la decisión final. Ahora se le pide que escriba un programa para ayudar en este proceso. Para cada problema, se proporciona una P de puntuación completa y una tolerancia T (<P). Las reglas de calificación son: • Primero se asignará un problema a 2 expertos, para obtener G1 y G2. Si la diferencia está dentro de la tolerancia, es decir, si | G1 - G2 | ≤ T, la nota de este problema será el promedio de G1 y G2. • Si la diferencia supera T, el 3er experto dará G3. • Si G3 está dentro de la tolerancia con G1 o G2, pero NO con ambos, entonces la calificación de este problema será el promedio de G3 y la calificación más cercana. • Si G3 está dentro de la tolerancia con G1 y G2, entonces la calificación de este problema será la máxima de las tres calificaciones. • Si G3 se encuentra dentro de la tolerancia sin G1 ni G2, un juez dará la calificación final GJ.

Ingrese descripción

Cada archivo de entrada puede contener más de un caso de prueba.
Cada caso ocupa una línea que contiene seis números enteros positivos: P, T, G1, G2, G3 y GJ, como se describe en el problema. Se garantiza que todas las calificaciones sean válidas, es decir, en el intervalo [0, P].

Descripción de salida:

Para cada caso de prueba, debe generar la calificación final del problema en una línea. La respuesta debe tener una precisión de 1 decimal.

responder:

#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;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_44897291/article/details/112741409
Recomendado
Clasificación