Это задание: вводится последовательность целых чисел. Определить количество элементов в наиболее длинной подпоследовательности подряд идущих чисел, образующих арифметическую прогрессию. Самая БОЛЬШАЯ проблема здесь, как мне кажется, это то, что у меня не получается определить максимальный размер подпоследовательности несколько раз. Один раз вроде получается, но вот 2 и более уже не знаю, как определить.
#include <iostream>
using namespace std;
int main()
{
cout << "Enter sequency of 10 numbers which create the arithetic progression: " << endl;
int x1 = 0, x2 = 0, i = 0, counter = 1, difference = 0;
int max_size1 = 0, max_size2 = 0, MAX_SIZE = 0;
while (i <= 15)
{
if (max_size2 >= 1) max_size2 = counter;
else max_size1 = counter;
////////вводим 1й x///////////////////////////////////////////////
if (i < 15)
{
cin >> x1;
++i;
if (i >= 3) { if (counter == 1) difference = x2 - x1; }
}
else { cout << "THAT'S ALL" << endl; break; }
////////сравниваем x1 из прошлой интерации с x1 из этой интерации//
if (i >= 3)
{
if ((x1 - x2) == difference) ++counter;
else { counter = 1; if (MAX_SIZE > max_size2) max_size2 = counter; }
}
////////вводим 2й x////////////////////////////////////////////////
if (i < 15)
{
cin >> x2;
++i;
if (counter == 1) difference = x2 - x1;
}
else { cout << "THAT'S ALL" << endl; break; }
////////считаем разность прогрессии////////////////////////////////
if (i == 2) difference = x2 - x1;
////////сравниваем x1 и x2/////////////////////////////////////////
if ((x2 - x1) == difference) ++counter;
else { counter = 1; if (MAX_SIZE > max_size2) max_size2 = counter; }
////////сравниваем max_size1 и max_size2///////////////////////////
MAX_SIZE = (max_size1 > max_size2) ? max_size1 : max_size2;
}
cout << "The maximum length of similar numbers is " << MAX_SIZE << endl;
system("pause");
return 0;
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости