3.1 Исходное условие и уточнение постановки задачи
Заданы аргументы Xн, Хк,h,a.
Вычислить значения функции y, сумму, произведение, минимальное и максимальное значение функции у.
Уточнение постановки задачи
Исходные данные: вещественные значения xn,xk,h,a,x,y,sum,pr,min,max вещественного типа
Результаты: вывод шести чисел в символах x,y,sum,pr,min,max
3.2. Алгоритм
Алгоритм решения задачи включает одну алгоритмическую единицу (назовем ее R3) и может быть представлен в следующем виде.
Алгоритм R3
переменные
xn,xk,h,a,x,y,sum,pr,min,max: вещ; {входные параметры}
x,y,sum,pr,min,max: вещ; {выходные данные}
s:симв; {входные параметры}
начало алг
ввести (xn,xk,h,a);
x:=xn;
sum:=0;
pr:=1;
min:=100; max:=-100;
Цикл 1 начало
пока x<=xk
если x>sin(a) тогда y:= sqrt(x-sin(a)) иначе
если x<sin(a) тогда y:=sin(a)/x иначе
если x=sin(a) тогда y:=x*sin(a);
s:=s+floattostr(x)+' '+FloatToStr(y)+#13;
x:=x+h;
sum:=sum+y;
pr:=pr*y;
если y<min тогда min:=y иначе
если y>max тогда max:=y;
Цикл 1 Конец
вывести результат x,y,sum,pr,min,max на экран;
конец алг.
3.3. Программа
3.3.1. Интерфейс
3.3.2. Программа на языке Delphi
procedure TForm1.Button1Click(Sender: TObject);
var xn,xk,h,a,x,y,sum,pr,min,max:real;
s:string;
begin
xn:=StrToFloat(edit1.Text); // берем значение для xn
Xk:=StrToFloat(edit2.Text); // берем значение для xk
h:=StrToFloat(edit3.text); // берем значение для h
a:=StrToFloat(edit4.text); // берем значение для a
x:=xn; // присваиваем значение для x
sum:=0; // присваиваем значение для sum
pr:=1; // присваиваем значение для pr
min:=100; max:=-100; // присваиваем значение для min,max
while x<=xk do begin
if x>sin(a) then y:=sqrt(x-sin(a)) else // производим вычисление для y
if x<sin(a) then y:=sin(a)/x else // производим вычисление для y
if x=sin(x) then y:=x*sin(a); // производим вычисление для y
s:=s+floattostr(x)+' '+FloatToStr(y)+#13; // присваиваем значение для s
x:=x+h; // присваиваем значение для x
sum:=sum+y; // присваиваем значение для sum
pr:=pr*y; производим вычисление для pr
if y<min then min:=y else производим вычисление для min
if y>max then max:=y; производим вычисление для max
end;
label5.Caption:=s; выводим ответ для функции y,x на экран
label6.caption:='sum='+FloatToStr(sum); выводим ответ для функции sum на экран
label7.caption:='pr='+ FloatToStr(pr); выводим ответ для функции pr на экран
label8.caption:='min=' + FloatToStr(min); выводим ответ для функции min на экран
label9.caption:='max=' + FloatToStr(max); выводим ответ для функции max на экран
end;
end.
3.4. Результаты тестирования и выполнения программы
Для анализа правильности программы необходимо проверить ее работу при различных вариантах исходных данных. Тестовые примеры, выбранные для данной задачи, предусматривают проверку работы обеих ветвей программы. Результаты тестирования представлена ниже.
Исходные данные: Xn=1, Xk=5, h=3, a=4
Результаты: x=1 y=1,354 sum=3,506 min=1,325
X=4 y=2,181 pr=2,890 max=2,181
Исходные данные: Xn=2, Xk=5, h=1, a=1
Результаты: x=2 y=1,076 sum=6,362 min=1,076
X=3 y=1,469 pr=5,731 max=2,039
X=4 y=1,777
X=5 y=2,039
Исходные данные: Xn=3, Xk=4, h=2, a=2
Результаты: x=1 y=1,445 sum=1,445 min=1,445
pr=1,445 max=0
Исходные данные: Xn=8, Xk=10, h=1, a=3
Результаты: x=8 y=2,803 sum=8,919 min=2,803
X=9 y=2,976 pr=26,198 max=3,139
X=10 y=3,139
3.5. Заключение
Программа проверена. Решение задачи закончено.