Я должен сделать программу на C ++, которая может опционально управлять последовательностью от 2 до 1000 элементов. В конце программа должна отследить самые длинные увеличивающиеся или уменьшающиеся порядковые номера элемента.
Примеры:
6; 1; 2; 3; 2; 4; 1;выход: 3; (потому что: 1; 2; 3 самый длинный с 3 элементами)
6; 4; 3; 1; 5; 2; 1;вывод: 4; (потому что: 6; 4; 3; 1 самый длинный с 4 элементами)
Я устал от следующего кода и вида работы. Проблема в том, что он не может дать самый длинный, он дает номер последней последовательности каждый раз.
К сожалению, я не могу найти ошибку или проблему. Может ли кто-нибудь помочь, пожалуйста?
int counting = 1;
int counting_max = 0, counting_min = 0;
for (int i = 1; i < n; ++i) {
if(block[i] < block[i+1]) {
if(block[i]-block[i-1]>0) {
counting++;
if(counting>counting_max) {
counting_max = counting;
}}
else {
counting = 1;
}
}
if(block[i] > block[i+1]) {
if(block[i]-block[i-1]<0) {
counting++;
if(counting>counting_min) {
counting_min = counting;
}}
else {
counting = 1;
}
}
}
if(counting_max >= counting_min) {
cout<< counting_max;
}
else {
cout<< counting_min;
}
return 0;}
В моем коде я не поделился первой частью, потому что я думаю, что она работает правильно. Первый - это просто время и функция для вызова номера элемента и после точных чисел в блоке. Так что в моем коде блок содержит цифры.