Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 07.04.2016, 23:31   #11 (permalink)
Алекс2
Member
 
Регистрация: 24.03.2016
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Добрый вечер,Vladimir_S. Спасибо за ответ. У меня Турбо Паскаль. Буду искать пример.
Алекс2 вне форума   Ответить с цитированием

Старый 07.04.2016, 23:31
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Прочтение похожих обсуждений способно упростить решение проблемы

СНАУ методом Зэйделя
Паскаль. Решить СНАУ методом Ньютона-Рафсона
СНАУ методом Зейделя
Интеграл методом прямоугольников

Старый 08.04.2016, 12:43   #12 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Алекс2 Посмотреть сообщение
Добрый вечер,Vladimir_S. Спасибо за ответ. У меня Турбо Паскаль. Буду искать пример.
Не очень понял. Но если Borland-пакет устраивает, то:
Код:
Uses Graph, CRT;

Var
 x,y,step,Kx,Ky,Dx,Dy:Real;
 i:Integer;
 S:String;

Begin
 InitGraph(.........); {Здесь - самостоятельно}
 SetLineStyle(SolidLn,0,ThickWidth);
 Line(20,GetMaxY-60,GetMaxX-20,GetMaxY-60);
 Line((GetMaxX div 2),GetMaxY-60,(GetMaxX div 2),20);
 SetTextJustify(CenterText,TopText);
 OutTextXY(GetMaxX-30,GetMaxY-35,'x');
 OutTextXY(GetMaxX-20,GetMaxY-30,'2');
 SetTextJustify(LeftText,CenterText);
 OutTextXY((GetMaxX div 2)+10,25,'x');
 OutTextXY((GetMaxX div 2)+20,30,'1');
 Kx:=(GetMaxX-40)/0.1;
 Ky:=(GetMaxY-80)/0.001;
 SetLineStyle(SolidLn,0,NormWidth);
 step:=0.01;
 SetTextJustify(CenterText,TopText);
 for i:=-5 to 5 do
  begin
   Line(Round(GetMaxX/2+step*i*Kx),GetMaxY-64,
        Round(GetMaxX/2+step*i*Kx),GetMaxY-56);
   Str(step*i:5:2,S);
   OutTextXY(Round(GetMaxX/2+step*i*Kx),GetMaxY-52,S);
  end;
 step:=0.0001;
 SetTextJustify(RightText,CenterText);
 for i:=1 to 10 do
  begin
   Line((GetMaxX div 2)-4,Round(GetMaxY-60-step*i*Ky),
        (GetMaxX div 2)+4,Round(GetMaxY-60-step*i*Ky));
   Str(step*i:6:4,S);
   OutTextXY((GetMaxX div 2)-8,Round(GetMaxY-60-step*i*Ky),S);
  end;
 SetColor(LightRed);
 SetLineStyle(SolidLn,0,ThickWidth);
 MoveTo(Round(GetMaxX/2-0.008*Kx),Round(GetMaxY-60-Sqr(0.008)*16*Ky));
 for i:=1 to 16 do
  LineTo(Round(GetMaxX/2+(-0.008+0.001*i)*Kx),
         Round(GetMaxY-60-Sqr(-0.008+0.001*i)*16*Ky));
 SetColor(LightBlue);
 MoveTo(Round(GetMaxX/2-0.05*Kx),Round(GetMaxY-60-Sqr(0.05)/7*Ky));
 for i:=1 to 100 do
  LineTo(Round(GetMaxX/2+(-0.05+0.001*i)*Kx),
         Round(GetMaxY-60-Sqr(-0.05+0.001*i)/7*Ky));
 ReadKey
End.
О конфигурировании графического режима и параметров InitGraph см.
Турбо Паскаль. Задание на анимацию и дальше, а также
Турбо Паскаль. Задание на анимацию
Миниатюры
aa02.jpg  
Vladimir_S вне форума   Ответить с цитированием
Старый 08.04.2016, 23:08   #13 (permalink)
Алекс2
Member
 
Регистрация: 24.03.2016
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Есть программа которая рисует 2 графика. но она на FreePaskal, помогите, пожалуйста переделать на Турбо Паскаль 7.

программа построения дух графиков на одной оси координат}
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.
Алекс2 вне форума   Ответить с цитированием
Старый 09.04.2016, 09:24   #14 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Алекс2 Посмотреть сообщение
Есть программа которая рисует 2 графика. но она на FreePaskal, помогите, пожалуйста переделать на Турбо Паскаль 7.
Без разницы. Ничего переделывать не нужно.
И если Вам больше по сердцу такой слепой график
aa01.jpg
чем тот, что предложил Вам я - с разметкой осей - то что же, как говорится, "насильно мил не будешь".
Успехов!
Vladimir_S вне форума   Ответить с цитированием
Старый 09.04.2016, 14:30   #15 (permalink)
Алекс2
Member
 
Регистрация: 24.03.2016
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Добрый день,Vladimir_S. Хочу еще раз сказать спасибо именно за вашу программу. Проблема была в том, что я не мог увидеть результат. Теперь все нормально. график есть. Огромное спасибо еще раз!!!!!!!!!
Алекс2 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 01:13.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.