Laba_infa2 (Все ЛР)
Описание файла
Файл "Laba_infa2" внутри архива находится в папке "Labs". Документ из архива "Все ЛР", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .
Онлайн просмотр документа "Laba_infa2"
Текст из документа "Laba_infa2"
Задача
Выполнить табулирование двух функций sin(x) и ln(x) от одного аргумента на заданном интервале с заданным шагом. Интервал и шаг вводить с клавиатуры. Циклическую часть организовать с помощью цикла с предусловием.
Результаты табулирования вывести в таблицу с заголовками вида:
Номер Значение Функция Функция
точки аргумента sin(x) ln(x)
1 - - -
2 - - -
... - - -
n - - -
Если какая-либо функция не определена на заданном интервале, в соответствующую колонку таблицы вывести знак дефис (-).
Для обеих функций подсчитать количество перемен знака на заданном интервале. Вывести результат внизу таблицы.
Если какая-либо функция или обе функции не меняют знак на данном интервале, вывести соответствующее сообщение.
Требования
К лабораторной работе №2 нарисовать в отчёте (карандашом) графики табулируемых функций в одних координатах.
Обоснование типов данных
Большая часть программы ведёт работу с нецелыми числами и операцией деления, так что большинству переменных следует присвоить тип double.
Обозначение | Идентификатор | Тип данных |
Координаты границ интервала | vaal1, vaal2 | double |
Шаг табулирования | step | double |
Координаты точек табулируемых функций на оси Ох | x | double |
Значения функции sin(x) (предыдущее и настоящее соответственно) | sinX, sinX1 | double |
Значения функции ln(x) (предыдущее и настоящее соответственно) | lnX, lnX1 | double |
Переменные-счётчики | num, i | word |
Код
program laba2_2;
{Выполнил Кирдин М.Д,, Вариант 9, Группа ФН12-11Б, Задание – выполнить табулирование ln(x) и sin(x) на введённом интервале и с введённым шагом. Посчитать количество перемен знака на интервале.}
var vaal1, vaal2 : double;
step : double;
x : double;
sinX, sinX1 : double
lnX, lnX1 : double;
num, i, k : word;
begin
repeat
|writeln ('Enter the interval');
|readln (vaal1, vaal2);
|if (vaal1 < vaal2) then begin
| |writeln ('Enter step');
| |readln (step);
| |if (step > 0) then num := round((vaal2 - vaal1) / step)
| |else writeln ('Incorrect step value');
|end
|else writeln ('Incorrect interval');
until (vaal1 < vaal2) and (step > 0); //расчёт количества точек, ввод интервала и шага табулирования
{Вывод шапки таблицы}
writeln ('Point #':25, 'Value of argument':25, 'Function sin(x)':25, 'Function ln(x)':25);
for i := 1 to 100 do
write ('-');
writeln ();
i := 0;
k := 0;
{Цикл, выполняющий табулирование}
while (i <= num) do
begin
|i := i + 1;
|x := vaal1 + step * (i - 1);
|if (i = 1) then
|begin //рассматриваем функции отдельно на 1 точке и на всех остальных
| |sinX := sin(x);
| |sinX1 := sin(x);
| |if (x > 0) then
| |begin //проверяем, определён ли логарифм на точке
| | |lnX := ln(x);
| | |lnX1 := ln(x);
| | |writeln ( i:25, x:25:3, sinX:25:3, lnX:25:3);
| |end
|. |else writeln ( i:25, x:25:3, sinX:25:3, '-':25); //выводим '-', если логарифм не определён на данной точке
|end
|else
| |begin
| |sinX1 := sinX;
| |sinX := sin(x);
| |if (sinX1 * sinX <= 0) and (sinX <> 0) then k := k + 1; //условие для расчёта количества перемен знаков у синуса
| |if (x > 0) then
| |begin
| | |lnX1 := lnX;
| | |lnX := ln(x);
| | |if (lnX1 * lnX <= 0) and (lnX <> 0) and (lnX1 > lnX) then k := k + 1; //условие для расчёта количества перемен знаков у логарифма
| | |writeln ( i:25, x:25:3, sinX:25:3, lnX:25:3);
| | |end
| |else writeln ( i:25, x:25:3, sinX:25:3, '-':25);
|end;
end;
{Вывод нижней части таблицы}
for i := 1 to 100 do
write ('-');
writeln ();
{Вывод количества перемен знака}
if (k <> 0) then write ('Functions has changed their sign ', k, ' times on the interval.')
else write ('Functions havent changed their sign on the interval.');
readln();
end.
Графическое представление
Интервал | Шаг | Количество перемен знака |
(-10;10) | 0.5 | 8 |
(0;100) | 10 | 9 |
(-1;1) | 0.1 | 2 |
(10;20) | 2 | 3 |
Тестовые данные
Скриншоты