Язык: C++Дано:Неупорядоченный массив arr из n натуральных чисел.Индекс j (1

0 голосов
83 просмотров

Язык: C++Дано:Неупорядоченный массив arr из n натуральных чисел.Индекс j (1<=j<=n)Требуется найти такое число, которое при упорядоченном по убыванию массиве находилось на arr[j-1].Запрещено создавать новые и упорядочивать старый массив.


Информатика (3.5k баллов) | 83 просмотров
0

В чем сложность ввести элементы, а потом по заданом индексе, который вводит юзер вывеси элемент?

0

В конце условия было написано: "не создавать новые массивы и не упорядочивать старый". Также требуется вывести элемент массива, который бы былв упорядоченном по убыванию массиве с индексом (j-1)

0

Все это в условии описано

0

Допустим у вас размерность 5

0

j-1 это 0 либо 1 либо 2 либо 3 либо 4 - индексы элементов

0

Да

0

Допустим массив размерностью 5Элементы: {2, 1, 5, 3, 4}Вывести j=3Выводится 3 т.к. оно является третьим по уменьшению величины начиная с наибольшего элемента массива. Или при работе через упорядоченный по убыванию массив (чего делать нельзя по условию) - {5, 4, 3 ,2, 1}, элемент массива с индексом (j-1) равен 3.

0

У меня код готов

0

В C++ уже

0

У меня массив не упорядочен и при вводе индекса пользователем выводится элемент массива

Дан 1 ответ
0 голосов

#include

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

    cin>>arr[i];

    if (arr[i]

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

 }

 mnt=mn;  

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

 for (int i=2; i

    mn=mx;

    for (int k=0; k

       if ((arr[k]>mnt) && (arr[k]

    mnt=mn;

 }

 cout

 system("pause");

 return 0;

}

Ввод - вывод:

n = 10

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

j = 5

9


(9.7k баллов)
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<

0

Да, этот сайт в комментариях обрезает символы. Должна быть строка if (( arr[k] < mxt) и (arr[k] > mx)) mx = arr[k];

0

Выводить значение переменной mx cout<

0

Опять обрезал символы "<<"