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

определение кол-ва участков м массиве - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Cторон многоугольника http://www.cyberforum.ru/cpp-beginners/thread230738.html
Многоугольник задан координатами своих вершин.Определить принадлежит ли заданная точка стороне этого многоугольника. Помогите пожалуйста!не соображу что за условие для точки( Добавлено через 2 часа 24 минуты да и как вобще можно задать эти отрезки!
C++ Изменение цвета области формы в зависимости от скролбара Задание: Написать программу которая будет изменять цвет области формы в зависимости от значений scrallbar. (3 СКРОЛБАРА) http://www.cyberforum.ru/cpp-beginners/thread230736.html
Программа отображающая сортировку массива C++
Задание: Написать программу с графическим интерфейсом отображающую сортировку массива. Все поточные значения массива должны быть отображены на форме.
C++ Ручная сортировка файлов по разрешениям
Всем добрый день. Есть список файлов в текущей папке проекта, пытаюсь забить в vector<string> modelfiles только те, что с расширением .cpp void L_CDialog::InitFileList() { WIN32_FIND_DATA winFileData; HANDLE hFile; char szPath; modelfiles.clear();
C++ Не могу доделать программу(здчу) VC++ http://www.cyberforum.ru/cpp-beginners/thread230716.html
Вообщем вот мой код, задача должна работать как на картинке, но что-то у меня не удается, помогите плиз, поставте на путь истинный =) CMyClass.h #ifndef CMYCLASS_H #define CMYCLASS_H class CMyClass{
C++ Структура Вывести список номеров неуспевающих студентов и вычислить абсолютную успешность А=(1-M/N)*100, где М - количество неуспевающих студентов, N - общее количество студентов группы. Программу реализовать, используя структуру данных. Помогите плииз. подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,693
18.01.2011, 20:02     определение кол-ва участков м массиве
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
//////////////////////////////////////////////////////////////////////////////////////
//Дан массив размера N. Определить количество участков, на которых его элементы 
//монотонно возрастают1|убывают2. 
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <numeric>
#include <string>
#include <vector>
//////////////////////////////////////////////////////////////////////////////////////
typedef int                 T_num;
typedef std::vector<T_num>  T_nums;
typedef std::string         T_str;
//////////////////////////////////////////////////////////////////////////////////////
void  count_increase_and_decrease_sections
    (
        const T_nums&  nums, 
        size_t&        increase_sections_counter,
        size_t&        decrease_sections_counter
    )
{
    T_nums  nums_adj_diff;
    std::adjacent_difference(nums.begin(), nums.end(), std::back_inserter(nums_adj_diff));
 
    struct  T_strictly_monotonic_sections_count
    {
        enum  T_arr_state
        {
            NEG,
            NIL,
            POS          
        };
        T_arr_state  arr_state_cur_;
        size_t&      increase_sections_counter_;
        size_t&      decrease_sections_counter_;
        //----------------------------------------------------------------------------
        T_strictly_monotonic_sections_count
            (
              size_t&  increase_sections_counter,
              size_t&  decrease_sections_counter
            ) 
            : arr_state_cur_              (NIL),
              increase_sections_counter_  (increase_sections_counter),
              decrease_sections_counter_  (decrease_sections_counter)
        {
            increase_sections_counter_ = 0;
            decrease_sections_counter_ = 0;
        }
        //----------------------------------------------------------------------------
        void   operator() (T_num  num)
        {
            switch(arr_state_cur_)
            {
            case NEG:
                if(num == 0)
                {
                    arr_state_cur_ = NIL;
                }
                else if(num > 0)
                {
                    arr_state_cur_ = POS;
                    ++increase_sections_counter_;
                }
                break;
 
            case NIL:
                if(num < 0)
                {
                    arr_state_cur_ = NEG;
                    ++decrease_sections_counter_;
                }
                else if(num > 0)
                {
                    arr_state_cur_ = POS;
                    ++increase_sections_counter_;
                }
                break;
 
            case POS:
                if(num == 0)
                {
                    arr_state_cur_ = NIL;                    
                }
                else if(num < 0)
                {
                    arr_state_cur_ = NEG;
                    ++decrease_sections_counter_;
                }
                break;
            }
        }
    };
 
    std::for_each
        (
            nums_adj_diff.begin() + 1, nums_adj_diff.end(), 
            T_strictly_monotonic_sections_count
                (
                    increase_sections_counter,
                    decrease_sections_counter
                )                
        );
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    srand(static_cast<unsigned>(time(0)));
    std::cout << "Введите размер массива: ";
    T_num  n = 0; 
    std::cin >> n;
 
    struct  T_gen_with_mod
    {
        const T_num MOD_;
        //-----------------------------------------------------------------------------
        T_gen_with_mod(T_num mod) : MOD_(mod)
        {}
        //-----------------------------------------------------------------------------
        T_num  operator() ()
        {
            return  rand() % MOD_;
        }
    };
 
    T_nums  nums;
    std::generate_n(std::back_inserter(nums), n, T_gen_with_mod(n / 2));
 
    std::cout << std::endl;
 
    std::copy(nums.begin(), nums.end(), 
              std::ostream_iterator<T_nums::value_type>(std::cout, "\t"));
 
    size_t  increase_sections_counter = 0;
    size_t  decrease_sections_counter = 0;
 
    count_increase_and_decrease_sections
        (
            nums, 
            increase_sections_counter,
            decrease_sections_counter
        );
 
    std::cout << std::endl
              << "Этот массив строго возрастает на "
              << increase_sections_counter
              << " участках и строго убывает на "
              << decrease_sections_counter
              << " участках."
              << std::endl;
}
 
Текущее время: 23:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru