Другие языки программирования и технологии

Помогите устранить ошибку.

Дан векторP=(p1,p2,...pm). Вычислить среднее арифметическое отрицательных элементов вектора. Program SR_AR; {заголовок программы} Cоnst M=100; Var I,N : Integer; {блок описания данных} S,PSR : Real; P : Array[1..M] of Real; Begin {начало операторов программы} Read(N); {ввод значения N ≤100 с клавиатуры} For I:=1 To N Do {оператор цикла} Read(P); {Ввод значений Pi} S:=0; {обнуление суммы} For I:=1 To N Do {оператор цикла} If ( P<0 Then S:=S+D; {нахождение суммы Pi} PSR:=S/N; {нахождение среднего PSR} Writeln('PSR=',PSR:6:2) End
Program SR_AR; {заголовок программы}
Cоnst M=100;
Var I,N,K : Integer; {блок описания данных}
S,PSR : Real;
P : Array[1..M] of Real;
Begin {начало операторов программы}
Read(N); {ввод значения N <=100 с клавиатуры}
For I:=1 To N Do {оператор цикла}
Readln(P{i}); {Ввод значений Pi, только скобочки другие надо, квадратные}
S:=0; {обнуление суммы}
K:=0; {обнуление количества}
For I:=1 To N Do {оператор цикла}
If P<0 Then
begin
S:=S+D; {нахождение суммы Pi}
Inc(K); {увеличиваем кол-во}
end;
If K=0 then
write('Нет элементов отрицательных');
else
begin
PSR:=S/K; {нахождение среднего PSR}
Writeln('PSR=',PSR:6:2);
end;
End.

** кроме скобки есть ещё и логическая ошибка: твоя программа считает сейчас не совсем то, что требуется.. . см. моё решение
ДЧ
Дмитрий Чеполдин
13 113
Лучший ответ
Сергей Власов Что такое D?
Убери скобку после if
Зачем писать тупые комментарии:
{заголовок программы} - и дураку ясно, что после слова program идёт заголовок программы
{ввод значения N ≤100 с клавиатуры} - лучше бы вывел подсказку типа:
Write('Введите натуральное число <= 100 : '); ReadLn(N);
А то программа после запуска показывает просто мигающий курсор.
А что он горит? Зачем? Да хрен его знает, товарищь майор!
Денис Савич
Денис Савич
79 517
Степан Антропов так в методичке написано, поменять лень...
If ( P<0 Then {Не хватает закрывающейся скобки}

End {После последнего "end" должна стоять точка}

Других ошибок не увидел.
Сергей Ханжин
Сергей Ханжин
2 668
Сергей Ханжин Туплю. У P индексы забыли, вот и не работает. Вы в комментариях пишете "Pi" а в тексте программы обращаетесь просто к P. Должно быть "P". И вместо D - тоже.
1. текст ошибки какой? 2. у последнего writeln нет ; не помню нужна ли в конце
If ( P<0 Then S:=S+D;
Что такое D?
Так же тут еще нужно посчитать количество отрицательных значений и делить не на N, а на это число.
Разве не нужно, если несколько действий в форе, ставиль после Do Begin End еще дполнительно, чтоб этот кусочек кода отграничить?