// PascalABC.NET 3.2, сборка 1425 от 22.04.2017
// Внимание! Если программа не работает, обновите версию!
begin
var a,b,h,fi:real;
Write('Укажите границы интервала табуляции и шаг: ');
Read(a,b,h);
var k:=0;
fi:=a;
while fi<=b+0.1*h do begin<br> if sin(fi)<0 then k+=1; fi+=h<br> end;
Writeln('Отрицательных значений- ',k)
end.
Пример
Укажите границы интервала табуляции и шаг: -6 5 0.2
Отрицательных значений- 25
Вариант для большого количества промежуточных точек, снижающий влияние накапливающейся из-за возможной неточности представления вещественных чисел, погрешности:
// PascalABC.NET 3.2, сборка 1425 от 22.04.2017
// Внимание! Если программа не работает, обновите версию!
begin
var a,b,h,fi:real;
Write('Укажите границы интервала табуляции и шаг: ');
Read(a,b,h);
var n:=Trunc((b-a)/h)+1;
var k:=0;
for var i:=1 to n do begin
fi:=a+h*(i-1); Println(fi,sin(fi));
if sin(fi)<0 then k+=1<br> end;
Writeln('Отрицательных значений- ',k)
end.