Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <locale.h>
- using namespace std;
- // в заданной подпоследовательности
- // найти самую длинную
- // которая является арифметической или геометрической прогрессией
- float a[10]{ 2, 4, 7, 14, 28, 56, 14, 16, 18, 20 }, n, s, d, q; // введите мне массив
- int ar_temp = 1, ar_max, geo_temp = 1, geo_max;
- int temp_d;
- float temp_q;
- int main() {
- setlocale(LC_CTYPE, "Russian");
- n = 10; //внедрить n.size()
- d = a[1] - a[0];
- q = a[1] / a[0]; // НА НУЛЬ ДЕЛИТЬ НЕЛЬЗЯ!!!!
- cout << "d = " << d << endl;
- cout << "q = " << q << endl;
- for (int i = 0; i < n; i++) {
- cout << "i = " << i << endl;
- // в арифм прогрессии минимум 3 члена
- if (d == (a[i + 1] - a[i])) {
- ++ar_temp;
- cout << "ar_temp = " << ar_temp << endl;
- if (ar_temp > ar_max) {
- ar_max = ar_temp;
- }
- cout << "\t ar_temp = " << ar_temp << endl;
- cout << "\t ar_max" << ar_max << endl;
- }
- else { ar_temp = 2; d = a[i + 1] - a[i]; } // он же из циклов не выходит, пока не пройдет n раз
- cout << "d = " << d << endl;
- // в геом прогрессии минимум 3 члена
- if (q == (a[i + 1] / a[i])) {
- geo_temp++;
- cout << "geo_temp =" << geo_temp << endl;
- cout << "" << geo_temp << endl;
- cout << a[i] << "---" << geo_temp << endl;
- if (geo_temp > geo_max) {
- geo_max = geo_temp;
- }
- else { geo_temp = 0; q = a[i + 1] / a[i]; }
- }
- cout << "geo_temp" << geo_temp << endl;
- }
- if (ar_max <= geo_max) {
- cout << ar_max << "- арифметическая прогрессия" << endl;
- }
- else { cout << geo_max << "- Геометрическая прогрессия" << endl; }
- // а если они равны, выйдет пустота
- }
- // первый и последний член в последовательность не включает
Add Comment
Please, Sign In to add comment