С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 10.06.2017
Сообщений: 1
1

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

10.06.2017, 12:14. Показов 2063. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан неупорядоченный массив целых чисел.
Найти самый длинный участок строгого возрастания, напечатать индексы элементов в начале и в конце этого участка.
Если имеется несколько участков строгого возрастания одной длины, можно выбрать любой из них. С++
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2017, 12:14
Ответы с готовыми решениями:

Дан массив натуральных чисел. Получить самый длинный из отрезков последовательности
Даны натуральное n, массив из натуральных чисел A(n). Рассмотреть отрезки последовательности...

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

Найти самый длинный прямолинейный свободный участок поля
Дано прямоугольное клетчатое поле. На нем задана произвольная система препятствий. Найти самый...

Найти наиболее длинный участок монотонного возрастания последовательности
Здравствуйте. Полное задание: Дан массив действительных чисел. Найти наиболее длинный участок...

1
308 / 271 / 220
Регистрация: 14.11.2016
Сообщений: 1,051
10.06.2017, 22:41 2
Лучший ответ Сообщение было отмечено MrGluck как решение

Решение

Принимай работу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <vector>
#include <ctime>
#include <algorithm>
#define     MAX_RAND    99
//------------- структура ----------------------------------------------------------------------------------------------------------------------
struct indexs_arr {
    int begin = 0,              // начальная позиция
        end = 0,                // конечная позиция
        dif = 0;                // количество чисел
    std::vector<int> digits;    // числа с диопазона от begin до end
};
//----------------------------------------------------------------------------------------------------------------------------------------------
int main(void)
{
    srand(size_t(time(NULL)));
    const int N(20);            // количество чисел в массиве
    std::vector<indexs_arr> v;  // хранит инфу. о возрастающих участках
    int arr[N];
    //---- заполняем случайными числами от 1 до MAX_RAND ---------------------------------------------------------------------------------------
    for (int i(0); i < N; i++) {
        arr[i] = 1 + rand() % MAX_RAND;
    }
    //----------- ищи числа --------------------------------------------------------------------------------------------------------------------
    bool flag(false);
    indexs_arr *index = new indexs_arr;
    for (int i(0); i < N-1; i++) {          // идем по числам из массива arr
        if (arr[i] < arr[i + 1] && !flag) {     // если число i < i + 1
            index->begin = i;                   // записываем начальную(begin) позицию
            ++index->dif;                       // добавляем +1, т.к. нашли число i < i + 1
            flag = true;                        // переводим флаг в положение : найден
            index->digits.push_back(arr[i]);    // добавляем число к числам(digits)
        }
        else if (arr[i] < arr[i + 1] && flag) { // если число  i < i+1
            ++index->dif;                       // добалвяем +1, т.к. нашли число i < i + 1
            index->digits.push_back(arr[i]);    // добавляем число к числам(digits)
        }
        else if (arr[i] > arr[i + 1] && flag) { // если последовательность нарушилась
            ++index->dif;                       // добавляем +1, т.к. нашли конечно число i > i + 1
            index->digits.push_back(arr[i]);    // добавляем конечно число к числам(digits)
            index->end = i;                     // записываем конечную(end) позицию
            flag = false;                       // переводим флаг в положение : не найдено
            v.push_back(*index);                // добавляем структуру в vector
            delete index;                       // перевыделяем память ...
            index = new indexs_arr;             // ...теперь структура снова чистая begin = end = 0 & digits empty
        }
        std::cout << arr[i] << " ";     // выводим массив на экран
    } std::cout << std::endl << std::endl;
    std::sort(v.begin(), v.end(), [](const indexs_arr &obj, const indexs_arr &other) { return obj.dif > other.dif; });  // сортируем библиотечно STL сортировкой
    //------------- вывод результата ------------------------------------------------------------------------------------------------------------
    std::cout << "| Begin: " << v[0].begin + 1 << " | " << "End: " << v[0].end + 1 << " | Difference: " << v[0].dif << std::endl << "| Digits: ";   // <<<<<<< По желанию ЭТИ строки можно закоментить...
    for (auto i : v.at(size_t(0)).digits) std::cout << i << " ";                                                                                    // <<<<<<< .. а то, что ниже раскоментить :)
    /*for (auto obj : v) {
        std::cout << "| Begin: " << obj.begin + 1 << " | " << "End: " << obj.end+1 << " | Difference: " << obj.dif << std::endl << "| Digits: ";
        for (auto i : obj.digits)
            std::cout << i << " ";
        std::cout << std::endl << std::endl;
    }*/
    //--------------------------------------------------------------------------------------------------------------------------------------------
    std::cin.get();
    return 0;
}
0
10.06.2017, 22:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2017, 22:41
Помогаю со студенческими работами здесь

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

Дан массив целых случайных чисел. Указать индексы всех нечетных чисел
Дан массив целых случайных чисел (размер массива определяет пользователь, но в диапазоне ). Указать...

Дан массив целых чисел. Найти номер последнего отрицательного числа или напечатать "Отрицательных чисел нет!"
Доброго времени суток! Дан массив целых чисел - A={ai}, где i={1,2...n}. Найти номер последнего...

Найти самый длинный палиндром предложения и напечатать его
2.В предложении слова отделяются друг от друга одним или большим числом пробелов. Палиндромом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru