Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на языке Pascal


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

lamed
Статус: Профессионал
Рейтинг: 2788
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2457
∙ повысить рейтинг »
star9491
Статус: Профессионал
Рейтинг: 2262
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Pascal (Паскаль)

Номер выпуска:1120
Дата выхода:10.09.2010, 19:30
Администратор рассылки:Boriss, Академик
Подписчиков / экспертов:190 / 181
Вопросов / ответов:1 / 1

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


Вопрос № 179855:

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

Отправлен: 05.09.2010, 14:01
Вопрос задал: sannek2, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает nicelioness, 2-й класс :
Здравствуйте, sannek2. Здесь представлен текст программы построения графика функции в Turbo Pascal. Промежуток изменения аргумента Вы вводите с клавиатуры, запустив программу, а функцию, график которой Вам нужно построить, пишите в функции F, вложенной в процедуре TablFunc.
PROGRAM Graphic_of_Function;
USES CRT, Graph;
CONST
N = 50; {число точек на графике}
xwmin:integer=0;
ywmin:integer=0;
xwmax:integer=639;
ywmax:integer=479;
VAR
X, Y : array[1..N] of real;

xmin, xmax, ymin, ymax : real; { Мировая система координат }
PROCEDURE SetWorldCoords( x1, y1, x2, y2 : real );
{ Процедура назначения мировых координат }
BEGIN
xmin := x1; xmax := x2;
ymin := y1; ymax := y2
END;
PROCEDURE SetWindow( x1, y1, x2, y2 : integer );
{ Процедура установки параметров окна вывода }
BEGIN
XWmin := x1; XWmax := x2;
YWmin := y1; YWmax := y2
END;
{ Функции преобразования мировых координат к координатам устройства }
FUNCTION Xs( x : real ) : integer;
BEGIN
Xs := XWmin + round( (XWmax-XWmin)* (x-xmin)/(xmax-xmin) )
END;
FUNCTION Ys( y : real ) : integer;
BEGIN
ys := YWmax - round( (YWmax-YWmin)* (y-ymin)/(ymax-ymin) )
END;

PROCEDURE TablFunc( a, b : real );
VAR
i : integer;
function F( x : real ) : real;
begin
F := cos(x);
end;
BEGIN
for i:=1 to N do begin
X[i] := a + (b-a)/(N-1)*(i-1);
Y[i] := F( X[i] );
end;
END;

FUNCTION MinY : real;
VAR i : integer;
m : real;
BEGIN
m := Y[1];
for i:=2 to N do if Y[i]<m then m := Y[i];
MinY := m
END;
FUNCTION MaxY : real;
VAR i : integer;
m : real;
BEGIN
m := Y[1];
for i:=2 to N do if Y[i]>m then m := Y[i];
MaxY := m
END;

PROCEDURE BuildCoords( nx, ny : Byte );
VAR
i : Byte;
v : real;
s : string;
BEGIN
SetColor( White );
Rectangle( XWmin, YWmin, XWmax, YWmax ); { область графика }< br> Line( Xs(xmin), Ys(0), Xs(xmax), Ys(0) ); { ось ОХ }
Line( Xs(0), Ys(ymax), Xs(0), Ys(ymin) ); { ось OY }
SetTextStyle(SmallFont,0,5); { выбор шрифта Small }
SetTextJustify(CenterText,CenterText); { выравнивание текста }
{ Разметка оси Х }
for i:=0 to nx-1 do begin
v := xmin + (xmax-xmin)/(nx-1)*i; { координата i-го штриха }
Str(v:5:2,s); { преобразование числа в строку }
Line(Xs(v), YWmax, Xs(v), YWmax+5); { черчение i-го штриха }
OutTextXY(Xs(v), YWmax+15, s); { вывод числа }
end;
{ Разметка оси Y }
for i:=0 to ny-1 do begin
v := ymin + (ymax-ymin)/(ny-1)*i;
Str(v:5:2,s);
Line(XWmin, Ys(v), XWmin-5, Ys(v));
OutTextXY(XWmin-30, Ys(v), s);
end;
END;

PROCEDURE Graphic( Color : word );
VAR i : integer;
BEGIN
SetColor( Color );
MoveTo( Xs(X[1]), Ys(Y[1]) );
Circle( Xs(X[1]), Ys(Y[1]), 2);
FOR i:=2 TO N DO begin
LineTo( Xs(X[i]), Ys(Y[i]) );
Circle( Xs(X[i]), Ys(Y[i]), 2);
end;
END;
VAR
a, b : real;
GrDr, GrMd : integer;
BEGIN
ClrScr;
Write('‘Введите пределы изменения аргумента [a, b]: ’');
ReadLn(a, b);
TablFunc( a, b );
GrDr := detect;
InitGraph( GrDr, GrMd, '' );
SetWindow( 100, 50, 500, 400 );
SetWorldCoords( a, MinY, b, MaxY );
BuildCoords( 5, 5 );
Graphic( Yellow );
ReadKey;
CloseGraph;
END.

Ответ отправил: nicelioness, 2-й класс
Ответ отправлен: 05.09.2010, 19:18
Номер ответа: 262971

Оценка ответа: 5
Комментарий к оценке:
Спс

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 262971 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.19 от 06.09.2010

    В избранное