Форум программистов, компьютерный форум CyberForum.ru

Найти самую длинную последовательности чисел, упорядоченную по возрастанию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти и вывести уникальные элементы массива http://www.cyberforum.ru/cpp-beginners/thread1796815.html
3. В массиве найти элементы, которые в нем встречаются только один раз, и вывести их на экран. То есть найти и вывести уникальные элементы массива.
C++ Заполнить массив случайными числами и определить количество элементов, отличных от последнего 2. Дан массив из 50 чисел. Заполните его случайными числами. Определить, сколько в нем элементов, отличных от последнего элемента. Вывести их количество. http://www.cyberforum.ru/cpp-beginners/thread1796813.html
Объединить два заданных массива и отсортировать их по возрастанию C++
Помогите с задачами. 1. Имеются два массива данных А и B (а и в – количества элементов массива). Известно, что оба массива упорядочены по возрастанию. Необходимо написать алгоритм, проходящий по этим массивам за 1 цикл вида: Для Сч = 1 По а + в Цикл и выдающий значения обоих массивов в порядке возрастания т.е. как бы объединив оба массива и отсортировав их по возрастанию.
Задачка для новичков #2: вывести в методе класса-родителя значение данных-членов из дочернего класса C++
Вдохновленный соседней темой тоже решил задать свой вопрос таким же начинающим программистам как и я :) Все кто хочет попробовать дать ответ помещайте его под спойлер Задача: дан вот такой код class Parent { public: virtual void doSmth(void) = 0; };
C++ Как усовершенствовать программу-тест на знание астрономии? http://www.cyberforum.ru/cpp-beginners/thread1796785.html
#include <windows.h> #include <iostream> #include <string> int main() { using namespace std; setlocale(LC_ALL, "RUS");
C++ Правильная организация доступа классов к ресурсу Доброго времени суток, уважаемые программисты. У меня возникла проблема по организации доступа разных классов к одному ресурсу (объекту) Есть вот такая ситуация: class MyResource { public: void open(); void close(); } подробнее

Показать сообщение отдельно
Lexxxxy
5 / 5 / 4
Регистрация: 07.08.2016
Сообщений: 31
21.08.2016, 16:07     Найти самую длинную последовательности чисел, упорядоченную по возрастанию
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
63
64
65
66
//Программа ищет самую длинную последовательности чисел, упорядоченную по возрастанию.
#include <iostream>
#include <Windows.h>
#include <ctime>
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int size = 0, buffer = 1, maxbuffer = 0, max = 0, minElement = 0, maxElement = 0;  //объявление переменных
 
    cout << "Введите количество элементов массива: "; cin >> size;   //создание динамического массива
    int *array = new int[size];
    array[size] = {};                                               //чистка мусора
 
    srand(time(NULL));                      //
    for (int i = 0; i < size; i++)          // Заполнение массива
    {                                       // рандомными числами
        array[i] = rand() % 9;              //
        cout << array[i] << " ";            //
    }
 
    for (int i = 0; i < size; i++)          //Сам алгоритм действий:
    {                                       //Программа сравнивает последующий элемент массива с нынешним
        if (array[i+1] > array[i])          //и если он больше, то прибавляется счётчик buffer - это нужно для того
        {                                   //чтобы можно было понять из скольких чисел состоит последовательность.
            buffer++;                       //Если последующее число меньше нынешнего, то запоминается максимальное
            max = buffer;                   //количество элементов последовательности, а также ищется максимальный элемент последовательности.
            if(maxbuffer < max)             //В первом и втором случае все действия одинаковы, исключения лишь в том, что
            {                               //в первом случае счётчик прибавляется, а во втором обнуляется(если быть точным, то становится
                maxbuffer = max;            //единицей).
                maxElement = i + 1;
            }
        }
        if (array[i+1] <= array[i])
        {
            max = buffer;
            if(maxbuffer < max)
            {
                maxbuffer = max;
                maxElement = i + 1;
            }
            buffer = 1;
        }                                 
 
    }
    cout << "\n\nМаксимальная последовательность: " << maxbuffer << endl << endl;
 
    minElement = (maxElement + 1) - maxbuffer;        //Высчитывается минимальный элемент последовательности. Из максимального элемента вычитается
                                                      //максимальное количество элементов последовательности.
 
    cout << "Саммая длинная последовательности чисел: ";
    for (int i = minElement; i <= maxElement; i++)
    {
        cout << array[i] << " ";                       //Ну и вывод получившегося массива.
    }
 
 
    delete[] array;
    cin.get();
    cin.get();
    return 0;
}
Всё описано в комментариях к коду, чтобы можно было лучше понять. Наверное, можно как-то легче. На большее не додумался.
 
Текущее время: 14:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru