Epsilon wrote:
>
> Если не затруднит, зацените, пожалуста
1. Зачем все эти break/continue?
2. Первый else if относится к внутреннему if'у, а не к внешнему. Вообще,
в таких случаях лучше не искушать судьбу, и использовать фигурные скобки.
3. Вы инкрементируете i по два раза
4. С краями, по-моему, лучше разобраться вне цикла. Код будет чище и
эффективнее.
5. Программа упадет, если первый элемент не является локальным
максимумом: она изящно обойдет всю эту длинную цепочку if'ов, и
попробует обратиться к vec[i-1].
> unsigned int getCountLocalMax(int *vec, const unsigned int n)
> {
> if (vec == NULL || n < 2)
> return 0;
>
> unsigned int count = 0;
>
> for (unsigned int i = 0; i < n; i++)
> {
> if (i == 0)
> if (vec[0] > vec[1])
> {
> count++;
> i++;
> continue;
> }
>
> else if (i == n-1)
> if (vec[i] > vec[i-1])
> {
> count++;
> break;
> }
>
> if (vec[i] > vec[i+1] && vec[i] > vec[i-1])
> {
> count++;
> i++;
> }
> }
>
> return count;
> }
> Posted via RSDN NNTP Server 2.0