// 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 if sin(fi)<0 then k+=1; fi+=h 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 end; Writeln('Отрицательных значений- ',k)end.