Re[16]: труд программера переоценен
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.01.06 15:57
Оценка: 2 (1)
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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.