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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Blagodetel
10 / 10 / 6
Регистрация: 16.12.2013
Сообщений: 66
#1

Найти количество непрерывно возрастающих серий в массиве - C++

18.03.2014, 08:40. Просмотров 498. Ответов 1
Метки нет (Все метки)

Добрый день. Уже который день мучаюсь над решением задачи: В одномерном массиве нужно найти кол - во непрерывно возрастающих серий. Мне сия задача не удалась, рассчитываю на ваши идеи)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2014, 08:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти количество непрерывно возрастающих серий в массиве (C++):

Найти наименьшее количество строго возрастающих участков в массиве - C++
Мне надо написать код пожалуйста. я уже все перепробовал не получается. мне его надо отправить на кон тестер.

Найти количество содержащихся в массиве серий - C++
Помогите реше-ить задачу. Очень срочно надо. Буду благодарен. Задача: Дан файл целых чисел. Найти количество содержащихся в нем серий...

Вывести количество возрастающих последовательностей в массиве, а также длину самой длинной из них - C++
Помогите пожалуйста! Написать программу, в которой пользователь вводит элементы целочисленного массива с клавиатуры. Необходимо...

Даны два возрастающих массива x[k] и y[l]. Найти количество общих элементов - C++
Даны два возрастающих массива x и y. Найти количество общих элементов в этих массивах ( т. е. количество тех ...

В массиве записаны оценки, найти количество пятерок, количество четверок, количество троек и количество двоек - C++
В массиве записаны оценки по иностранному языку каждого из 22 учеников класса. Определить количество пятерок, количество четверок,...

Найдите количество ее возрастающих подпоследовательностей - C++
Задана последовательность целых чисел. Найдите количество ее возрастающих подпоследовательностей

1
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
18.03.2014, 11:05 #2
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
/*
В одномерном массиве нужно найти кол - во непрерывно возрастающих серий.
*/
 
#include <stdlib.h>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <iterator>
 
const int N = 20;
int get_rand(void) { return rand() % 100; }
 
int main(void)
{
    setlocale(LC_ALL, "rus");
    srand(static_cast<unsigned int>(time(NULL)));
 
    int arr[N];
    std::generate(arr, arr + N, get_rand);
 
    std::cout << "Исходный массив: ";
    std::copy(arr, arr + N, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    int series_count = 0;
    bool series_start = false;
    int last_element = arr[0];
    for (int i = 0; i < N; ++i)
    {
        if (series_start)
        {
            if (arr[i] > last_element)
                std::cout << arr[i] << ' ';
            else
            {
                ++series_count;
                series_start = false;
                std::cout << std::endl;
            }
        } else
        {
            if (arr[i] > last_element)
            {
                series_start = true;
                std::cout << "Серия №" << series_count + 1 << ": " <<
                    last_element << " " << arr[i] << " ";
                if (i == N - 1)
                    ++series_count;
            }
        }
        last_element = arr[i];
    }
 
    std::cout << std::endl;
    std::cout << "Кол-во возрастающих серий: " << series_count << '\n';
    system("pause");
}
Добавлено через 45 минут
Ну и вариант с большим применением STL.
Кликните здесь для просмотра всего текста
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
/*
В одномерном массиве нужно найти кол - во непрерывно возрастающих серий.
*/
 
#include <stdlib.h>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <iterator>
 
const int N = 20;
int get_rand(void) { return rand() % 100; }
 
class series_counter
{
public:
    series_counter(int init_value):
      series_count(0),
      series_start(false),
      last_element(init_value)
    {}
    void operator()(int val)
    {
        bool greater = (val > last_element);
        bool start_new_series = !series_start && greater;
        bool end_series = series_start && !greater;
 
        if (end_series)
            std::cout << std::endl;
        else if (start_new_series)
        {
            ++series_count;
            std::cout << "Серия №" << series_count << ": " <<
                last_element << " " << val << " ";
        } else if (greater)
            std::cout << val << ' ';
 
        series_start = greater;
        last_element = val;
    }
    int result(void) const { return series_count; }
private:
    int series_count;
    bool series_start;
    int last_element;
};
 
int main(void)
{
    setlocale(LC_ALL, "rus");
    srand(static_cast<unsigned int>(time(NULL)));
 
    int arr[N];
    std::generate(arr, arr + N, get_rand);
 
    std::cout << "Исходный массив: ";
    std::copy(arr, arr + N, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    series_counter counter = std::for_each(arr, arr + N, series_counter(arr[0]));
 
    std::cout << std::endl;
    std::cout << "Кол-во возрастающих серий: " << counter.result() << '\n';
    system("pause");
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2014, 11:05
Привет! Вот еще темы с ответами:

Найти в массиве максимальный и минимальный элементы в массиве и их количество - C++
Помогите, пожалуйста, начал осваивать c++...Не могу справиться с такой задачей: Написать программу, которая вводит с клавиатуры массив...

Определить количество серий, состоящих из квадратов натуральных чисел - C++
В целочисленном массиве определить количество серий, состоящих из квадратов натуральных чисел. Что такое натуральное число - понятно,...

Найти минимум среди максимумов всех возрастающих подпоследовательностей - C++
Сама задача полностью В потоке ввода данных записана последовательность целых чисел, последнее из которых 0. Найти минимум среди...

Процедуры и массив (создать, заполнить, вывести, подсчитать количество неубывающих серий) - C++
Помогите написать программу. Нужны создать массив ( к примеру 10 элементов) и несколько процедур к нему. 1. Заполнить массив. 2....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru