ВУЗ:
Составители:
Рубрика:
125
* * *
для n=5
* * * * *
*
* ****
*
* ****
для n=7
* * * * * * *
*
* * * * * * *
*
* * * * * * *
*
* * * * * * *
Пример 10.48. Напечатать таблицу функции a·sin(x)+b·cos(x) на отрезке от -
π/2 до 3π/2 с шагом π/18. Подсчитать количество смен знака в этой таблице.
Решение. Выберем длины выводимых данных (:6:3) и рассчитаем длину
печатной строки. В строку входят: стенка (|), пробел, заголовок x, который
печатается в шести позициях, так как его длина меньше длины печатаемого
значения, пробел, стенка, пробел, заголовок <число> * sin(x) + <число> * cos(x),
пробел, стенка. Будем считать, что числа во втором заголовке однозначные. В этом
случае длина заголовка 2 (17 символов)
больше длины печатаемого значения,
поэтому он учтен в длине печатной строки. В результате длина печатной строки
получилась равной 40. Структура программы будет такой: вначале программируем
вывод шапки, затем в цикле вычисляем значение функции и выводим текущую
строку таблицы. Нужно хранить предыдущее значение функции, если
произведение текущего значения функции на предыдущее меньше нуля
, то
функция сменила знак, следовательно, счетчик смен знака увеличиваем на 1.
{ фрагмент 49 }
var a,b:real; { коэффициенты функции }
x:real; { аргумент }
y:real; { функция }
y1:real; { предыдущее значение функции }
i, { счетчик для печати линии подчеркивания }
s:integer; { количество смен знака }
a1,b1:string; { коэффициенты функции в символьном виде }
begin
write('Введите A и B ');
readln(a,b);
{ печать шапки }
for i:=1 to 40 do write('-');writeln; { линия подчеркивания }
str(a:6:3,a1);str(b:6:3,b1); { коэффициенты в символьном виде }
writeln('| x | '+a1+'*sin(x)+'+b1+'*cos(x) |');
{ вывели строку заголовков
}
for i:=1 to 40 do write('-');writeln; { линия подчеркивания }
s:=0; { начальное значение счетчика смен знаков функции }
x:=-pi/2; { начальное значение аргумента }
y1:=a*sin(x)+b*cos(x); { предыдущее значение функции }
while x<=3*pi/2 do { пока не напечатали всю таблицу }
begin
y:=a*sin(x)+b*cos(x); { текущее значение функции }
writeln('| ',x:6:3,' | ',y:6:3,' |'); { вывод строки таблицы }
x:=x+pi/18; { изменили аргумент на шаг }
125
* * * * * * * * * * *
* * * * * *
* * * * * * * *
* * * * * *
* * * * * * *
для n=5 *
* * * * * для n=7 * * * * * * *
Пример 10.48. Напечатать таблицу функции a·sin(x)+b·cos(x) на отрезке от -
π/2 до 3π/2 с шагом π/18. Подсчитать количество смен знака в этой таблице.
Решение. Выберем длины выводимых данных (:6:3) и рассчитаем длину
печатной строки. В строку входят: стенка (|), пробел, заголовок x, который
печатается в шести позициях, так как его длина меньше длины печатаемого
значения, пробел, стенка, пробел, заголовок <число> * sin(x) + <число> * cos(x),
пробел, стенка. Будем считать, что числа во втором заголовке однозначные. В этом
случае длина заголовка 2 (17 символов) больше длины печатаемого значения,
поэтому он учтен в длине печатной строки. В результате длина печатной строки
получилась равной 40. Структура программы будет такой: вначале программируем
вывод шапки, затем в цикле вычисляем значение функции и выводим текущую
строку таблицы. Нужно хранить предыдущее значение функции, если
произведение текущего значения функции на предыдущее меньше нуля, то
функция сменила знак, следовательно, счетчик смен знака увеличиваем на 1.
{ фрагмент 49 }
var a,b:real; { коэффициенты функции }
x:real; { аргумент }
y:real; { функция }
y1:real; { предыдущее значение функции }
i, { счетчик для печати линии подчеркивания }
s:integer; { количество смен знака }
a1,b1:string; { коэффициенты функции в символьном виде }
begin
write('Введите A и B ');
readln(a,b);
{ печать шапки }
for i:=1 to 40 do write('-');writeln; { линия подчеркивания }
str(a:6:3,a1);str(b:6:3,b1); { коэффициенты в символьном виде }
writeln('| x | '+a1+'*sin(x)+'+b1+'*cos(x) |');
{ вывели строку заголовков }
for i:=1 to 40 do write('-');writeln; { линия подчеркивания }
s:=0; { начальное значение счетчика смен знаков функции }
x:=-pi/2; { начальное значение аргумента }
y1:=a*sin(x)+b*cos(x); { предыдущее значение функции }
while x<=3*pi/2 do { пока не напечатали всю таблицу }
begin
y:=a*sin(x)+b*cos(x); { текущее значение функции }
writeln('| ',x:6:3,' | ',y:6:3,' |'); { вывод строки таблицы }
x:=x+pi/18; { изменили аргумент на шаг }
Страницы
- « первая
- ‹ предыдущая
- …
- 121
- 122
- 123
- 124
- 125
- …
- следующая ›
- последняя »
