You are on page 1of 18

Chng 5 D LIU KIU MNG (ARRAY)

I. KHAI BO MNG C php: TYPE <Kiu mng> = ARRAY [ch s] OF <Kiu d liu>; VAR <Bin mng>:<Kiu mng>; hoc khai bo trc tip: VAR <Bin mng> : ARRAY [ch s] OF <Kiu d liu>; V d: TYPEMangnguyen = Array[1..100] of Integer; Matrix = Array[1..10,1..10] of Integer; MangKytu = Array[Byte] of Char; VAR A: Mangnguyen; M: Matrix; C: MangKytu; hoc: VAR A: Array[1..100] of Integer; C: Array[Byte] of Char; II. XUT NHP TRN D LIU KIU MNG - truy cp n phn t th k trong mng mt chiu A, ta s dng c php: A[k]. - truy cp n phn t (i,j) trong mng hai chiu M, ta s dng c php: M[i,j]. - C th s dng cc th tc READ(LN)/WRITE(LN) i vi cc phn t ca bin kiu mng. BI TP MU Bi tp 5.1: Vit chng trnh tm gi tr ln nht ca mt mng cha cc s nguyn gm N phn t.

tng: - Cho s ln nht l s u tin: Max:=a[1]. - Duyt qua cc phn t a[i], vi i chy t 2 ti N: Nu a[i]>Max th thay Max:=a[i]; Uses Crt; Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,Max:Integer; Begin {Nhp mng} Write(Nhap N=); Readln(N); For i:=1 To N Do Begin Write(A[,i,]=); Readln(A[i]); End; {Tm phn t ln nht} Max:=A[1]; For i:=2 To N Do If Max<A[i] Then Max:=A[i]; {In kt qu ra mn hnh} Writeln(Phan tu lon nhat cua mang: , Max); Readln; End. Bi tp 5.2: Vit chng trnh tnh tng bnh phng ca cc s m trong mt mng gm N phn t. tng: Duyt qua tt c cc phn t A[i] trong mng: Nu A[i]<0 th cng dn (A[i])2 vo bin S. Uses Crt; Type Mang = ARRAY[1..50] Of Integer;

Var Begin

A:Mang; N,i,S:Integer; {Nhp mng} Write(Nhap N=); Readln(N); For i:=1 To N Do Begin Write(A[,i,]=); Readln(A[i]); End; {Tnh tng} S:=0; For i:=1 To N Do If A[i]<0 Then S:=S+A[i]*A[i]; {In kt qu ra mn hnh} Writeln(S= , S); Readln;

End. Bi tp 5.3: Vit chng trnh nhp vo mt mng gm N s nguyn. Sp xp li mng theo th t tng dn v in kt qu ra mn hnh. tng: Cho bin i chy t 1 n N-1, ng thi cho bin j chy t i+1 n N: Nu A[i]>A[j] th i ch A[i], A[j]. Uses Crt; Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,j,Tam:Integer; Begin {Nhp mng} Write(Nhap N=); Readln(N); For i:=1 To N Do Begin

Write(A[,i,]=); Readln(A[i]); End; {Sp xp} For i:=1 To N-1 Do For j:=i+1 To N Do If A[i]>A[j] Then Begin Tam:=A[i]; A[i]:=A[j]; A[j]:=Tam; End; {In kt qu ra mn hnh} Writeln(Ket qua sau khi sap xep:); For i:=1 To N Do Write(A[i]:5); Readln; End. Bi tp 5.4: Vit chng trnh nhp vo mt mng A gm N s nguyn v nhp thm vo mt s nguyn X. Hy kim tra xem phn t X c trong mng A hay khng? tng: Dng thut ton tm kim tun t. So snh x vi tng phn t ca mng A. Thut ton dng li khi x=A[i] hoc i>N. Nu x=A[i] th v tr cn tm l i, ngc li th kt qu tm l 0 (khng tm thy). Uses Crt; Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,x:Integer; Function TimKiem(x, N: Integer; A:Mang):Integer; Var i:Integer; Begin I:=1; While (I <= N) and (X<>A[I]) do I:=I+1;

If I <= N Then Timkiem:=I Else Timkiem:=0; End; Begin {Nhp mng} Write(Nhap N=); Readln(N); For i:=1 To N Do Begin Write(A[,i,]=); Readln(A[i]); End; Write(Nhap X=); Readln(x); {Kt qu tm kim} If TimKiem(X,N,A)<>0 Then Writeln(Vi tri cua X trong mang la:, TimKiem(X,N,A)) Else Writeln(X khong co trong mang.); Readln; End. Bi tp 5.5: Gi s mng A c sp xp theo th t tng dn. Vit hm kim tra xem phn t X c trong mng A hay khng? tng: So snh x vi phn t gia mng A[giua]. Nu x=A[giua] th dng (v tr cn tm l ch s ca phn t gia ca mng). Ngc li, nu x>A[giua] th tm on sau ca mng [giua+1,cuoi], ngc li th tm on u ca mng [dau,giua-1]. Sau y l hm ci t cho thut ton ny: Function TimKiemNhiPhan(X, N: Integer; A: Mang):Integer; Var dau,cuoi,giua:Integer; Found:Boolean; Begin dau:=1; {im mt tri ca khong tm kim} cuoi:=N; {im mt phi ca khong tm kim} Found:=False; {cha tm thy} While (dau <=cuoi) and (Not Found) Do Begin

giua:=(dau + cuoi) Div 2; If X = A[giua] Then Found:=True { tm thy} Else If X > A[giua] Then dau:=giua+1 Else cuoi:=giua-1; End; If Found Then TimKiemNhiPhan:= giua Else TimKiemNhiPhan:=0; End; Bi tp 5.6: Vit chng trnh tm ma trn chuyn v ca ma trn A. tng: Dng mng 2 chiu lu tr ma trn. Gi B l ma trn chuyn v ca ma trn A, ta c: Bij = Aji. Uses Crt; Type Mang = ARRAY[1..10,1..10] Of Integer; Var A,B:Mang; m,n,i,j:Integer; Begin {Nhp ma trn} Write(Nhap s dng m=); Readln(m); Write(Nhap s ct n=); Readln(n); For i:=1 To m Do For j:=1 To n Do Begin Write(A[,i,j,]=); Readln(A[i,j]); End; {Tm ma trn chuyn v} For i:=1 To m Do For j:=1 To n Do B[i,j]:=A[j,i]; {In ma trn chuyn v ra mn hnh} For i:=1 To m Do Begin For j:=1 To n Do Write(B[i,j]:5);

Writeln; End; Readln; End. Bi tp 5.7: Cho mt mng 2 chiu A cp mxn gm cc s nguyn v mt s nguyn x. Vit chng trnh thc hin cc cng vic sau: a/ m s ln xut hin ca x trong A v v tr ca chng. b/ Tnh tng cc phn t ln nht ca mi dng. Uses Crt; Type Mang = ARRAY[1..10,1..10] Of Integer; Var A:Mang; m,n,i,j,x,dem,S,max:Integer; Begin {Nhp ma trn} Write(Nhap s dng m=); Readln(m); Write(Nhap s ct n=); Readln(n); For i:=1 To m Do For j:=1 To n Do Begin Write(A[,i,j,]=); Readln(A[i,j]); End; {Nhp x} Write(Nhap x=); Readln(x); {m s ln xut hin ca x v v tr ca x} dem:=0; Writeln(Vi tri cua x trong mang A: ); For i:=1 To m Do For j:=1 To n Do If x=A[i,j] Then Begin Write(i,j, ; );

dem:=dem+1; End; Writeln(So lan xuat hien cua x trong mang A la: ,dem); {Tnh tng cc phn t ln nht ca mi dng} S:=0; For i:=1 To m Do {duyt qua tng dng} Begin {Tm phn t ln nht ca dng th i} Max:=A[i,1]; For j:=2 To n Do {duyt tng phn t ca dng th i} If max<A[i,j] Then max:=A[i,j]; {Cng max vo bin S} S:=S+max; End; Writeln(Tong cac phan tu lon nhat cua moi dong la: ,S); Readln; End. Bi tp 5.8: Gii phng trnh bng phng php chia nh phn. tng: Gi s cn tm nghim ca phng trnh f(x)=0 trn on [a,b] vi y=f(x) ng bin v n tr trn on [a,b]. Ta gii nh sau: Gi m l trung im ca on [a,b]. Nu f(m)*f(a)<0 th gii hn on tm nghim thnh [a,m]. Tng t i vi on [m,b]. Qu trnh ny lp li cho n khi f(m)<, lc ny ta c 1 nghim gn ng l m. Gi s f(x) l mt a thc: f(x) = a0 + a1x + a2x2 + ... + anxn. Lc ny, ta c th dng mng mt chiu lu tr cc h s ai ca a thc. Uses Crt; Type HESO=Array[0..20] Of Real; Var a:HESO; n:Byte; Min,Max,epsilon:Real;

Procedure NhapDaThuc; Var i:Byte; Begin Write('Bac cua da thuc: n= '); Readln(n); Writeln('Nhap cac he so cua da thuc:'); For i:=0 To n Do Begin Write('a[',i,']='); Readln(a[i]); End; Writeln('Nhap doan tim nghiem:[a,b]'); Write('a= '); Readln(Min); Write('b= '); Readln(Max); Write('Nhap sai so cua phuong trinh: '); Readln(epsilon); End; {Tnh gi tr ca a thc} Function f(x:Real):Real; Var S,tam:Real; i:Byte; Begin S:=a[0]; tam:=1; For i:=1 To n Do Begin tam:=tam*x; S:=S+a[i]*tam; End; f:=S; End; Procedure TimNghiem(Min,Max:real); Var m:Real; Begin If f(Min)*f(Max)>0 Then Writeln('Phuong trinh vo nghiem.') Else If abs(f(Min))<epsilon Then Writeln('Nghiem la x=',min:0:2) Else If abs(f(Max))<epsilon Then Writeln('Nghiem la x=',max:0:2) Else Begin m:=(Min+Max)/2; If abs(f(m))<=epsilon Then Writeln('Nghiem la x=',m:0:2) Else If f(Min)*f(m)<0 Then TimNghiem(Min,m)

Else TimNghiem(m,Max); End; End; Begin NhapDaThuc; TimNghiem(Min,Max); Readln; End. Bi tp 5.9: Vit chng trnh nhp vo s t nhin N (N l), sau in cc s t 1 n n2 vo trong mt bng vung sao cho tng cc hng ngang, hng dc v 2 ng cho u bng nhau (bng ny c gi l Ma phng). V d: Vi N=3 v N=5 ta c Bc 2 7 6 3 1 9 2 1 6 2 5 9 5 1 2 8 2 1 2 0 1 4 4 3 8 Ty 7 2 13 1 19 ng 5 2 1 5 1 6 4 2 8 1 4 1 1 23 1 7 0 Nam Phung php: Xut pht t bn phi ca nm gia. i theo hng ng bc in cc s 1, 2, ... Khi in s, cn ch mt s nguyn tc sau: - Nu vt ra pha ngoi bn phi ca bng th quay tr li ct u tin. - Nu vt ra pha ngoi bn trn ca bng th quay tr li dng cui cng.

- Nu s in k chia ht cho N th s tip theo s c vit trn cng mt hng vi k nhng cch 1 v pha bn phi. Uses Crt; Var A:Array[1..20,1..20] Of Word; n,i,j,k:Word; Begin Write('Nhap N= '); Readln(n); Clrscr; {nh v xut pht} i:=n DIV 2 + 1; j:=n DIV 2 + 2; {in cc s k t 1 n n*n} For k:=1 To n*n Do Begin A[i,j]:=k; If k MOD n=0 Then j:=j+2 Else Begin {i theo hng ng bc} j:=j+1; i:=i-1; End; If j>n Then j:=j MOD n; If i=0 Then i:=n; End; {In kt qu ra mn hnh} For i:=1 To n Do Begin For j:=1 To n Do write(a[i,j]:4); Writeln; End; Readln; End. Bi tp 5.10: Vit chng trnh nhp vo 2 mng s nguyn A, B i din cho 2 tp hp (khng th c 2 phn t trng nhau trong mt tp hp). Trong qu trnh nhp, phi kim tra: nu phn t va nhp vo c trong mng

th khng b sung vo mng. In ra mn hnh cc phn t l giao ca 2 tp hp A, B. tng: Duyt qua tt c cc phn t aiA. Nu aiB th vit ai ra mn hnh. Uses Crt; Type Mang=ARRAY[1..50] Of Integer; Var A,B:Mang; n,m:Byte; Function KiemTra(x:Integer; n:Byte; A:Mang):Boolean; Var i:Byte; Found:Boolean; Begin Found:=False; i:=1; While (i<=n) AND (not Found) Do If x=A[i] Then Found:=True Else i:=i+1; KiemTra:=Found; End; Procedure NhapMang(Var n:Byte; Var A:Mang); Var ch:Char; x:Integer; Begin n:=0; Repeat Write('x='); Readln(x); If not KiemTra(x,n,A) Then Begin n:=n+1; A[n]:=x; End; Writeln('An ESC de ket thuc nhap!'); ch:=Readkey; Until ch=#27; End; Procedure GiaoAB(n:Byte; A:Mang;m:Byte; B:Mang); Var i:Byte;

Begin For i:=1 To n Do If KiemTra(A[i],m,B) Then Write(A[i]:4); End; Begin Clrscr; Writeln('Nhap mang A: '); NhapMang(n,A); Writeln('Nhap mang B: '); NhapMang(m,B); Writeln('Giao cua 2 mang A&B la: '); GiaoAB(n,A,m,B); Readln; End. Bi tp 5.11: Cho mt mng s nguyn gm n phn t. Tm dy con gm m phn t (m n) sao cho dy con ny c tng ln nht. (Dy con l dy cc phn t lin tip nhau trong mng). Uses Crt; Type Mang=ARRAY[1..50] Of Integer; Var A:Mang; n,m,i,j,k:Byte; S,Max:Integer; Begin Write('So phan tu cua mang: n= '); Readln(n); For i:=1 To n Do Begin Write('a[',i,']='); Readln(a[i]); End; Write('Nhap so phan tu cua day con: m= '); Readln(m); k:=1; {V tr phn t u tin ca dy con} {Gi s m phn t u tin ca mng A l dy con c tng ln nht} Max:=0; For i:=1 To m Do Max:=Max+A[i];

{Tm cc dy con khc} For i:=2 To n-m+1 Do Begin {Tnh tng ca dy con th i} S:=0; For j:=i To i+m-1 Do S:=S+A[j]; If S>Max Then {Nu dy con tm c c tng ln hn dy con trc} Begin Max:=S; {Thay tng mi} k:=i; {Thay v tr u tin ca dy con mi} End; End; Writeln('Day con co tong lon nhat la:'); For i:=k To k+m-1 Do Write(A[i]:5); Readln; End. Bi tp 5.12: Vit chng trnh in ra mn hnh tam gic Pascal. V d, vi n=4 s in ra hnh sau: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 tng: Tam gic Pascal c to ra theo qui lut sau: + Mi dng u bt u v kt thc bi s 1. + Phn t th j dng k nhn c bng cch cng 2 phn t th j-1 v j dng th k-1. Uses Crt; Var Dong:Array[0..20] Of Byte; n,i,j:Byte; Begin Write('n= '); Readln(n);

Clrscr; Dong[0]:=1; Writeln(Dong[0]:4); {Khoi tao gia tri cua dong} For i:=1 To n Do Dong[i]:=0; {Voi moi dong i} For i:=1 To n Do Begin For j:=i DownTo 1 Do Begin Dong[j]:=Dong[j-1]+Dong[j]; Write(Dong[j]:4); End; Writeln(Dong[i]:4); End; Readln; End. BI TP T GII Bi tp 5.13: Vit chng trnh nhp vo mt dy s thc v s thc x. Thng bo ln mn hnh s lng cc phn t trong dy bng x v v tr ca chng. Bi tp 5.14: Nhp vo mt mng cc s nguyn. a/ Xp li mng theo th t gim dn. b/ Nhp vo mt s nguyn t bn phm. Chn s vo mng sao cho mng vn c th t gim dn. (khng c xp li mng) Gi : - Tm v tr cn chn: i. - y cc phn t t v tr i ti n sang phi 1 v tr. - Gn: A[i]=x;

Bi tp 5.15: Cho 2 mng s nguyn: Mng A c m phn t, mng B c n phn t. a/ Sp xp li cc mng theo th t gim dn. b/ Trn 2 mng li thnh mng C sao cho mng C vn c th t gim dn (Khng c xp li mng C). Gi : - Dng 2 ch s i,j duyt qua cc phn t ca 2 mng A, B v k l ch s cho mng C. - Trong khi (i<=m) v (j<=n) th: {Tc l khi ng thi c 2 dy A, B u cha duyt ht} + Nu A[i]>B[j] th: C[k]:=A[i]; i:=i+1; + Ngc li: C[k]:=B[j]; j:=j+1; - Nu dy no ht trc th em phn cn li ca dy kia b sung vo cui dy C. Bi tp 5.16: Vit chng trnh tnh tng v tch 2 ma trn vung A, B cp n. Gi : Cng thc tnh tng 2 ma trn: Cij = Aij + Bij Cng thc tnh tch 2 ma trn: Cij =

A
k =1

ik

* Bkj

Bi tp 5.17: Vit chng trnh nhp vo 2 dy s nguyn (a) n v (b)m, m n. Kim tra xem dy {b} c phi l dy con ca dy {a} khng? Bi tp 5.18: Vit chng trnh nhp vo mt dy s nguyn a1, a2, ..., an. Tm trong dy {a} mt dy con tng dn di nht (c s phn t ln nht) v in ra mn hnh dy con . Bi tp 5.19: Cho mng 2 chiu A cp mxn. Vit chng trnh sp xp li mng A theo yu cu sau: a/ Cc phn t trn mi dng c sp xp theo th t gim dn. b/ Cc dng c sp xp li theo th t tng dn ca tng cc phn t trn mi dng.

Bi tp 5.20: Vit chng trnh kim tra mt dy cc s nguyn c nhp vo t bn phm c sp theo th t tng dn hay cha theo 2 cch: qui v khng qui. Gi : - Nu dy c 1 phn t th dy tng dn. - Ngc li: + Nu A[n-1]>A[n] th dy khng tng dn. + Ngc li: Gi qui vi dy c n-1 phn t (b bt i phn t cui cng). Bi tp 5.21: Vit chng trnh nhp vo 2 mng s nguyn A, B i din cho 2 tp hp (khng th c 2 phn t trng nhau trong mt tp hp). Trong qu trnh nhp, phi kim tra: nu phn t va nhp vo c trong mng th khng b sung vo mng. a/ In ra mn hnh hp ca 2 tp hp A, B. b/ In ra mn hnh hiu ca 2 tp hp A, B. Gi : a/ - In ra mn hnh tt c cc phn t ca tp hp A. - Duyt qua tt c cc phn t biB. Nu biA th in bi ra mn hnh. b/ Duyt qua tt c cc phn t aiA. Nu aiB th in ai ra mn hnh. Bi tp 5.22: Vit chng trnh tnh tng ca 2 a thc h(x) = f(x) + g(x). Trong , mi a thc c dng: a0 + a1x + a2x2 + ... + anxn. Gi : Dng cc mng A, B, C lu tr cc h s ai ca cc a thc f(x), g(x) v h(x). Bi tp 5.23: Vit chng trnh tm cc phng n t 8 qun hu trn bn c vua (ma trn 8x8) sao cho cc qun hu khng n c nhau. Gi : Dng gii thut quay lui.

Bi tp 5.24: Vit chng trnh tnh nh thc ca ma trn vung cp n. Gi : Dng cch tnh nh thc theo phng php GAUSE.

You might also like