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

Определить, образуют ли элементы массива прогрессию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Измерение времени работы кода http://www.cyberforum.ru/cpp-beginners/thread1251901.html
Нужно подсчитать время выполнения кода. данный отрывок сортирует массив. если размер массива маленький, то выводит 0. При большом размере выводит значение. Собственно не пойму как решить проблему при маленьких размерах массива. clock_t begin, end; double time_spent; begin = clock(); int tmp; for (int i = 1; i < aSize; i++) { tmp=arr; for (int j=i-1;j>=0;j--) {
C++ Построение описания класса, создание и уничтожение объектов этого класса Построить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть возможность раздельного изменения составных частей адреса, создания и уничтожения объектов этого класса. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса. http://www.cyberforum.ru/cpp-beginners/thread1251885.html
Контрольные суммы C++
Добрый день! Есть такая задача: Дан битовый поток, найти в нем контрольные суммы и рассчитать их с помощью различных алгоритмов (алгоритмы необходимо также реализовать программно на языке C/С++ ).Хотелось бы услышать масштаб работы и советы по её выполнению. Заранее спасибо!
Задать рандом в диапазоне с шагом C++
У меня есть диапазон и шаг и шаг de(Я их считаю в программе). Помогите задать рандом. Я пробовал вот так: double M; for (i = 0; i<=lab1.n; i++){ M= smin + rand() % (smax -smin); } for (i = 0; i<=lab1.n; i++){ printf("%.2f\n",M);} Но тут без шага и оно не работает((( Помогите пожалуйста. Зарание спасибо.
C++ Пароль при входе в программу http://www.cyberforum.ru/cpp-beginners/thread1251847.html
Пишу небольшую базу данных с информацией не для третьих лиц, программа консольная, и что бы другие люди не смогли увидеть информацию содержащийся в этой базе я написал это : #include <iostream> using namespace std; int main() { setlocale (0, ""); // для того что бы отображались русские буквы int pass; // переменная для пароля
C++ Не могу понять стоит ли продолжать изучать с++ Дело в том что я изучаю с++, но с каждым днём всё больше убеждаюсь в том что ничего кроме математический вычислений и примитивного подстраивания под эти математические вычисления дабы получить хоть что то интересного в консоли я не получил, стоит ли дальше учиться кодить на с++ или нет? или через консоли в дальнейшем пойдут интересные программы которые + ко всему и с графическим интерфейсом?... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,667
08.09.2014, 20:58     Определить, образуют ли элементы массива прогрессию
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
/////////////////////////////////////////////////////////////////////////////////////////
//Проверить образует ли элементы целочисленного массива N арифметическую1 
//и геометрическую 2 прогрессию, Если да то вывести разность1 знаменатель 2 прогрессии, 
//если нет- вывести 0
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <iterator>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::vector < int   >   T_int_vector;
/////////////////////////////////////////////////////////////////////////////////////////
enum    T_progression_state
{
    NOT_PROGRESSION_STATE,
    ARITHMETIC_PROGRESSION_STATE,
    GEOMETRIC_PROGRESSION_STATE,
    ARITHMETIC_AND_GEOMETRIC_PROGRESSION_STATE
};
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_get_progression_state_and_parameter
{
    int     elem_counter_;
    bool    is_arithm_progr_;
    bool    is_geom_progr_;
    double  prev_val_;
    double  progression_difference_;
    double  progression_common_ratio_;
    //-----------------------------------------------------------------------------------
    T_get_progression_state_and_parameter()
        :
        elem_counter_       (),
        is_arithm_progr_    ( true ),
        is_geom_progr_      ( true )
    {}
    //-----------------------------------------------------------------------------------
    void    operator()  ( double   val )
    {
        if( elem_counter_ == 1 )
        {
            progression_difference_     =   val - prev_val_;
            progression_common_ratio_   =   val / prev_val_;
        }
        else if( elem_counter_ > 1 )
        {
            is_arithm_progr_    =       is_arithm_progr_
                                    &&  val - prev_val_     ==  progression_difference_;
 
            is_geom_progr_      =       is_geom_progr_
                                    &&  val / prev_val_     ==  progression_common_ratio_;
        }//else
        prev_val_   =   val;
        ++elem_counter_;
    }
    //-----------------------------------------------------------------------------------
};
/////////////////////////////////////////////////////////////////////////////////////////
void    check_whether_vector_is_progression_and_set_state_and_progression_parameter
    (
        T_int_vector    const   &   int_vector,
        T_progression_state     &   progression_state,
        double                  &   progression_parameter
    )
{
    auto    progression_state_and_parameter
        =   std::for_each
                (
                    int_vector.begin                        (),
                    int_vector.end                          (),
                    T_get_progression_state_and_parameter   ()
                );
 
    if( progression_state_and_parameter.is_arithm_progr_ )
    {
        if( progression_state_and_parameter.is_geom_progr_ )
        {
            progression_state       =   ARITHMETIC_AND_GEOMETRIC_PROGRESSION_STATE;
        }
        else
        {
            progression_state       =   ARITHMETIC_PROGRESSION_STATE;
            progression_parameter   =   progression_state_and_parameter.progression_difference_;
        }
    }
    else if( progression_state_and_parameter.is_geom_progr_ )
    {
        progression_state       =   GEOMETRIC_PROGRESSION_STATE;
        progression_parameter   =   progression_state_and_parameter.progression_common_ratio_;
 
    }//else
}
/////////////////////////////////////////////////////////////////////////////////////////
void    rand_generate_int_vector_and_sort( T_int_vector   &   int_vector )
{
    const   int     INT_VAL_MIN         =   1;
    const   int     INT_VAL_MAX         =   10;
 
    std::generate
        (
            int_vector.begin    (),
            int_vector.end      (),
 
            [ INT_VAL_MIN, INT_VAL_MAX ]    ()
            {
                return  rand() % ( INT_VAL_MAX - INT_VAL_MIN + 1 ) + INT_VAL_MIN;
            }
        );
 
    std::sort
        (
            int_vector.begin    (),
            int_vector.end      ()
        );
};
/////////////////////////////////////////////////////////////////////////////////////////
void    ptint_int_vector( T_int_vector  const   &   int_vector )
{
    std::copy
        (
            int_vector.begin                (),
            int_vector.end                  (),
            std::ostream_iterator< int >    ( std::cout, "\t" )
        );
}
/////////////////////////////////////////////////////////////////////////////////////////
void    print_vector_state_and_progression_parameter
    (
        T_progression_state     progression_state,
        double                  progression_parameter
    )
{
    switch( progression_state )
    {
    case    ARITHMETIC_PROGRESSION_STATE   :
        std::cout   <<  "Вектор является арифметической прогрессией с разностью "
                    <<  progression_parameter
                    <<  std::endl;
        break;
 
    case    GEOMETRIC_PROGRESSION_STATE   :
        std::cout   <<  "Вектор является геометрической прогрессией со знаменателем "
                    <<  progression_parameter
                    <<  std::endl;
        break;
 
    case    ARITHMETIC_AND_GEOMETRIC_PROGRESSION_STATE   :
        std::cout   <<  "Вектор является арифметической прогрессией с разностью 0"
                    <<  std::endl
                    <<  "и одновременно геометрической прогрессией со знаменателем 1."
                    <<  std::endl;
        break;
 
    default :
        std::cout   <<  "Вектор не является прогрессией."
                    <<  std::endl;
    }//swotch
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::locale::global(std::locale(""));
    srand(unsigned(time(0)));
 
    const   int             INT_VALUES_TOTAL    =   3;
    T_int_vector            int_vector( INT_VALUES_TOTAL );
    T_progression_state     progression_state;
    double                  progression_parameter;
 
    for(;;)
    {
        do
        {
            progression_state       =   T_progression_state();
            progression_parameter   =   0;
 
            rand_generate_int_vector_and_sort( int_vector );
 
            check_whether_vector_is_progression_and_set_state_and_progression_parameter
                (
                    int_vector,
                    progression_state,
                    progression_parameter
                );
        }
        while   (
                        progression_state == NOT_PROGRESSION_STATE
                    &&  rand() % 10
                );
 
        std::cout   <<  std::endl
                    <<  std::endl
                    <<  std::endl;
 
        ptint_int_vector( int_vector );
        std::cout   <<  std::endl;
 
        print_vector_state_and_progression_parameter
            (
                progression_state,
                progression_parameter
            );
        std::cout   <<  std::endl;
        system("pause");
    }//for
}
 
Текущее время: 19:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru