Файл: Построение графиков в Turbo Pascal.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.05.2024

Просмотров: 70

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Результаты моделирования процесса теплопроводности, представим в виде таблицы:

Таблица

x

t

0

1

2

3

4

0

3,000

3,667

4,333

5,000

3,000

1

3,000

3,628

4,128

3,952

3,000

2

3,000

3,514

3,783

3,593

3,000

3

3,000

3,377

3,546

3,396

3,000

4

3,000

3,267

3,381

3,272

3,000

5

3,000

3,187

3,266

3,188

3,000

6

3,000

3,131

3,185

3,131

3,000

7

3,000

3,091

3,129

3,091

3,000

8

3,000

3,064

3,090

3,064

3,000

9

3,000

3,044

3,063

3,044

3,000

10

3,000

3,031

3,044

3,031

3,000


Program Stergen;

Uses Crt, Graph

Type Mas2 = Array [0..10, 0..4] of Real;

Const {Двумерный массив распределения температуры в разные моменты времени – типизированная константа}

U : Mas2 =

((3.000, 3.667, 4.333, 5.000, 3.000), (3.000, 3.628, 4.128, 3.952, 3.000), (3.000, 3.514, 3.783, 3.593, 3.000), (3.000, 3.377, 3.546, 3.396, 3.000), (3.000, 3.267, 3.381, 3.272, 3.000), (3.000, 3.187, 3.266, 3.188, 3.000), (3.000, 3.131, 3.185, 3.131, 3.000), (3.000, 3.091, 3.129, 3.091, 3.000),

(3.000, 3.064. 3.090, 3.064, 3.000), (3.000, 3.044, 3.063, 3.044, 3.000), (3.000, 3.031, 3.044, 3.031, 3.000));

Var M, I, J, N1, Nt : Integer; MaxF, L, T, HI, Ht :Real;

Procedure Initialize; {Процедура инициализации графического режима}

Var GraphDriver, GraphMode : Integer;

Begin

DetectGraph(GraphDriver, GraphMode) ;

InitGraph(GraphDriver, GraphMode, '');

End;

{Графическая иллюстрация решения}

Procedure Postanovka (U : Mas2; Nt, N1 : Integer; HI, L, MaxF : Real);

Var X_N, Shag, Y_N, Shir, Dlin, Color, I, J, K, Y : Integer;

Flag .: Boolean; Ff : String; Col : Array [0..15] Of Byte;

Begin

Initialize; {Инициализация графического режима}

X_N := GetMaxX Div 6;

If Nt <= 6 Then M := Nt Else M := Nt Div 2;

Y_N := GetMaxY Div M - 20; Shir := Y_N Div 2;

Dlin := GetMaxX -2 * X_N; Shag := Trunc(Dlin / N1); Str(Shag,Ff) ;

Col[0] := 0; Col[l] := 8; Col[2] := 1; {Палитра цветов}

Col[3] := 9; Col[4] := 3; Col[5] := 11;

Col[6] := 2; Col[7] := 10; Col[8] := 14;

Col[9] := 13; Col[l0] := 5; Col[ll] := 12; Col [12] := 4;

For I :== 0 To M - 1 Do {номер временного промежутка}

Begin

For J := 0 To N1 - 1 Do {номер участка стержня}

Begin

Flag := False;

For К := 0 To Shag Do

Begin

For y:= 0 To Shir Do

Begin

Color := 1 + Round((U[I, J] +

{определение номера цвета}(U[I, J + 1] –

U[I, J]) * К / Shag - U[0, 0]) / 3 * 16);

If Random(64) > 32

Then If Random(64) > 32 Then Color :=

Color + 1 Else Color := Color - 1;

If Not Flag Then {вывод текущей температуры}

Begin

Str((U[I,J]+(U(I,J+l]-U[I,J])*K/Shag):5:3, Ff);

OutTextXY(K+X_N+Shag*J, Y_N*(1+1)-19, Ff) ;

Flag := True

End;

{рисование точки}

PutPixel(K+X_N+Shag*J, Y+Y_N*(1+I), Col[Color])

End

End

End

End;

SetColor(White); OutTextXY(150, 450, 'Нажмите

любую клавишу ');

Repeat Until KeyPressed; CloseGraph

End;

Begin {ОСНОВНАЯ ПРОГРАММА}

L := 4; Т := 10; Hi := 1; Ht := 1;

N1 := Trunc(L / HI); Nt := Trunc(T / Ht); MaxF := 5;

Postanovka (U, Nt, N1, HI, L, MaxF)


End.

Результатом выполнения данной программы будет следующая диаграмма:

Рисунок 4