Advertisement
sawilove

Lines

Mar 18th, 2024
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.06 KB | None | 0 0
  1. Program Stergen;
  2. Uses Crt_ii, Graph;
  3. Type Mas2 = array[0..10,0..4] of Real;
  4. Const {Массив распределения температуры в разные моменты времени}
  5. U : Mas2 =
  6. ((3.000, 3.667, 4.333, 5.000, 3.000),  (3.000, 3.628, 4.128, 3.952, 3.000),
  7. (3.000, 3.514, 3.783, 3.593, 3.000),  (3.000, 3.377, 3.546, 3.396, 3.000),
  8. (3.000, 3.267, 3.381, 3.272, 3.000),  (3.000, 3.187, 3.266, 3.188, 3.000),
  9. (3.000, 3.131, 3.185, 3.131, 3.000),  (3.000, 3.091, 3.129, 3.091, 3.000),
  10. (3.000, 3.064, 3.090, 3.064, 3.000),  (3.000, 3.044, 3.063, 3.044, 3.000),
  11. (3.000, 3.031, 3.044, 3.031, 3.000));
  12. Var
  13.    M,I,J,Nl,Nt: Integer; MaxF,L,T,Hl,Ht: Real;
  14. Procedure Initialize; {Процедура инициализации графического режима}
  15. Var GraphDriver, GraphMode : Integer;
  16. Begin
  17.     GraphDriver:=Detect;
  18.     InitGraph(GraphDriver, GraphMode,'c:\bp\bgi');
  19. End;
  20. {Графическая иллюстрация решения}
  21. Procedure Postanovka (U : Mas2; Nt, Nl : Integer; Hl, L, MaxF : Real);
  22. Var X_N, Shag, Y_N, Shir, Dlin, Color, I, J, K, Y : Integer;
  23.     Flag : Boolean; Ff : String; Col : Array [0..15] Of Byte;
  24. Begin
  25.    Initialize; {Инициализация графического режима}
  26.     X_N:= GetMaxX Div 6;
  27.     If Nt <= 6 Then M:= Nt Else M:= Nt Div 2;
  28.     Y_N:= GetMaxY Div M-20; Shir:= Y_N Div 2;
  29.     Dlin:= GetMaxX-2*(X_N); Shag:= Trunc(Dlin / Nl); Str(Shag, Ff);
  30.     Col[0]:= 0; Col[1]:= 8; Col[2]:= 1; {Палитра цветов}
  31.     Col[3]:= 9; Col[4]:= 3; Col[5]:= 11;
  32.     Col[6]:= 2; Col[7]:= 10; Col[8]:= 14;
  33.     Col[9]:= 13; Col[10]:= 5; Col[11]:= 12; Col[12]:= 4;
  34.    For I:= 0 To M-1 Do {Номер временного промежутка}
  35.     Begin
  36.      For J := 0 To Nl-1 Do {Номер участка стержня}
  37.        Begin
  38.          Flag := False;
  39.          For K := 0 To Shag Do
  40.            Begin
  41.             For y := 0 To Shir Do
  42.               Begin
  43.                 Color :=1 + Round((U[I, J] + {определение номера цвета}
  44.                 (U[I,J + 1] - U[I,J]) * K/Shag-U[0,0])/3*16);
  45.                 If Random(64) > 32
  46.               Then If Random(64) > 32 Then Color:= Color + 1 Else
  47.                  Color := Color - 1;
  48.                 If Not Flag Then {вывод текущей температуры}
  49.                 Begin
  50.                    Str((U[I, J] + (U[I, J]) * K / Shag) : 5 : 3, Ff);
  51.                    OutTextXY(K+X_N+Shag * J, Y_N * (1+I) - 19, Ff);
  52.                    Flag := True
  53.                 End;
  54.                 {рисование точки}
  55.                 PutPixel(K+X_N+Shag * J, Y + Y_N * (1+I), Col[Color]);
  56.                 End;
  57.            End
  58.        End
  59.       End;
  60.       SetColor(White);
  61.       SetTextStyle(1,0,2);
  62.       OutTextXY(150, 420, 'нажмите любую клавишу');
  63.       Repeat Until Keypressed;
  64.       CloseGraph;
  65.     End;
  66.     Begin {OCHOBHAЯ ПРОГРАММА}
  67.        L:= 4; T:= 10; Hl:= 1; Ht := 1;
  68.        Nl := Trunc(L / Hl); Nt := Trunc(T / Ht); MaxF := 5;
  69.        Postanovka (U, Nt, Nl, Hl, L, MaxF)
Tags: math School
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement