Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПБ Лабораторные_ работы_по дисциплине Информатика.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
756.16 Кб
Скачать

Пример выполнения

Вар.

Расчетные формулы

Исходные данные

Выводимые значения

31

Определить (k) – количество

Описание алгоритма

После ввода исходных данных a, b, XН, XК, ΔX для организации цикла по переменной Х нужно параметру цикла присвоить начальное значение Х=XН . Для вычисления значений количества и суммы обнуляем счетчики К и S . Переменной Р, которая будет хранить значение произведения, присваиваем значение 1. Организуем цикл с предусловием, критерием выхода из цикла будет достижение параметром цикла Х своего конечного значения. На каждом шаге этого цикла текущее значение параметра цикла Х выводим на экран монитора.

Для вычисления значения переменной Y проверяем область допустимых значений соответствующей функции. При этом значение знаменателя зависит от значения подкоренного выражения, находящегося в знаменателе. Поэтому сначала проверяем, чтобы подкоренное выражение было неотрицательным. Если это условие выполняется, тогда проверяем, чтобы знаменатель дроби не был равен 0. Кроме того, проверяем, чтобы аргумент логарифма был положительным. Если все условия выполняются, вычисляем значение функции Y. Вычисленное значение переменной Y выводим на экран монитора.

Для подсчета значений количества, произведения и суммы проверяем соответствующие условия. Если Y не положительный ( ), то накапливаем количество таких Y; при этом если Y отрицательный ( ), то накапливаем произведение таких Y.

В конце каждой итерации увеличиваем значение параметра цикла на шаг и все действия, составляющие тело цикла, повторяются до тех пор, пока параметр цикла не достигнет своего конечного значения. Как только условие работы цикла перестанет выполняться, цикл завершает свою работу и управление передается оператору, следующему за оператором цикла.

На последнем этапе работы алгоритма выполняется вывод значений переменных К, Р и S . Вывод выполняется за циклом, поскольку нас интересует итоговое значение каждой из переменных К, Р и S, а не процесс их накопления.

Блок-схема алгоритма решения задачи приведена на рис.2.

Блок-схема алгоритма решения задачи

Рисунок 1 Блок-схема алгоритма решения задачи

Программа решения задачи

procedure TForm1.Button1Click(Sender: TObject);

Var

a,b,Xn,Xk,dX,X,z,Y,P,S :real;

k,i,N,cod:integer;

Label M1;

begin

Val(Edit1.Text,a,cod);

if cod<>0 then

begin

ShowMessage('Ошибка ввода a');

GoTo M1;

end;

Val(Edit2.Text,b,cod);

if cod<>0 then

begin

ShowMessage('Ошибка ввода b');

GoTo M1;

end;

Val(Edit3.Text,Xn,cod);

if cod<>0 then

begin

ShowMessage('Ошибка ввода Хн');

GoTo M1;

end;

Val(Edit4.Text,Xk,cod);

if cod<>0 then

begin

ShowMessage('Ошибка ввода Xk');

GoTo M1;

end;

Val(Edit5.Text,dX,cod);

if cod<>0 then

begin

ShowMessage('Ошибка ввода dX');

GoTo M1;

end;

N:=trunc((Xk-Xn)/dX)+1;

k:=0;

P:=1;

S:=0;

StringGrid1.Cells[0,0]:='X';

StringGrid1.Cells[1,0]:='Y';

For i:=1 to N do

begin

X:=Xn+(i-1)*dX;

StringGrid1.Cells[0,i]:=FormatFloat('#0.###',X);

if sqr(a)-x>0 then z:=exp(1/3*ln(sqr(a)-x)) else

if sqr(a)-x<0 then z:=-exp(1/3*ln(abs(sqr(a)-x)))

else z:=0;

if (a+b-z>0) and (a+x>=0) then

if x+sqrt(a+x)<>0 then

begin

y:=ln(a+b-z)/(x+sqrt(a+x));

StringGrid1.Cells[1,i]:=FormatFloat('#0.###',Y);

if Y<=0 then

begin

k:=k+1;

if y<0 then P:=P*y;

end

else S:=S+y;

end

else StringGrid1.Cells[1,i]:=' Y no'

else StringGrid1.Cells[1,i]:=' Y no';

end;

Edit6.Text:=IntToStr(K);

Edit7.Text:=FormatFloat('#0.###',P);

Edit8.Text:=FormatFloat('#0.###',S);

M1: end;