• Язык: C++

    Дано:

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

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

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

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

Ответы 5

  • Приведенный вариант программы для массива, упорядоченного по возрастанию. Для массива, упорядоченного по убыванию нужно изменить строки, вместо переменной 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<
  • Да, этот сайт в комментариях обрезает символы. Должна быть строка if (( arr[k] < mxt) и (arr[k] > mx)) mx = arr[k];
    • Автор:

      penelope
    • 5 лет назад
    • 0
  • Выводить значение переменной mx cout<
    • Автор:

      keelyrqbg
    • 5 лет назад
    • 0
  • Опять обрезал символы "<<"
    • Автор:

      stout
    • 5 лет назад
    • 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

    • Автор:

      hatfield
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years