Постройте на экране "Замок" - Free Pascal

Узнай цену своей работы

Формулировка задачи:

1)Постройте на экране «ЗАМОК». Воспользуйтесь всеми известными вам возможностями операторов LINE, RECTANGLE, окрашивания.

Решение задачи: «Постройте на экране "Замок"»

textual
Листинг программы
  1. {*****************************************************}
  2. {                                                     }
  3. {                  ТУРБОГРАФ XXI                      }
  4. {                   Версия 2.1                        }
  5. {                                                     }
  6. {                  Модуль Fraction                    }
  7. {           Операции с обыкновенными дробями          }
  8. {                                                     }
  9. {         Copyright (C) 1993,98  С.Свердлов           }
  10. {                                                     }
  11. {*****************************************************}
  12. unit Fraction;
  13.  
  14. interface
  15.  
  16. type
  17.  
  18.    FracType =
  19.       record
  20.          Num, Den : longint;
  21.       end;
  22.  
  23. function MCD( x, y : longint ) : longint;
  24. procedure FCancel( var x : FracType );
  25. procedure FMult( x, y : FracType; var Z : FracType );
  26. procedure FInv( x : FracType; var y : FracType );
  27. procedure FracRound( s, t : longint; var p, q : integer; Max : integer );
  28.  
  29. {=========================================================================}
  30.  
  31. implementation
  32.  
  33. function MCD( x, y : longint ) : longint;
  34.    { НОД по алгоритму Евклида }
  35. var
  36.    Buf : longint;
  37. begin
  38.    while y <> 0 do begin
  39.       Buf := y;
  40.       y := x mod y;
  41.       x := Buf;
  42.    end;
  43.    MCD := x;
  44. end;
  45.  
  46. procedure FCancel( var x : FracType );
  47. var
  48.    d : longint;
  49. begin
  50.    with x do begin
  51.       d := MCD( Num, Den );
  52.       if d <> 0 then begin
  53.          Num := Num div d;
  54.          Den := Den div d;
  55.       end;
  56.    end;
  57. end;
  58.  
  59. procedure FMult( x, y : FracType; var z : FracType );
  60. var
  61.    d1, d2, d : longint;
  62. begin
  63.    z.Num := x.Num*y.Num;
  64.    z.Den := x.Den*y.Den;
  65.    FCancel( z );
  66. end;
  67.  
  68. procedure FInv( x : FracType; var y : FracType );
  69. begin
  70.    y.Num := x.Den;
  71.    y.Den := x.Num;
  72. end;
  73.  
  74. procedure FracRound( s, t : longint; var p, q : integer; Max : integer );
  75. var
  76.    b              : longint;
  77.    k              : integer;
  78.    ss, tt, Save   : longint;
  79.    pp, qq         : longint;
  80. begin
  81.    if s=0 then begin
  82.       p := 0;
  83.       q := 1;
  84.       end
  85.    else begin
  86.       k := 0;
  87.       p := 0; q := 1;
  88.       pp := 0; qq := 0;
  89.       while ( s<>0 ) and ( pp < Max ) and ( qq < Max )do begin
  90.          Inc(k);
  91.          b := t div s;
  92.          Save := t mod s;
  93.          t := s;
  94.          s := Save;
  95.          if k=1 then begin
  96.             pp := 1;
  97.             qq := b;
  98.             end
  99.          else begin
  100.             Save := b*pp+p;
  101.             p := pp;
  102.             pp := Save;
  103.             Save := b*qq+q;
  104.             q := qq;
  105.             qq := Save;
  106.          end;
  107.       end;
  108.       if ( pp < Max ) and ( qq < Max ) then begin
  109.          p := pp;
  110.          q := qq;
  111.       end;
  112.    end;
  113. end;
  114.  
  115.  
  116. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы