Вот тут:
if (c < minsum)
{
minsum = c;
if (minsum * 2 > max)
{
udvoen = minsum;
}
}
Элементы: 1 2 7 2 5.
В начале имеем max = 7, minsum = int.MaxValue.
Сначала c = 3 (1 + 2).
c < minsum (3 < int.MaxValue), поэтому запоминаем minsum = 3.
minsum * 2 < max (3 * 2 < 7), поэтому udvoen не трогаем, он по-прежнему 0.
Далее c = 9 (2 + 7).
c > minsum (9 > 3), поэтому не трогаем minsum и udvoen.
Аналогично пропускаем суммы c = 9 (7 + 2) и c = 7 (2 + 5).
В итоге имеем udvoen = 0.
Почему? Потому что мы запомнили minsum = 3, которая при удвоении НЕ превышает максимальный элемент. А все значения больше него просто не рассматривали.
По идее, проверка на minsum лишняя. Нужно сравнивать це не с minsum, а с udvoen, который в начале равен int.MaxValue, а потом постепенно уменьшается.
Я бы сделал цикл так:
for (int i = 0 ; i < array.Length-1; i++)
{
int c = array[i] + array[i+1];
if (c < minsum)
{
minsum = c;
}
if (c * 2 > max && c < udvoen)
{
udvoen = c;
}
sum++;
}
Теперь поиск минимального minsum = c никак не влияет на поиск минимального udvoen.
Моё задание :дан массив из n элементов . найти и вывести количество и наименьшую сумму пар элементов последовательности ,удвоенная сумма которых больше максимального нечётного элемента в последовательности ( пара - два подряд идущих элемента)
Вот например :
тут он всё выполнил отлично
а вот тут не отлично
вот код