Vous êtes sur la page 1sur 13

R O M N I A

MINISTERUL EDUCAIEI, CERCETRII I INOVRII


INSPECTORATUL COLAR AL JUDEULUI SLAJ
GRUP COLAR INDUSTRIAL SRMAG
Ro-457330-Srmag-Slaj, str. Primverii, nr. 15,tel: 0260 65534, 0260 65535
tel!"a#: 0260 655026, $$$.gsis.ro,e-mail:lisarmasag%&a'oo.(om)
Metoda Divide et impera
I. Desrierea metodei.
Metoda Divide et impea! "de#pate $i #t%p&'e$te( e#te o
metod% )e'ea*% de e*a+oae a a*)oitmi*o, Ea -o'#t% .' .mp%/iea
epetat% a 0'ei po+*eme de dime'#i0'e mae .' do0% #a0 mai m0*te
#0+po+*eme de a-e*a$i tip, 0mat% de -om+i'aea #o*0/ii*o
#0+po+*eme*o e1o*vate pe't0 a o+/i'e #o*0/ia po+*emei pop0#e,
Pe't0 -*ai2i-ae #% pe#0p0'em -% #e d% 0' ve-to A
( ,,,,, , "
3 4 n
a a a =
$i -% te+0ie e2e-t0at% o pe*0-ae oae-ae a#0pa
e*eme'te*o #a*e, Mai m0*t, pe#0p0'em -% pe't0 oi-e *, + '0mee
'at0a*e -0
n + * 4
e5i#t% m a#t2e* .'-&t
+ m * <
$i pe*0-aea
#e-ve'/ei
{ }
+ *
a a ,,,,,
#e poate 2a-e pe*0-&'d #e-ve'/e*e
{ }
m *
a a ,,,,,
$i
{ }
+ m
a a ,,,,,
4 + $i apoi -om+i'&'d e10*tate*e pe't0 a o+/i'e pe*0-aea
doit% a .'te)ii #e-ve'/e
{ }
+ *
a a ,,,,,
, 6' -o'ti'0ae vom 2a-e o pim%
de#-iee a metodei Divide et impea! 2o*o#i'd 0' a*)oitm e-0#iv
-e ta'#-ie -e*e de mai #0#, Po-ed0a #e va '0mi DIV7IMP"*, +, r(
0'de8
- * 9 i'di-% .'-ep0t0* #e-ve'/ei -e te+0ie pe*0-at%:
- + 9 i'di-% #2&$it0* #e-ve'/ei -e te+0ie pe*0-at%:
- r 9 i'di-% e10*tat0* pe*0-%ii,
Po-ed0a #e va ape*a pi' call DIV7IMP"1, n) r(,
procedure DIV7IMP,*, +) r-
if * . + ; EPS
then
call PREL"*, +) r(
else
call DIV"*, +) m(
call DIV7IMP"*, m) 4
r
(
call DIV7IMP"m/1, +) 3
r
(
call COM<" 4
r
, 3
r
: r (
end if
return
end
6' a*)oitm0* a'teio #a0 2o*o#it 'ota/ii*e8
EPS 9 epe1i't% *0')imea mi'im% a 0'ei #e-ve'/e
{ }
+ *
a a ,,,,,
,
'otat% pe#-0tat "*,+(, pe't0 -ae pe*0-aea #e poate 2a-e die-t,
2%% a mai 2i 'e-e#a% .mp%/iea .' #0+po+*eme:
Po-ed0a PREL 9 ea*i1ea1% pe*0-aea #e-ve'/e*o de a-e#t
tip 20'i1&'d e10*tat0* .' r,
Po-ed0a DIV 9 detemi'% #0+#e-ve'/e*e "*,m( $i "m/1,+( .'
-ae #e .mpate #e-ve'/a "*,+( $i 20'i1ea1% pe m.
Po-ed0a COM< 9 ea*i1ea1% -om+i'aea e10*tate*o 4
r
$i 3
r

a*e pe*0-%ii a do0% #e-ve'/e ve-i'e "*,m( $i "m/1,+(, o+/i'&'d
e10*tat0* m a* pe*0-%ii #e-ve'/ei "*,+(,
U' e5emp*0 tipi- .* -o'#tit0ie sortarea *rin inter(lasare.
Te+0ie #otat "odo'at -e#-%to( 0' ve-to A
( ,,,,, , "
3 4 n
a a a =
,
Po-ed0a DIV va 20'i1a va*oaea

+
=
3
+ *
m
, Vom *0a EPS=4
deoae-e e#te 0$o de #-i# o po-ed0% PREL -ae #% odo'e1e 0'
#0+$i de tip0*
{ }
4
,
+ i i
a a
, Po-ed0a COM< va i'te-*a#a #0+$i0i*e
de>a #otate
{ }
m *
a a ,,,,,
$i
{ }
+ m
a a ,,,,,
4 + 20'i1&'d e10*tat0* #0+$i0*0i
{ }
+ *
a a ,,,,,
,
II, A!"oritm iterativ pe#tr$ metoda Divide et impera
6' -e*e -e 0mea1% vom pe1e'ta 0' a*)oitm 'ee-0#iv pe't0
ta'#p0'eea metodei Divide et impea!, a*)oitm -o'#tit0it de
po-ed0a ?,
6' po-ed0a ?, RE@P e#te o #tiv% .' -ae #e p%#tea1%
e10*tate*e pa/ia*e, ia PAR e#te o #tiv% .' -ae #e p%#tea1% *imite*e
p, B a*e #e-ve'/e*o -e 0mea1% a 2i pe*0-ate, pe-0m $i '0m%0*
'at0a* a -%0i #em'i2i-a/ie -a 2i pe-i1at% mai >o#,
4 procedure ?"n, 0PS(
3 stack RE@P, PAR
C *1) +n) RE@P: PAR"n/1, /, 0(
D do
E while + . * 1 0PS
F call DIV"*, +) m(
G "m/1, +, 0( PAR: + m
H repeat
I call PREL"*, +, (
4J "*, +, r( PAR
44 for i21,r:
43 RE@P: call COM<", , (
4C repeat
4D RE@P
4E if PAR = J then return
4F else
( ) ( ) PAR 4 , B , p PAR: , B , p
4 4 4 4 4 4
+
4G endif
4H repeat
4I end
6'ai'te de a demo'#ta va*a+i*itatea a*)oitm0*0i, vom e5p*i-a
mod0* .' -ae e* *0-ea1% $i a'0me pe't0 n 2 16 $i

+
=
3
+ *
m
,
Se-ve'/e*e de>a pe*0-ate .' #tiva RE@P vo 2i epe1e'tate pi'tKo
pee-Le -o'#t&'d di' i'di-ii pim0*0i $i 0*tim0*0i e*eme't di'
#e-ve'/%, Vom *0a EPS=4, Pe1e't%m .' -o'ti'0ae va*oaea 0*timei
#e-ve'/e pe*0-ate $i -o'/i'0t0i*e #tive*o RE@P $i PAR imediat
d0p% e5e-0/ia i'#t0-/i0'ii de pe *i'ia I,
Metoda Divide et impea! #e poate epe1e'ta #0+ 2oma 0'0i
a+oe +i'a #ti-t .' -ae %d%-i'a e#te eti-Letat% -0 "4, M(,
de#-e'de'/ii #%i -0 "4, N(, "NM4, M(, ia 2ie-ae v&2 -oe#p0'1%to
#e-ve'/ei
{ }
+ *
a a ,,,,,
pi' "*, +(,

RE@P PAR
"4,3(
"C,D,J(, "E,H,J(, "I,4F,J(, "4G,M,J(
"C,D(
"4,3(
"E,H,4(, "I,4F,J(, "4G,M,J(
"E,F(
"4,D(
"G,H,J(, "I,4F,4(, "4G,M,J(
"G,H(
"E,F(, "4,D(
"I,4F,3(, "4G,M,J(
"I,4J(
"4,H(
"44,43,J(, "4C,4F,J(, "4G,M,J(
"44,43(
"I,4J(, "4,H(
"4C,4F,4(, "4G,M,J(
"4C,4D(
"I,43(, "4,H(
"4E,4F,J(, "4G,M,J(
"4E,4F(
"4C,4D(, "I,43(, "4,H(
"4G,M,J(
De#-e'de'/ii 0'0i v&2 eti-Letat -0 "*, +( #0't eti-Leta/i -0 "*,
m( $i "m/1, +( pe't0 0' a'0me m. V&20i*e temi'a*e #0't eti-Letate
-0 "*, +( 0'de * . + 0PS. Pe't0 e5emp*0 -o'#ideat, a+oe*e
ata$at e#te 0m%to0*8
Va*a+i*itatea a*)oitm0*0i e10*t% di' 2apt0* -% imediat d0p%
2ie-ae e5e-0/ie a i'#t0-/i0'ii de pe *i'ia I #e a>0')e .' 0m%toaea
#it0a/ie "da-% #tiva PAR -o'/i'e -e* p0/i' do0% e*eme'te(8
4( #0'tem .'tK0' v&2 2i'a* -ae #0--ede .' po#todi'e
v&20*0i 2i'a* *a -ae #Ka a>0'# d0p% pe-ede'ta e5e-0/ie a
i'#t0-/i0'ii de pe *i'ia I,
3( pee-Li*e "p, B( di' #tiva RE@P ".' odi'e de *a +a1% *a v&2(
di' $i di' #tiva PAR ".' odi'e de *a v&2 *a +a1%( -oe#p0'd 0'ei
pati/ii
{ }
4
,,,,, 4 +
,
{ }
3 3
,,,,, + *
, ,,,,,
{ } 3 *
s
,,,,,
,
{ } ,,,, 4 + 3
a *0i N, -0
4
4
+ =
+ 4 4
+ *
pe't0 N 9 4, ,,,, # 9 4,
C( #tiva RE@P -o'/i'e .' odi'e ".' odi'e de *a v&2 *a +a1%(
2a/ii #t&')i ai v&20i*o a2*ate pe d0m0* -e *ea)% v&20* temi'a*
de %d%-i'%, 6' p*0# pee-Li*e "p, B( di' RE@P -oi'-id -0 #e-ve'/e*e
{ }
+ *
a a ,,,,,
de>a pe*0-ate,
"4, M(
"4G, M(
"4, 4F(
"4, H(
"I, 4F(
"4, D(
"E, H(
"I,43( "4C,4F(
"4, 3( "E, F( "G, H( "I,4J( "44,43( "4C,4D( "4E,4F( "C, D(
D( tip*ete*e "p, B, ( di' #tiva PAR ".' odi'e de *a v&2 *a +a1%(
-o'/i' .' "p,B( 2a/ii dep/i ai v&20i*o a2*ate pe d0m0* -e *ea)%
v&20* temi'a* de %d%-i'%, Oie "p,B( 2ate*e dept a* 0'0i v&2
"p,B( de pe a-e#t d0m: at0'-i #e memoea1% "p, B, ( 0'de e#te
'0m%0* pede-e#oi*o 2%% 2ate dept ai *0i "p,B(,
III. %&emp!e de pro'!eme re(o!vate $ a)$tor$!
metodei Divide et Impera
*. Mi#im$! $#$i vetor.
Se -ite$te 0' ve-to -0 n -ompo'e'te '0mee .'te)i, Se -ee #%
#e tip%ea#-% -e* mai mi- e*eme't a* #%0,
O a#t2e* de po+*em% poate 2i e1o*vat% 0ti*i1&'d 0' a*)oitm
-*a#i- de -a*-0* a* mi'im0*0i 0'0i ve-to, .'#% pe't0 a #-0ta timp0*
de )%#ie a mi'im0*0i e#te e-oma'dat a #e 2o*o#i metode apide -0m
e#te $i metoda P5ivi5e et im*eraP,
program minim;
const eps=3;
type vector=array[1..100] of integer;
var a:vector;
i,j,m,n,p,q,alfa,beta,gama:integer;
procedre citeste;
begin
!rite"#$ati nr. de componente ale vectorli
n=#%;readln"n%;
!riteln"#&ntrodceti componentele vectorli:#%;
for i:=1 to n do
begin
!rite"#a[#,i,#]=#%;readln"a[i]%;
end;
end;
procedre prel"p,q:integer;var alfa:integer%;
begin
if a[p]'a[q] t(en alfa:=a[p] else alfa:=a[q];
end;
procedre $ivide"p,q:integer;var m:integer%;
begin
m:="p)q% div *;
end;
procedre +ombina"beta,gama:integer;var
alfa:integer%;
begin
if beta'gama t(en alfa:=beta else alfa:=gama;
end;
procedre $iv,t&mp"p,q:integer; var alfa:integer%;
begin
if q-p'eps t(en prel"p,q, alfa%
else
begin
$ivide"p,q,m%;

$iv,t&mp"p,m,beta%;$iv,t&mp"m)1,q,gama%;
+ombina"beta,gama,alfa%;
end;
end;
begin
citeste;
p:=1;q:=n;
$iv,t&mp"p,q,alfa%;
!riteln"alfa%;
readln
end.
+. C,$tare 'i#ar,
Se -ite#- n '0mee .'te)i #otate -e#-%to, De a#eme'ea #e
-ite$te 0' '0m% .'te) ', Se -ee #% #e de-id% da-% ', #e )%#e$te .'
$i0* -e*o n '0mee -itite,
C%0taea #e e2e-t0ea1% .'te '0mee*e e/i'0te de -ompo'e'te*e
de i'di-e .'te va*oi*e e/i'0te de do0% vaia+i*e li $i ls "i'i/ia* li = 4
$i ls = '(,
Oii'd date li $i ls po-ed%m a#t2e*8
#e -a*-0*ea1% i'di-e*e -ompo'e'tei di' mi>*o-, .' -a10* .' -ae '
e#te impa, #a0 a 0'eia di' -e*e do0% p*a#ate .' mi>*o-, .' -a10* .'
-ae n e#te pa "4 2 ,li/ls- 5iv 2(:
apa tei po#i+i*it%/i8
va*oaea e/i'0t% de -ompo'e'ta de i'di-e -a*-0*at e#te e)a*% -0
' "-a1 .' -ae -%0taea #e temi'% -0 #0--e#(:
va*oaea e/i'0t% de -ompo'e'ta de i'di-e -a*-0*at e#te mai
mi-% de-&t ' "-a1 .' -ae '0m%0* va 2i -%0tat .'te
-ompo'e'te*e de i'di-e li 2 4/1 $i ls(:
va*oaea e/i'0t% de -ompo'e'ta de i'di-e -a*-0*at e#te mai
mae de-&t ' "-a1 .' -ae '0m%0* va 2i -%0tat .'te
-ompo'e'te*e de i'di-e li $i ls 2 4 -1 (,
C%0taea #e temi'% -&'d '0m%0* a 2o#t ide'ti2i-at #a0 -&'d li 1 ls
"-%0tae -0 #0--e#(,
program catare;
type vector=array[1..100] of integer;
var a:vector;
n,i,li,ls,.,nr:integer;
gasit:boolean;
begin
!rite"#n=#%;readln"n%;
for i:=1 to n do
begin
!rite"#a[#,i,#]=#%;
readln"a[i]%;
end;
!rite"#nr=#%;readln"nr%;
li:=1; ls:=n; gasit:=false;
repeat
.:="li)ls% div *;
if a[.]=nr
t(en
begin
!riteln"#gasit pe po/itia #,.%;
gasit:=tre;
end
else
if a[.]'nr
t(en li:=.)1
else ls:=.-1
ntil "li0ls% or gasit;
if li0ls t(en !riteln"#negasit#%;
readln
end.
-. Sortarea pri# i#ter!asare.

A*)oitm0* de sortare pri# i#terasare -o'#tit0ie 0' e5emp*0
epe1e'tativ pe't0 2o*o#iea metodei P5ivi5e et im*eraP .'
po)amae, A#t2e*, da-% avem de #otat 0' ve-to, at0'-i .* .mp%/im
.' do0%, #ot%m 9 *a 2e* K -e*e do0% p%/i a*e ve-to0*0i, apoi *e
i'te-*a#%m, Da-% $i ve-toii e10*ta/i d0p% .mp%/ie #0't de#t0* de
mai "mai m0*t de-&t 0' #i')0 e*eme't(, at0'-i po-ed%m *a
.mp%/iea $i a a-e#t0i ve-toi $i tot a$a,
A#t2e*, vom #-ie o po-ed0% 1ort&nterclas"2ncept,
sfarsit: &nteger%; -ae va #ota ve-to0* 6 .'te po1i/ia
nceput $i po1i/ia sfarsit. Po-ed0a va detemi'a po1i/ia di'
mijloc $i #e va a0toape*a pe't0 nceput $i mijloc, apoi pe't0
mijloc)1 $i sfrit, d0p% -ae vo i'te-*a#a -e*e do0% p%/i a*e
ve-to0*0i,
program 1ortare3rin&nterclasare;
const ma4=10;
var a: array[1..ma4] of integer;i,n: 1..ma4;
procedre &nterclasea/a"start,mijloc,finis:integer%;
var b: array[1..ma4] of integer; i,j,.:integer;
begin
.:=start ; i:=start;j:=mijloc)1;
!(ile "i'=mijloc% and "j'=finis% do
if a[i]'a[j] t(en begin b[.]:=a[i]; i:=i)1;
.:=.)1 end
else begin b[.]:=a[j]; j:=j)1; .:=.)1 end;
if i'=mijloc t(en for j:=i to mijloc do begin
b[.]:=a[j];
.:=.)1 end
else for i:=j to finis do begin b[.]:=a[i]; .:=.)1
end;
for i:=start to finis do a[i]:=b[i]
end;
procedre 1ort&nterclas"incept,sfarsit: &nteger%;
var centr:&nteger;
begin
if incept ' sfarsit t(en
begin
centr:="incept)sfarsit% div *;
1ort&nterclas"incept,centr%;
1ort&nterclas "centr)1, sfarsit %;
&nterclasea/a "incept,centr,sfarsit%
end
end;
begin
5rite"#n=#%; readln"n%;
for i:=1 to n do begin !rite"#a[#,i,#]=#%;
readln"a[i]% end;
1ort&nterclas"1,n%; for i:=1 to n do
!rite"a[i],#,#%; readln
end.
.. Sortarea rapid, /0$i1 2 sort/
U' a*t e5emp*0 .* -o'#tit0ie a-e#t a*)oitm ava'#at de #otae,
-ae 2o*o#e$te o po-ed0% Po7i8ionea7. A-ea#t% po-ed0% #e o-0p%
de o a'0mit% pate di' ve-to0* de #otat 6, -0pi'#% .'te i'di-ii start
$i "inis, Ea po1i/io'ea1% -ompo'e'ta de pe po1i/ia start pe o a'0mit%
po1i/ie 4, .'te start $i "inis, po1i/ie pe -ae e#pe-tiv0* e*eme't va
%m&'e p&'% *a 2i'a*, a#t2e* .'-&t toate e*eme'te*e de pe po1i/ii .'te
start $i 4K4 #% 2ie mai mi-i #a0 e)a*e -0 694:, ia toate e*eme'te*e de
pe po1i/ii .'te 4M4 $i "inis #% 2ie mai mai #a0 e)a*e -0 694:.
6' po-ed0a de #otae, ;<i(4, d0p% -e #Ka ea*i1at
po1i/io'aea, .' -o'2omitate -0 teL'i-a P5ivi5e et im*eraP, #e va
a0toape*a a-ea#t% po-ed0% pe't0 -e*e do0% p%/i %ma#e 'e#otate,
di'ai'te $i de d0p% e*eme't0* po1i/io'at 694:.
6' po-ed0a Po7i8ionea7 #e -ompa%, .' mod epetat, do0%
e*eme'te, -e*e de pe po1i/ii*e i $i e#e-tiv j di' ve-to, I'i/ia* i e#te
start, ia j e#te "inis, La 2ie-ae pa#, da-% 69i: 1 69j: #e i'te#-Lim+%
69i: -0 69j: $i #e te-e 2ie *a m%iea *0i i -0 o 0'itate, 2ie *a
mi-$oaea *0i j -0 o 0'itate, A#t2e*, p&'% -&'d i devi'e e)a* -0 j,
po1i/ii*e i $i j #e apopie, 0'a de a*ta, odat% -0 eve't0a*e*e
i'te#-Lim+%i 'e-e#itate de e*a/ia e5i#te't% .'te e*eme'te*e de pe
-e*e do0% po1i/ii, Modi2i-%i*e *0i i $i j #e ea*i1ea1% -0 a>0to0*
vaia+i*ei 5, -ae ia pe &'d va*oi*e J $i 4, ia a#0pa *0i i #e e5e-0t% o
i'-eme'tae -0 5, ia a#0pa *0i j o de-eme'tae -0 5,
program 6ic.1ort;
const ma4=10;
type vector=array[1..ma4] of integer; var a: vector;
i,n: integer;
procedre 3o/itionea/a"start,finis:integer; var .
:integer;var a:vector%;
procedre 1c(imba "var 4,y: integer%;
var a4: integer; begin a4:=4; 4:=y; y:=a4 end;
var i,j,d: integer;
begin
d :=0; i:=start; j:= finis;
!(ile i' j do
begin
if a[i]0a[j] t(en begin
1c(imba"a[i],a[j]%; d:=1-d end;
&nc"i,d%; $ec"j,1-d%
end;
.:=i
end;
procedre 6ic."incept,sfarsit: integer; var a :
vector%;
var . : integer ;
begin
if incept 'sfarsit t(en
begin
po/itionea/a "incept, sfarsit,.,a%;
6ic."incept,.-1,a%; 6ic.".)1,sfarsit,a%
end
end;
begin
!riteln"#6ic.-sort#%; !rite"#dati n=#%; readln"n%;
for i:=1 to n do begin !rite "#a[#,i,#]=#%;
readln"a[i]% end;
6ic."1,n,a%;
!riteln"#7ectorl sortat este:#%;
for i:=1 to n do !rite"a[i],#,#%;
readln
end.
3. T$r#$ri!e di# 4a#oi
Se #p0'e -% .' Viet'am0* a'ti-, .' ?a'oi, ea0 tei t0'0i, pe 0'0*
di' e*e 2ii'd p0#e, .' odi'ea de#-e#-%toae a diamete*o *o, mai
m0*te "opt( di#-0i de a0, Di' motive o+ie-tive, 'i$te -%*0)%i, -ae
*e avea0 .')i>%, te+0ia0 #% a$e1e di#-0i*e pe -e* deKa* doi*ea t0', .'
a-eea$i odi'e, Ei p0tea0 #% 2o*o#ea#-%, eve't0a*, t0'0* a* tei*ea,
deoae-e, a*t2e* di#-0i*e '0 a 2i av0t #ta+i*itate, Di#-0i*e p0tea0 2i
m0tate 0'0* -&te 0'0*, De a#eme'ea, #e e'0'/a di' #tat *a ideea de a
a$e1a 0' di#- mai mae pe#te 0'0* mai mi-, deoae-e e5i#ta i#-0* -a
#% #e #ti-e di#-0i*e, di' -a01a di2ee'/ei mai de ma#%,
De$i, apae't #imp*%, d0p% -&teva .'-e-%i, -0 0' pototip .'
2a/%, #e va -o'#tata -% po+*ema '0 e +a'a*%, 6'#% e#te po#i+i*% o
e1o*vae optim% a ei "-0 '0mai 4 3
n
m0t%i, de-i 3EE, pe't0 '=H(,
2o*o#i'd teL'i-a e-0#iv% Pdivide et impeaP,
Po+*ema e#te de a m0ta ' di#-0i de *a t0'0* 4 *a t0'0* 3,
Pe't0 a o e1o*va, #% vedem -0m #e m0t%, .' )e'ea*, m di#-0i de *a
0' t0' * *a 0' t0' +, Se m0t% pime*e mM4 di#-0i de pe r, r 2ii'd
t0'0* a05i*ia, apoi #i')00* di#- %ma# pe * "di#-0* -e* mae( #e
m0t% de pe * pe +, d0p% -ae -e*e mK4 di#-0i #0't m0tate de pe r pe
+, Oie$te, m0taea -e*o mK4 di#-0i e#te -oe-t%, deoae-e e5i#te'/a
di#-0i*o de diamete mai mai, *a +a1e*e -e*o tei t0'0i '0
a2e-tea1% -0 'imi- m0t%i*e di#-0i*o mai mi-i,
6' -a10* *imit% m=4, avem doa o m0tae a di#-0*0i di' v&20*
t0'0*0i * #pe +.
Po)am0* de mai >o# #o*0/io'ea1% "-0 a'ima/ie( po+*ema
de#-i#%, pe't0 n=H, Po-ed0a de +a1% e#te =an, ia -e*e*a*te
po-ed0i #0't pe't0 mi$-aea di#-0*0i -0e't, E5i#t% $i do0%
po-ed0i -0 #t0-t0% i'edit%, E*e #0't #-i#e .' *im+a> de a#am+*ae,
Oo*o#i'd .'te0peea 4J', ea*i1ea1% a#-0'deea, e#pe-tiv ea2i$aea
-0#o0*0i te5t,
program 8rnrile$in9anoi;
ses crt;
const pa/a=10; forma=:*1;;
varf:array[1..3] of byte="13,**,**%;
procedre 9ide+rsor; assembler; <ascnde crsorl
palpaitor, in modl te4t=
asm >?7 @A, B0100; >?7 +A, B*C0D; &E8 B10 end;
procedre 1(o!+rsor; assembler; <reafisea/a
crsorl=
asm >?7 @A, B0100; >?7 +A, B0F0C; &E8 B10 end;
fnction +ol8ija"tija:byte%:byte;<stabileste coloana
nei tije=
begin +ol8ija:=*GHtija-I end;
procedre >ta$reapta"disc, tija1, tija*: byte%;
var i,.:byte;
begin
for i:=+ol8ija"tija1%-disc to 3red"+ol8ija"tija*%-
disc% do
begin
$elay"3a/a%; if Jey3ressed t(en 9alt"1%;
goto4y"i,3%; for .:=0 to disc do 5rite"# #%;
goto4y"i)1,3%; for .:=0 to *Hdisc do
5rite"forma%;
end
end;
procedre >ta1tanga"disc, tija1, tija* :byte%;
var i,.:byte;
begin
for i:=+ol8ija"tija1%-disc do!nto
scc"+ol8ija"tija*%-disc% do
begin
$elay"3a/a%; if Jey3ressed t(en 9alt"1%;
goto4y"i,3%; for .:=0 to disc do 5rite"# #%;
goto4y"i-1,3%; for .:=0 to *Hdisc do
5rite"forma%;
end
end;
procedre +oboara"disc, tija:byte%;
var i,.:byte;
begin
for i:=3 to 3red"7arf[tija]-1% do
begin
$elay"3a/a%; if Jey3ressed t(en 9alt"1%;
goto4y"+ol8ija"tija%-disc,i%;
for .:=0 to disc do 5rite"# #%;
goto4y"+ol8ija"tija%-disc,i)1%;
for .:=0 to *Hdisc do 5rite"forma%;
end;
$ec"7arf[tija]%
end;
procedre Kidica"disc, tija:byte%;
var i,.:byte;
begin
for i:=7arf[tija] do!nto G do
begin
$elay"3a/a%; if Jey3ressed t(en 9alt"1%;
goto4y"+ol8ija"tija%-disc,i%;
for .:=0 to disc do 5rite"# #%;
goto4y"+ol8ija"tija%-disc,i-1%;
for .:=0 to *Hdisc do 5rite"forma%;
end;
&nc"7arf[tija]%
end;
procedre >ta"disc, tija1, tija*:byte%;
begin
Kidica"disc,tija1%;
if "tija1'tija*% t(en
>ta$reapta"disc,tija1,tija*%;
+oboara"disc, tija*%
end;
procedre 9an"n, tija1, tija*, tija3:byte%;
begin
if "n=1% t(en >ta"1,tija1,tija*%
else
begin
9an"n-1, tija1, tija3, tija*%;
>ta"n, tija1,tija*%;
9an"n-1, tija3, tija*,tija1%
end
end;
procedre &nitiali/ari;
var .,disc:byte;
begin
9ide+rsor; +lrscr;
for disc:=1 to ; do
begin
goto4y"+ol8ija"1%-disc,varf[1])disc-1%;
for .:=0 to *Hdisc do
!rite"forma%;
end
end;
begin
&nitiali/ari; goto4y"*I,1%; !riteln"#- 8rnrile din
9anoi -#%;
9an"I,1,*,3%; 1(o!+rsor;
readln
end.

Vous aimerez peut-être aussi