Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ СНАУ методом Ньютона. Турбо Паскаль 7.0

Автор: Лида 8.04.2016 3:28

Добрый всем вечер.

Вопрос: нужно к моей программе добавить программу графика двух парабол. ( тоесть чтобы после запуска программы Турбо Паскаль на выполнение был график.
Если так сделать нельзя , то сделать отдельно программу которая построит эти графики.
Помогите пожалуйста , буду очень признательна.

(Задание, график и код программы в файле)


Прикрепленные файлы
Прикрепленный файл  ______________.rar ( 44.81 килобайт ) Кол-во скачиваний: 184

Автор: Федосеев Павел 8.04.2016 22:46

У меня только 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.


Автор: Лида 9.04.2016 0:54

Спасибо, Павел, буду пробывать.