Язык: C++

Дано:

Неупорядоченный массив arr из n натуральных чисел.

Индекс j (1<=j<=n)

Требуется найти такое число, которое при упорядоченном по убыванию массиве находилось на arr[j-1].

Запрещено создавать новые и упорядочивать старый массив.

Ответы

Ответ дал: srzontmp
0

#include <iostream>

using namespace std;

int main() {

 int n,j,mnt,mn,mx;

 cout<<"n = "; cin>>n;

 int arr[n];

 cout<<"array: "; cin>>arr[0];

 mn=arr[0]; mx=mn;  

 for (int i=1; i<n; i++) {

    cin>>arr[i];

    if (arr[i]<mn) mn=arr[i];

    if (arr[i]>mx) mx=arr[i];

 }

 mnt=mn;  

 cout<<"j = "; cin>>j;

 for (int i=2; i<=j; i++) {

    mn=mx;

    for (int k=0; k<n; k++)

       if ((arr[k]>mnt) && (arr[k]<mn)) mn=arr[k];

    mnt=mn;

 }

 cout<<mn<<endl;    

 system("pause");

 return 0;

}

Ввод - вывод:

n = 10

array: 11 -5 15 -8 13 -10 19 36 5 9

j = 5

9


Ответ дал: srzontmp
0
Приведенный вариант программы для массива, упорядоченного по возрастанию. Для массива, упорядоченного по убыванию нужно изменить строки, вместо переменной mnt, переменная mxt - строка 4. Изменяются строки от mnt=mn; на следующие: mxt=mx;
cout<<"j = "; cin>>j;
for (int i=2; i<=j; i++) {
mx=mn;
for (int k=0; k if ((arr[k]mx)) mx=arr[k];
mxt=mx;
}
cout<
Ответ дал: srzontmp
0
Да, этот сайт в комментариях обрезает символы. Должна быть строка if (( arr[k] < mxt) и (arr[k] > mx)) mx = arr[k];
Ответ дал: srzontmp
0
Выводить значение переменной mx cout<
Ответ дал: srzontmp
0
Опять обрезал символы "<<"
Похожие вопросы