LoliDeveloper, не зная самый минимальный Вы не можете найти второй после минимального.
Чтобы найти самый минимальный надо пройти весь массив в любом случае.
Итого получаем, что надо минимум два цикла (второй цикл чтобы найти второй минимальный)
soloveid, так у меня первый min1 меньше второго всегда, а поскольку там else if, а не else, то случай с двумя одинаковыми min1 == min2 будет корректен, нам же главное 2 разных элемента, а не числа
В условии задачи не написано что там надо разное:
разные позиции этих элементов или
разные значения этих элементов.
Второе получается просто изменением условия во втором цикле.
Нужно уточнение у автора, наверное автор сам толком не знает.
soloveid, Господи, тут же интуитивно понятно что в 2 прохода это смерть. Я не силён писать без отладки, но этот код потестил
int Arr[] = { 1,1231,23123,1234,35,452356,564563,7345,235345,2345363,4523452342,3}; //гарантируется что там есть минимум 2 разных числа.
//Если нет, то можно добавить флаги
int min1 = (2 << 30) - 1, min2 = (2 << 30) - 1; // изначально очень большие числа
for (int i = 0; i < 12; ++i)
{
if (min1 % 2 == 1 && Arr[i] < min1)
{
min2 = min1;
min1 = Arr[i];
continue;
}
if (min2 % 2 == 1 && Arr[i] < min2 && Arr[i] != min1)
{
min2 = Arr[i];
}
}
не зная самый минимальный Вы не можете найти второй после минимального.
soloveid, Можно решить и за один проход. Достаточно поддерживать минимальный и второй минимальный элементы. Потом каждый новый элемент может вытеснить или второй минимальный, или самый минимальный (при этом вытесненное значение вытесняет второй минимальный). Грубо говоря добавляете новый элемент к текущим двум минимальным и выкидываете худший из трех. Сокращается до 2 условий:
Если нужны именно разные значения, то надо добавить условие во второй if.
понятно что в 2 прохода это смерть.
LoliDeveloper, Один проход, 2 прохода - разницы практически нет. Экономите только инкремент индекса и условие конца цикла. А тела циклов можно хоть вместе, хоть последовательно выполнять - от перестановки слагаемых сумма не меняется.
Раз вам эта задача не кажется очевидной, советую 2 прохода, таки использовать.