Найти третий максимальный элемент массива

Найти третий максимальный элемент массива

Нужно найти третий максимальный элемент и если он равен 0 то поменять весь массив местами (пр. 12345 54321)а если неравен 0 то сложить все нечетные числа и вывести (первоначальную матрицу, если матрицу поменяли то ее вывести,и сумму нечетный).
я новичок по си++ помогите сделать программу пожалуйста

Что есть «третий максимальный элемент»? Максимальный элемент может быть только один.
В таком массиве:

1 2 3 4 5 6 7 

«третьим максимальным элементом» является 5?

как я понел от слов учителя он имел ввиду если массив такой
4 2 5 6 7 то третий макс является 6 а если такой 1 2 3 4 5 то 3
Пр.( 1 3 2 4 5) 1 это макс потом сравниваем с 3 число 3 макс потом с 2. 2 меньше 3 значит остается 3 потом сравниваем с 4. 4 макс элемент значит это третий максимальный элемент массива

но можно найти из всего массива макс. элемент и если он равен 0 то... Скажу что не знаю как находить третий макс элемент

Ёптыть! А я-то думаю, откуда такая дебильная задачка взялась? Как же я сразу не пропер, что это школьная информатика? Уроды, мля.

Интересен способ решения этого задания для массива из двух элементов ))

есть случайный массив

int massElement=10;
int maxEl=0;
int maxEl1=0;
int maxEl2=0;

int summ=0;

int *ary = new int[massElement];
int *aryPerevernutay = new int[massElement];

for (int i=0;i<massElement;i++) 
   ary[i]=rand()%10;

ищем третий максимальный элемент, то есть запускаем цикл в котором находим сначала первый максимальный, выкидываем его, второй максимальный выкидываем его, а третий запоминаем...

for (int i=0;i<massElement;i++)
   if(ary[i]>maxEl)
         maxEl=ary[i];

нашли первый максимальный, ищем второй

for (int i=0;i<massElement;i++)
   if(ary[i]>maxEl&&ary[i]<maxEl)
         maxEl1=ary[i];

так нашли второй максимальный, третий по аналогии
.........................

// условие, если 0?
if(maxEl2==0)
{
for (int i=0;i<massElement;i++)
{
   aryPerevernutay[i]=ary[massElement-i];
if(aryPerevernutay[i]%2!=0)
   summ=aryPerevernutay[i]+summ;

}
}
else
{
for (int i=0;i<massElement;i++)
  if(ary[i]%2!=0)
   summ=ary[i]+summ;
}

думаю разберешься))))))))

Интересен способ решения этой задачки преподом с переломанными пальцами)))

Можно просто отсортировать массив по убыванию и взять первые 3 элемента.
Способ не самый оптимальный, зато простой для понимания и универсальный для любого количества элементов.

Интересен способ решения этого задания для массива из двух элементов ))

Его ведь просто нет. Или я ошибаюсь?

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.