Depois de 3 horas apanhando consegui fazer gambiarra o suficiente para conseguir fazer esse treco funcionar. A ideia do exercício é bem simples, mas é bem chatinho de acertar todos os detalhes de exibição.
using System;
using System.Globalization;
class URI {
static double Media(double[] lista)
{
double media = 0;
foreach (var item in lista)
{
media += item;
};
media = media / 10;
return media;
}
static double NotaFinal(double exame, double media)
{
return (double)((media + exame) / 2.0);
}
static void Main(string[] args) {
var entrada = Console.ReadLine().Split();
double exame = 0;
double[] valores = new double[4];
valores[0] = double.Parse(entrada[0], CultureInfo.InvariantCulture) * 2;
valores[1] = double.Parse(entrada[1], CultureInfo.InvariantCulture) * 3;
valores[2] = double.Parse(entrada[2], CultureInfo.InvariantCulture) * 4;
valores[3] = double.Parse(entrada[3], CultureInfo.InvariantCulture);
var mediaFinal = Media(valores);
Console.WriteLine($"Media: {Math.Round(mediaFinal,1,MidpointRounding.ToEven).ToString("f1", CultureInfo.InvariantCulture)}");
if (Math.Round(mediaFinal, 1, MidpointRounding.AwayFromZero) > 7.0)
{
Console.WriteLine("Aluno aprovado.");
} else if (Math.Round(mediaFinal, 1, MidpointRounding.AwayFromZero) < 5.0)
{
Console.WriteLine("Aluno reprovado.");
} else if (Math.Round(mediaFinal, 1, MidpointRounding.AwayFromZero) < 7.0 && Math.Round(mediaFinal, 1, MidpointRounding.AwayFromZero) >= 5.0)
{
Console.WriteLine("Aluno em exame.");
double.TryParse(Console.ReadLine(), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out exame);
Console.WriteLine($"Nota do exame: {exame.ToString("f1", CultureInfo.InvariantCulture)}");
double nFinal = NotaFinal(exame, mediaFinal);
if (nFinal >= 5.0)
{
Console.WriteLine("Aluno aprovado.");
Console.WriteLine($"Media final: {Math.Round(nFinal, 1, MidpointRounding.AwayFromZero).ToString("f1", CultureInfo.InvariantCulture)}");
} else
{
Console.WriteLine("Aluno reprovado.");
Console.WriteLine($"Media final: {Math.Round(nFinal, 1, MidpointRounding.AwayFromZero).ToString("f1", CultureInfo.InvariantCulture)}");
}
}
}
}