2014-01-25 3 views
0
#include <iostream> 
using namespace std; 

const int MAX_SIZE = 20; 

int main() 
{ 
    int n, a[MAX_SIZE]; // initialize array and its size 
    cin >> n;      // 
    for (int i = 0; i < n; i++)  // ===> array input 
     cin >> a[i];    // 
    int max = 0; // initializing a variable indicating the length of the longest sequence 
    int i; 
    int current = 0; // makes sure the each loop begins from where the last has concluded 
    do 
    { 
     int count = 0; // counter indicating the length of the sequence.. resets after each loop 
     for (i = current; a[i] <= a[i + 1] && i < n - 1; i++) // loops until a lower than the previous number is found or the array ends 
     { 
      count++; 
     } 
     current = i; // makes so that the next loop can start from where the last has concluded 
     if (count > max) max = count; // determines the longest "growing" sequence of numbers 
    } while (i < n); // when all of the array elements are checked the program is done 
    cout << max << endl; 
    return 0; 
} 

Мои навыки комментирования сосать, поэтому не будьте слишком тяжелы для меня. Я попытался как можно яснее объяснить, что хочу сделать с моим кодом из-за недоразумений в моих предыдущих вопросах.Длина нарастающей последовательности C++

TL; DR: Чтобы подвести итог, это (или, по крайней мере, должна быть) программа, которая находит самую длинную длину последовательности «растущих» чисел в массиве. Что означает «рост»? Последовательность, в которой каждое следующее число является либо четным, либо более высоким, чем предыдущее. Например, в 1 2 3 3 1 2 «растущая» последовательность равна 1 2 3 3, а ее длина (каков должен быть выходной). 4. Однако по какой-то неизвестной причине при компиляции и вводе массива программа зависает, не выдавая никакого вывода. Любые идеи, что может это сделать? Спасибо за помощь в продвижении !

+2

Пройдите через программу в отладчике. –

+2

Добро пожаловать в переполнение стека! Просить людей обнаружить ошибки в коде не особенно продуктивно. Вы должны использовать отладчик (или добавить заявления печати), чтобы изолировать проблему, отслеживая ход вашей программы и сравнивая ее с тем, что вы ожидаете. Как только двое расходятся, вы нашли свою проблему. (И затем, если необходимо, вы должны построить [минимальный тестовый сценарий] (http://sscce.org).) –

+0

@OliCharlesworth О, мне очень жаль. Спасибо, но что мне делать с моим вопросом? Удалить его или что-то еще? Из-за этого мне не нужна огромная волна downvotes. – user3213110

ответ

1

Неправильная линия current = i;. Вы должны начать с элемента после того, на котором вы закончили. Есть еще один, но будет легче найти, как только вы это исправите. Обе ошибки можно устранить, добавив +1 в места для причалов.

Обратите внимание, что вы действительно должен использовать отладчик, как намекали другие люди. Вероятно, это решит вашу проблему через минуту. Пожалуйста, сделайте это в следующий раз! :)

+0

Боже, ты спасатель жизни! Большое спасибо. Мне очень жаль беспокоить вас такой опасностью, но я действительно слишком устарел для программирования и нашел слишком много проблем с попыткой использовать отладчик. – user3213110

+0

Одна вещь, упомянутая в комментариях выше, заключается в том, что если вам не нравится использовать отладчик (который может быть запутанным при первом запуске программирования!), Попробуйте просто положить тонну 'cout' в свой код и выводя значения разных переменных в разных точках. Затем убедитесь, что они соответствуют тому, что вы ожидаете от них. Это в основном то, что отладчик делает для вас в любом случае, просто красивее ^^ –

Смежные вопросы