Добрый всем вечер.
Вопрос: нужно к моей программе добавить программу графика двух парабол. ( тоесть чтобы после запуска программы Турбо Паскаль на выполнение был график.
Если так сделать нельзя , то сделать отдельно программу которая построит эти графики.
Помогите пожалуйста , буду очень признательна.
(Задание, график и код программы в файле)
Прикрепленные файлы
______________.rar ( 44.81 килобайт )
Кол-во скачиваний: 184
У меня только FreePascal. Попробуйте отладить под Turbo.
Рисует график, только оси не подписывает.
{программа построения дух графиков на одной оси координат}
program P;
uses
Graph,
CRT;
function f1(X: real): real;
begin
f1 := 16 * sqr(X);
end;
function f2(X: real): real;
begin
f2 := 1 / 7 * sqr(X);
end;
var
GraphDevice, GraphMode: integer;
ScreenXstart, ScreenXfinish, ScreenYstart, ScreenYfinish: integer;
ScaleX, ScaleY: real;
Xstart, Xfinish, Ystart, Yfinish: real;
X, Y, dX: real;
Xscreen, Yscreen: integer;
IsNextVisiblePixel: boolean;
begin
{параметры графиков}
Xstart := -0.05;
Xfinish := 0.05;
Ystart := 0.0;
Yfinish := 0.0010;
{инициализация графики}
GraphDevice := Detect;
GraphMode := Detect;
InitGraph(GraphDevice, GraphMode, '');
if GraphResult <> grOk then
begin
writeln('Error');
Exit;
end;
{от края экрана отступим по 10% экрана}
ScreenXstart := GetMaxX div 10;
ScreenXfinish := GetMaxX - ScreenXstart;
ScreenYstart := GetMaxY div 10;
ScreenYfinish := GetMaxY - ScreenYstart;
{расчёт масштабных коэффициентов}
ScaleX := (ScreenXfinish - ScreenXstart) / (Xfinish - Xstart);
ScaleY := (ScreenYfinish - ScreenYstart) / (Yfinish - Ystart);
{построение осей координат}
SetColor(7);
MoveTo(ScreenXstart, ScreenYstart);
LineTo(ScreenXstart, ScreenYfinish);
LineTo(ScreenXfinish, ScreenYfinish);
LineTo(ScreenXfinish, ScreenYstart);
LineTo(ScreenXstart, ScreenYstart);
MoveTo((ScreenXfinish + ScreenXstart) div 2, ScreenYstart);
LineTo((ScreenXfinish + ScreenXstart) div 2, ScreenYfinish);
{построение 1-го графика}
SetColor(5);
IsNextVisiblePixel := False;
X := Xstart;
dX := (Xfinish - Xstart) / 1000;
while X <= Xfinish do
begin
Y := f1(X);
Xscreen := round((X - Xstart) * ScaleX) + ScreenXstart;
Yscreen := -round((Y - Ystart) * ScaleY) + ScreenYfinish;
if (Xscreen >= ScreenXstart) and (Xscreen <= ScreenXfinish) and
(Yscreen > ScreenYstart) and (Yscreen < ScreenYfinish) then
begin
if IsNextVisiblePixel then
LineTo(Xscreen, Yscreen)
else
MoveTo(Xscreen, Yscreen);
IsNextVisiblePixel := True;
end
else
IsNextVisiblePixel := False;
X := X + dX;
end;
{построение 2-го графика}
SetColor(4);
IsNextVisiblePixel := False;
X := Xstart;
dX := (Xfinish - Xstart) / 1000;
while X <= Xfinish do
begin
Y := f2(X);
Xscreen := round((X - Xstart) * ScaleX) + ScreenXstart;
Yscreen := -round((Y - Ystart) * ScaleY) + ScreenYfinish;
if (Xscreen >= ScreenXstart) and (Xscreen <= ScreenXfinish) and
(Yscreen > ScreenYstart) and (Yscreen < ScreenYfinish) then
begin
if IsNextVisiblePixel then
LineTo(Xscreen, Yscreen)
else
MoveTo(Xscreen, Yscreen);
IsNextVisiblePixel := True;
end
else
IsNextVisiblePixel := False;
X := X + dX;
end;
ReadKey;
end.
Спасибо, Павел, буду пробывать.