Постройте на экране "Замок" - Free Pascal
Формулировка задачи:
1)Постройте на экране «ЗАМОК». Воспользуйтесь всеми известными вам возможностями операторов LINE, RECTANGLE, окрашивания.
Решение задачи: «Постройте на экране "Замок"»
textual
Листинг программы
- {*****************************************************}
- { }
- { ТУРБОГРАФ XXI }
- { Версия 2.1 }
- { }
- { Модуль Fraction }
- { Операции с обыкновенными дробями }
- { }
- { Copyright (C) 1993,98 С.Свердлов }
- { }
- {*****************************************************}
- unit Fraction;
- interface
- type
- FracType =
- record
- Num, Den : longint;
- end;
- function MCD( x, y : longint ) : longint;
- procedure FCancel( var x : FracType );
- procedure FMult( x, y : FracType; var Z : FracType );
- procedure FInv( x : FracType; var y : FracType );
- procedure FracRound( s, t : longint; var p, q : integer; Max : integer );
- {=========================================================================}
- implementation
- function MCD( x, y : longint ) : longint;
- { НОД по алгоритму Евклида }
- var
- Buf : longint;
- begin
- while y <> 0 do begin
- Buf := y;
- y := x mod y;
- x := Buf;
- end;
- MCD := x;
- end;
- procedure FCancel( var x : FracType );
- var
- d : longint;
- begin
- with x do begin
- d := MCD( Num, Den );
- if d <> 0 then begin
- Num := Num div d;
- Den := Den div d;
- end;
- end;
- end;
- procedure FMult( x, y : FracType; var z : FracType );
- var
- d1, d2, d : longint;
- begin
- z.Num := x.Num*y.Num;
- z.Den := x.Den*y.Den;
- FCancel( z );
- end;
- procedure FInv( x : FracType; var y : FracType );
- begin
- y.Num := x.Den;
- y.Den := x.Num;
- end;
- procedure FracRound( s, t : longint; var p, q : integer; Max : integer );
- var
- b : longint;
- k : integer;
- ss, tt, Save : longint;
- pp, qq : longint;
- begin
- if s=0 then begin
- p := 0;
- q := 1;
- end
- else begin
- k := 0;
- p := 0; q := 1;
- pp := 0; qq := 0;
- while ( s<>0 ) and ( pp < Max ) and ( qq < Max )do begin
- Inc(k);
- b := t div s;
- Save := t mod s;
- t := s;
- s := Save;
- if k=1 then begin
- pp := 1;
- qq := b;
- end
- else begin
- Save := b*pp+p;
- p := pp;
- pp := Save;
- Save := b*qq+q;
- q := qq;
- qq := Save;
- end;
- end;
- if ( pp < Max ) and ( qq < Max ) then begin
- p := pp;
- q := qq;
- end;
- end;
- end;
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д