Помогите найти ошибку в коде!!!

Помогите найти ошибку в коде!!!
Помогите найти ошибку в коде!!! Вот условие задачи:

Дана последовательности чисел, оканчивающаяся нулем. Определить среднее арифметическое отрицательных чисел в последовательности.
К программе необходимо написать комментарии к каждой строчке программы.

А вот сам исходный код:

[CPP]#include //Библиотека stdio.h
#include //Библиотека iostream
using namespace std; //Пространство имён std
int main () //Основа
{
setlocale (0, ""); //Русский язык
float sum=0.0; //Сумма и ср. арифм. типа float
int p[1000],k; //Массив из 1000 элементов и счётчик
printf ("Введите последовательность чисел, оканчивающуюся на 0:n"); //Запрос на ввод
for (int i=0; i< =999; i++) //Ввод чисел и распознавание их
{
printf ("Введите %d-е число:n", i+1); //Запрос на ввод числа
scanf ("%d", &p); //Считывание числа
if (p
== 0) break; //Если число равно 0, то происходит выход из цикла
if (p
< 0) //Распознавание отрицательного числа
{
sum+= p
; //Добавление отрицательного числа к сумме
k++; //Значение k увеличивается
}
}
sum= sum/k; //Вычисление ср. арифм.
printf ("Среднее арифметическое отрицательных чисел в последовательности = %dn", sum); //Вывод ср. арифм.
system ("PAUSE"); //Задержка закрытия окна до нажатия на любую клавишу
return 0; //Выход из программы и закрытие окна
}[/CPP]

  • #include < stdio.h >
    #include < stdlib.h >

    int main ( void )
    {
    int value, sum = 0, qty = 0;

    while ( 1 )
    {
    printf("enter value or 0 to end: ");
    scanf("%d", &value);

    if ( value == 0 ) break;
    if ( value < 0 )
    {
    sum += value;
    qty++;
    }

    }

    printf("average: %fn", ( float ) sum / qty);
    system("pause");
    return 0;
    }

  • Уберите [1000] ибудет намного лучше.
    Массив не запоминается, не работает, и его объявлять излишне. А сравнивать весть массив с нулём нельзя - это ошибка.
    Запись и чтение измассива требуют указания индекса, чего Вы не делали нигде.

    Счетчик надо назвать счетчиком отрицательных чисел и присвоить ему начальное значение
    k=0;
    но после цикла может оказаться, что отрицательные числа не встречались. Поэтому псевдокод (комментарии) не гарантирует правильность программы.
    Надо всегда искать исключительные ситуации, даже если они не встретились.
    поэтому если k=0 после цикла - то это исключительная ситуация, требующая после цикла вставить строку
    if (sum == 0.0) k=1;

    В остальном программа прилична, только тексты должны быть проще, короче.
    Суть программы лучше бы писать в комментариях вначале программы.
    Определяет среднее учитывая только отрицательные числа до первого введенного нуля.