Посчитать сумму трех последних введённых нечётных чисел
Я сделал программу, она может посчитать первые 3 нечетных числа, а как сделать чтобы она считала три последних нечетных числа из ввода??? (массивы использовать нельзя)
int n = 0;
int sum = 0;
int necet = 0;
int e = 0;
while (n <= 0)
{
Console.WriteLine("Введите количество чисел:");
n = Convert.ToInt32(Console.ReadLine());
}
for (int i = 0; i < n; i++)
{
Console.WriteLine("Введите {0} число:", i + 1);
sum = Convert.ToInt32(Console.ReadLine());
if (sum % 2 != 0)
{
necet += sum;
e++;
}
}
Console.WriteLine("Сумма первых трех чисел: {0}", necet);
Console.WriteLine(e);
Ответы (2 шт):
int n1 = 0;
int n2 = 0;
int n3 = 0;
int num = 0;
for (int i = 0; i < n; i++)
{
Console.WriteLine("Введите {0} число:", i + 1);
num = Convert.ToInt32(Console.ReadLine());
if (num % 2 != 0)
{
n1 = n2;
n2 = n3;
n3 = num;
}
}
Console.WriteLine("Сумма последних трех нечетных чисел: {0}", n1 + n2 + n3);
альтернативное решение через линк.
меньше кода, значительно хуже производительность( но в такой программе она и не имеет роли ). И, как по мне, то более четкие логические разделения действий.
var nums = List<Int>();
while(true)
{
Console.WriteLine("Введите число:");
nums.Add( Convert.ToInt32(Console.ReadLine()) );
var sumOfLast3 = nums.Where(a => a % 2 != 0 ).TakeLast(3).Sum();
Console.WriteLine($"Сумма последних 3х нечетных чисел: {sumOfLast3}");
}
Код не проверялся и может иметь мелкие логические и синтаксические ошибки
Лично мне нужно думать что и как и почему в коде у Игоря. А с моим кодом вся логика выглядит понятно, даже, при беглом взгляде - есть основная строка по которой четко видно что именно делает весь код.
Если это будет на собеседовании, так же плюсом будет показывание что ты знаешь линк (если знаешь).
Но если бы это была часть более-менее серьезной программы - я бы выбрал бы подход Игоря как более быстрый и "правильный".
Это НЕ лучшее решение чем у Игоря. Это просто альтернативное решение.