Контрольная работа. Контрольная работа по дисциплине Программирование Тема Вариант 9 Исполнитель студент i курса очнозаочной формы обучения ино группы индо озб би22 сб воронова А. Е
Скачать 22.97 Kb.
|
Вариант 9. Разработать программу для построения графика функции у=2*sin(x)*eх/5. Считать из файла, указанного пользователем значения абсциссы Х, рассчитать для них значения ординаты У, записать результат вычисления в новый файл в формате Х1 – У1 Х2 – У2… Решение: // Функция, график которой надо построить Function f(x:real):real; begin f:=2*Sin(x)*exp(x/5); end;// строит трафик функции procedure GrOfFunc; var xl,x2:real; // границы изменения аргумента функции yl,y2:real; // границы изменения значения функции x:real; // аргумент функции у:real; // значение функции в точке х dx:real; // приращение аргумента l,b:integer; // левый нижний угол области вывода графика w,h:integer; // ширина и высота области вывода графика mx,my:real; // масштаб по осям X и Y хО,уО:integer; // точка — начало координатbegin // область вывода графика " 1:=10; // X — координата левого верхнего // угла b:=Forml.ClientHeight-20; // Y — координата левого верхнего // угла h:=Forml.ClientHeight-40; // высота w:=Forml.Width-40; // ширина xl:=0; // нижняя граница диапазона аргумента х2:=25; // верхняя граница диапазона аргумента dx:=0.01; // шаг аргумента // найдем максимальное и минимальное значения // функции на отрезке [xl,x2] yl:=f(xl); // минимум y2:=f(xl); //максимум х:=xl; repeat у := f(x); if у < yl then yl:=y; if у > у2 then y2:=y; x:=x+dx; until (x>=x2); // вычислим масштаб my:=h/abs(y2-yl); // масштаб по оси Y mx:=w/abs(x2-xl); // масштаб по оси X // оси хО:=1; уО:=b-Abs(Round(yl*my)); with forml.Canvas do begin // оси MoveTo(l,b);LineTo(l,b-h); MoveTo(xO,yO);LineTo(xO+w, yO) ; TextOut (l+5,b-h,FloatToStrF(y2,ffGeneral,6,3) ) ; TextOut(1+5,b,FloatToStrF(yl,ffGeneral, 6,3) ) ; // построение графика x:=xl; repeat y:=f(x); Pixels[xO+Round(x*mx),yO-Round(y*my)]:=clRed; x:=x+dx; until (x>=x2); end; end; procedure TForml.FormPaint(Sender: TObject); begin GrOfFunc; end;// изменился размер окна программы procedure TForml.FormResize(Sender: TObject); begin // очистить форму forml.Canvas.FillRect(Rect(0,O,ClientWidth,ClientHeight)); // построить график GrOfFunc; end; |