You are on page 1of 59

Bai_tap_Pascal

Bai tap Pascal

CC THUT TON V S
THUT TON KIM TRA S NGUYN T
Thut ton ca ta da trn tng: nu n >1 khng chia ht cho s nguyn
no trong tt c cc s t 2 n th n l s nguyn t. Do ta s kim tra tt
c cc s nguyn t 2 n c round(sqrt(n)), nu n khng chia ht cho s no
trong th n l s nguyn t.
Nu thy biu thc round(sqrt(n)) kh vit th ta c th kim tra t 2 n n
div 2.
Hm kim tra nguyn t nhn vo mt s nguyn n v tr li kt qu l true
(ng) nu n l nguyn t v tr li false nu n khng l s nguyn t.
function ngto(n:integer):boolean;
var i:integer;
begin
ngto:=false;
if n<2 then exit;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then exit; {nu n chia ht cho i th n khng l nguyn t
=> thot lun}
ngto:=true;
end;
Ch : Da trn hm kim tra nguyn t, ta c th tm cc s nguyn t t 1
n n bng cch cho i chy t 1 n n v gi hm kim tra nguyn t vi tng
gi tr i.

THUT TON TNH TNG CC CH S CA MT S


NGUYN

tng l ta chia s cho 10 ly d (mod) th c ch s hng n v, v


ly s div 10 th s c phn cn li. Do s chia lin tc cho n khi
khng chia c na (s bng 0), mi ln chia th c mt ch s v ta
cng dn ch s vo tng.
Hm tnh tng ch s nhn vo 1 s nguyn n v tr li kt qu l tng cc
ch s ca n:
function tongcs(n:integer): integer;
var s : integer;
begin
s := 0;
while n <> 0 do begin
s := s + n mod 10;
n := n div 10;
end;
tongcs := s;
end;
Ch : Tnh tch cc ch s cng tng t, ch cn ch ban u gn s l 1
v thc hin php nhn s vi n mod 10.

THUT TON EUCLIDE TNH UCLN


tng ca thut ton Euclide l UCLN ca 2 s a,b cng l UCLN ca 2 s
b v a mod b, vy ta s i a l b, b l a mod b cho n khi b bng 0. Khi
UCLN l a.
Hm UCLN nhn vo 2 s nguyn a,b v tr li kt qu l UCLN ca 2 s
.
function UCLN(a,b: integer): integer;
var r : integer;
begin
while b<>0 do begin

r := a mod b;
a := b;
b := r;
end;
UCLN := a;
end;
Ch : Da trn thut ton tnh UCLN ta c th kim tra c 2 s nguyn
t cng nhau hay khng. Ngoi ra cng c th dng ti gin phn s bng
cch chia c t v mu cho UCLN.

THUT TON TNH TNG CC C S CA MT S


NGUYN
tnh tng cc c s ca s n, ta cho i chy t 1 n n div 2, nu n chia
ht cho s no th ta cng s vo tng. (Ch cch tnh ny cha xt n
cng l c s ca n).
function tongus(n : integer): integer;
var i,s : integer;
begin
s := 0;
for i := 1 to n div 2 do
if n mod i = 0 then s := s + i;
tongus := s;
end;
Ch : Da trn thut ton tnh tng c s, ta c th kim tra c 1 s
nguyn c l s hon thin khng: s nguyn gi l s hon thin nu n bng
tng cc c s ca n.

CC THUT TON V VNG LP


THUT TON TNH GIAI THA MT S NGUYN

Giai tha n! l tch cc s t 1 n n. Vy hm giai tha vit nh sau:


function giaithua(n : integer) : longint;
var i : integer; s : longint;
begin
s := 1;
for i := 2 to n do s := s * i;
giaithua := s;
end;

THUT TON TNH HM M


Trong Pascal ta c th tnh ab bng cng thc exp(b*ln(a)). Tuy nhin nu
a khng phi l s dng th khng th p dng c.
Ta c th tnh hm m an bng cng thc lp nh sau:
function hammu(a : real; n : integer): real;
var s : real; i : integer;
begin
s := 1;
for i := 1 to n do s := s * a;
hammu := s;
end;

THUT TON TNH CNG THC CHUI


Thut ton tnh hm ex:

t: v , ta c cng thc truy hi:


Khi , ta c th tnh cng thc chui trn nh sau:
function expn(x: real; n : integer): real;

var s,r : real; i : integer;


begin
s := 1; r := 1;
for i := 1 to n do begin
r := r * x / i;
s := s + r;
end;
expn := s;
end;

CC BI TP V MNG 1 CHIU V 2 CHIU


BI TP 1
Nhp vo mt s n (5<=n<=10) v n phn t ca dy a, 1<ai<100 (c kim
tra d liu khi nhp).
a)

In ra cc phn t l s nguyn t ca dy.

b)

Tnh c chung ln nht ca tt c cc phn t ca dy.

c)

Tnh biu thc sau:

d)

Sp xp dy tng dn v in ra dy sau sp xp.

HNG DN
Ta nn chia chng trnh thnh cc chng trnh con, mi chng trnh
thc hin mt yu cu. Ngoi ra ta cng vit thm cc hm kim tra nguyn
t, hm m, hm UCLN thc hin cc yu cu .
Chng trnh nh sau:
Khai bo d liu:
uses crt;
var n : integer;
a : array[1..10] of integer; {n<=10 nn mng c ti a 10 phn t}

Th tc nhp d liu, c kim tra khi nhp.


procedure nhap;
var i : integer;
begin
clrscr;
write('NHAP VAO SO PHAN TU N = ');
repeat
readln(n);
if (5<=n) and (n<=10) then break; {nu tho mn th dng
vng lp}
writeln('Khong hop le (5<=n<=10). Nhap lai!!!'); {ngc
li th bo li}
until false;
writeln('NHAP VAO N PHAN TU (1<ai<100)');
for i := 1 to n do begin
write('a',i,'=');
repeat
readln(a[i]);
if (1<a[i]) and (a[i]<100) then break;
writeln('Khong hop le. Nhap lai!!!');
until false;
end;
end;
function ngto(n : integer): boolean; {hm kim tra nguyn t, xem gii
thch phn trn}

var i : integer;
begin
ngto := false;
if n < 2 then exit;
for i := 2 to round(sqrt(n)) do
if n mod i = 0 then exit;
ngto := true;
end;
Th tc in cc s nguyn t ca mt mng
procedure inngto;
var i :integer;
begin
writeln('CAC PHAN TU NGUYEN TO TRONG DAY:');
for i := 1 to n do

{duyt qua mi phn t t 1

n n}
if ngto(a[i]) then writeln(a[i]);
t th in ra}
end;
function UCLN(a,b: integer): integer;
var r : integer;
begin
while b<>0 do begin
r := a mod b;
a := b;
b := r;

{nu ai l nguyn

end;
UCLN := a;
end;
Th tc tnh UCLN ca cc phn t ca mt mng
procedure TinhUC;
var i,u : integer;
begin
u := a[1];
t 1 n i}
for i := 2 to n do u := UCLN(u,a[i]);
t 1 n i-1 v ai}

{u l UCLN ca cc phn t

{l UCLN ca cc phn t

writeln('UCLN cua ca day la:',u);


end;
function hammu(a : real; n : integer): real; {hm m tnh an}
var s : real; i : integer;
begin
s := 1;
for i := 1 to n do s := s * a;
hammu := s;
end;
Th tc tnh tng cc phn t c ly m:
procedure tong;
var s : real; i : integer; {s phi khai bo l s thc trnh trn s}
begin
s := 0;

for i := 1 to n do s := s + hammu(a[i],i); {s := s + (ai)i}


writeln('Tong can tinh:',s:10:0);
end;
Th tc sp xp tng dn cc phn t ca mt mng:
procedure sxep;
var i,j,tg : integer;
begin
for i := 1 to n-1 do
for j := i + 1 to n do
if a[i] > a[j] then begin
tg := a[i]; a[i] := a[j]; a[j] := tg;
end;
writeln('DAY SAU KHI SAP XEP TANG DAN:');
for i := 1 to n do writeln(a[i]);
end;
Chng trnh chnh: ln lt gi tng th tc
BEGIN
nhap;
inngto;
tinhuc;
tong;
sxep;
END.

BI TP 2

Tm phn t nh nht, ln nht ca mt mng (cn ch ra c v tr ca phn


t).

HNG DN
Gi s phn t min cn tm l phn t k. Ban u ta cho k=1. Sau cho i
chy t 2 n n, nu a[k] > a[i] th r rng a[i] b hn, ta gn k bng i. Sau
khi duyt ton b dy th k s l ch s ca phn t min. (Cch tm min ny
n gin v t v tr ta cng suy ra c gi tr).
procedure timmin;
var i, k : integer;
begin
k := 1;
for i := 2 to n do
if a[k] > a[i] then k := i;
writeln('Phan tu nho nhat la a[',k,']=',a[k]);
end;
Tm max cng tng t, ch thay du so snh.
procedure timmax;
var i, k : integer;
begin
k := 1;
for i := 2 to n do
if a[k] < a[i] then k := i;
writeln('Phan tu lon nhat la a[',k,']=',a[k]);
end;
Ch :

1. Nu p dng vi mng 2 chiu th cng tng t, ch khc l duyt qua


mi phn t ca mng 2 chiu th ta phi dng 2 vng for. V v tr mt phn t
cng gm c dng v ct.
V d 1. Tm phn t nh nht v ln nht ca mng 2 chiu v i ch chng
cho nhau:
procedure exchange;
var i,j,i1,j1,i2,j2,tg : integer;
begin
i1 := 1; j1 := 1; {i1,j1 l v tr phn t min}
i2 := 1; j2 := 1; {i2,j2 l v tr phn t max}
for i := 1 to m do
for j := 1 to n do begin
if a[i1,j1] > a[i,j] then begin {so snh tm min}
i1 := i; j1 := j;

{ghi nhn v tr min mi}

end;
if a[i2,j2] < a[i,j] then begin {so snh tm max}
i2 := i; j2 := j; {ghi nhn v tr max mi}
end;
end;
tg := a[i1,j1]; a[i1,j1] := a[i2,j2]; a[i2,j2] := tg; {i ch}
end;
2. Nu cn tm phn t ln nht / nh nht hoc sp xp 1 dng (1 ct) ca
mng 2 chiu th ta cng coi dng (ct) nh 1 mng 1 chiu. Chng hn tt
c cc phn t trn dng k u c dng ch s l a[k,i] vi i chy t 1 n n (n
l s ct).
V d 2. Tm phn t ln nht ca dng k v i ch n v phn t u dng.
procedure timmax(k : integer);

var i, vt, tg : integer;


begin
vt := 1; {vt l v tr ca phn t min dng k}
for i := 1 to n do
if a[k,i] > a[k,vt] then vt := i; {cc phn t dng k c dng
a[k,i]}
tg := a[k,1]; a[k,1] := a[k,vt]; a[k,vt] := tg;
end;
V d 3. Sp xp gim dn ct th k.
procedure sapxep(k: integer);
var i,j,tg : integer;
begin
for i := 1 to m-1 do {mi ct c m phn t, v bng c m dng}
for j := i+1 to m do
if a[i,k] > a[j,k] then begin {cc phn t ct k c
dng a[i,k]}
tg := a[i,k]; a[i,k] := a[j,k]; a[j,k] := tg;
end;
end;

BI TP 3
Tm cc phn t tho mn 1 tnh cht g .

HNG DN
Nu tnh cht cn tho mn l cn kim tra phc tp (chng hn: nguyn t,
hon thin, c tng ch s bng 1 gi tr cho trc) th ta nn vit mt hm
kim tra 1 phn t c tnh cht khng. Cn tnh cht cn kim tra n
gin (chn / l, dng / m, chia ht, chnh phng) th khng cn.

Sau ta duyt qua cc phn t t u n cui, phn t no tho mn tnh


cht th in ra.
V d 1. In ra cc s chnh phng ca mt mng:
kim tra n c chnh phng khng, ta ly cn n, lm trn ri bnh
phng v so snh vi n. Nu biu thc sqr(round(sqrt(n))) = n l true th n
l chnh phng.
Vy in cc phn t chnh phng ta vit:
for i := 1 to n do begin
if sqr(round(sqrt(a[i]))) = a[i] then writeln(a[i]);
V d 2. In ra cc s hon thin t 1 n n:
kim tra s c hon thin ta dng hm tng c ( c phn u).
for i := 1 to n do begin
if tongus(i) = i then writeln(i);
V d 3. In ra cc phn t ca mng chia 3 d 1, chia 7 d 2:
for i := 1 to n do begin
if (a[i] mod 3=1) and (a[i] mod 7=2) then writeln(a[i]);
V d 4. In ra cc s c 3 ch s, tng ch s bng 20, chia 7 d 2.
Ta dng hm tng ch s c trn:
for i := 100 to 999 do begin {duyt qua mi s c 3 ch s}
if (tongcs(i)=20) and (i mod 7=2) then writeln(i);
Ch : Nu p dng vi mng 2 chiu th cng tng t, ch khc l duyt
qua mi phn t ca mng 2 chiu th ta phi dng 2 vng for.
V d, in cc phn t nguyn t ca 1 mng 2 chiu:
for i := 1 to m do begin
for j := 1 to n do begin
if ngto(a[i,j]) then writeln(a[i,j]);

BI TP 4
Nhp v in mng 2 chiu dng ma trn (m dng, n ct).

HNG DN
nhp cc phn t ca mng 2 chiu dng ma trn, ta cn dng cc lnh
sau ca unit CRT (nh phi c khai bo user crt u chng trnh).
GotoXY(a,b): di chuyn con tr mn hnh n v tr (a,b) trn mn hnh (ct
a, dng b). Mn hnh c 80 ct v 25 dng.
whereX: hm cho gi tr l v tr ct ca con tr mn hnh.
whereY: hm cho gi tr l v tr dng ca con tr mn hnh.
Khi nhp 1 phn t ta dng lnh readln nn con tr mn hnh s xung
dng, do cn quay li dng ca bng lnh GotoXY(j * 10, whereY -1 ), nu
ta mun mi phn t ca ma trn ng vi 10 ct mn hnh.
procedure nhap;
var i,j : integer;
begin
clrscr;
write('Nhap m,n = '); readln(m,n);
for i := 1 to m do begin
for j := 1 to n do begin
write('A[',i,',',j,']='); readln(a[i,j]); {nhp xong th
xung dng}
gotoXY(j*10,whereY-1); {di chuyn v dng trc, v
tr tip theo}
end;
writeln; {nhp xong 1 hng th xung dng}
end;
end;

in bng dng ma trn th n gin hn, vi mi dng ta s in cc phn t


trn 1 hng ri xung dng:
procedure inbang;
var i,j : integer;
begin
for i := 1 to m do begin

{vit cc phn t ca hng

i}
for j := 1 to n do write(a[i,j]:6);
cn phi cho thng ct v khng st nhau}

{mi phn t chim 6

writeln; {ht 1 hng th xung dng}


end;
end;

CC BI TP V XU K T
BI TP 1
Nhp vo mt xu s khc rng v thc hin chun ho xu, tc l:
a)

Xo cc du cch tha

b)
Chuyn nhng k t u t thnh ch hoa, nhng k t khc thnh ch
thng.

HNG DN
Chng trnh nh sau:
var s : string;
procedure chuanhoa(var s : string); {s l tham bin c th thay i
trong chng trnh con}
var i : integer;
begin
while s[1]=' ' do delete(s,1,1); {xo cc k t cch tha u xu}

while s[length(s)]=' ' do delete(s,length(s),1); {xo cc k t cch tha


cui xu}
{xo cc k t cch tha gia cc t: nu s[i-1] l cch th s[i] l du cch
l tha. Phi dng vng lp for downto v nu trong qu trnh xo ta lm
gim chiu di ca xu, nu for to s khng dng c.}
for i := length(s) downto 2 do
if (s[i]=' ') and (s[i-1]=' ') then delete(s,i,1);
{Chuyn k t u xu thnh ch hoa}
s[1] := Upcase(s[1]);
for i := 2 to length(s) do
if s[i-1]=' ' then s[i] := Upcase(s[i]) {Chuyn s[i] l k t u t thnh
ch hoa.}
else
if s[i] in ['A'..'Z'] then {s[i] l k t ch hoa khng u mt t}
s[i] := chr(ord(s[i]) + 32); {th phi chuyn thnh ch thng}
end;
BEGIN
write('Nhap vao 1 xau s:');
readln(s);
chuanhoa(s);
writeln('Xau s sau khi chuan hoa:',s);
readln;
END.

BI TP 2
Nhp vo mt xu x khc rng v thng bo xu c phi l xu i xng
hay khng?

HNG DN
Xu i xng nu n bng chnh xu o ca n. Vy cch n gin nht l
ta s xy dng xu o ca x v kim tra xem n c bng x khng. xy
dng xu o ca x, cch n gin nht l cng cc k t ca x theo th t
ngc (t cui v u).
Chng trnh:
var x : string;
(************************************************)
function doixung(x : string) : boolean; {hm kim tra xu i xng}
var y : string;
i : integer;
begin
y := '';
{xy dng y l xu o ca x, bng cch cng dn cc k t ca x vo y theo
th t ngc}
for i := length(x) downto 1 do y := y + x[i];
{so snh x v xu o ca n}
if x=y then doixung := true else doixung := false;
end;
BEGIN
write('Nhap vao 1 xau:');
readln(x);
if doixung(x) then
writeln('Xau doi xung!')
else
writeln('Xau khong doi xung!');

readln;
END.

BI TP 3
Nhp vo mt xu s v m xem n c bao nhiu t. T l mt dy cc k t,
cch nhau bi du cch?

HNG DN
Cch m t n gin nht l m du cch: nu s[i] l k t khc cch v
s[i-1] l k t cch th chng t s[i] l v tr bt u ca mt t. Ch l t u
tin ca xu khng c du cch ng trc.
Chng trnh:
var s : string;
{Hm m s t ca mt xu}
function sotu(s : string) : integer;
var i, dem : integer;
begin
{cng thm du cch pha trc xu m c t u tin}
s := ' ' + s; dem := 0;
for i := 2 to length(s) do {s[i] l v tr bt u 1 t}
if (s[i-1]=' ') and (s[i]<>' ') then dem := dem + 1;
sotu := dem;
end;
BEGIN
write('Nhap vao 1 xau:');
readln(s);
writeln('So tu trong xau la:',sotu(s));
readln;

END.

BI TP 4
Nhp vo mt xu s v in ra cc t ca n (T l mt dy cc k t, cch
nhau bi du cch). Xu c bao nhiu t l i xng?

HNG DN
C nhiu cch tch mt xu thnh cc t. Cch n gin nht tin hnh
nh sau:
1)
xu).

B qua cc du cch cho n khi gp mt k t khc cch (hoc ht

2)
Ghi cc k t tip theo vo xu tm cho n khi gp du cch hoc ht
xu, khi ta c 1 t.
3)

Nu cha ht xu th quay li bc 1.

Mi khi tm c mt t, ta ghi lun n ra mn hnh, nu t l i xng


th tng bin m. Ta cng c th lu cc t tch c vo mt mng nu bi
tp yu cu dng n nhng t trong cc cu sau.
Chng trnh:
var s : string;
dem : integer;
{Hm kim tra t i xng}
function doixung(x : string) : boolean;
var y : string;
i : integer;
begin
y := '';
for i := length(x) downto 1 do y := y + x[i];
if x=y then doixung := true else doixung := false;
end;

{Th tc thc hin tch t}


procedure tach;
var i, len : integer;
t : string;
begin
writeln('Cac tu trong xau:');
i := 1; len := length(s);
repeat
{B1: b qua cc du cch cho n khi ht xu hoc gp 1 k t khc cch:}
while (s[i]=' ') and (i<=len) do inc(i);
if i>=len then break; {nu ht xu th dng}
t := '';

{t l bin tm lu t ang tch}

{B2: ly cc k t khc cch a vo bin tm cho n khi ht xu hoc gp


1 k t cch:}
while (s[i]<>' ') and (i<=len) do begin
t := t + s[i];
inc(i);
end;
{in ra t va tch c v kim tra i xng}
writeln(t);
if doixung(t) then inc(dem);
until i >= len;
writeln('So tu doi xung trong xau:',dem);
end;

(************************************************)
BEGIN
write('Nhap vao 1 xau:');
readln(s);
tach;
END.

BI TP 5
Mt s nguyn gi l palindrom nu n c t tri sang cng bng c t
phi sang. V d 121 l mt s palindrom. Nhp mt dy n phn t nguyn
dng t bn phm, 5<= n<=20 v cc phn t c 2 n 4 ch s. In ra cc
s l palindrom trong dy.

HNG DN
Mt s l palindrom th xu tng ng ca n l xu i xng. Ta s xy
dng mt hm kim tra mt s c phi l palindrom khng bng cch chuyn
s thnh xu v kim tra xu c i xng khng?
Chng trnh:
uses crt;
var n : integer;
a : array[1..20] of integer;
{Th tc nhp d liu}
procedure nhap;
var i : integer;
begin
clrscr;
repeat
write('n= '); readln(n);

if (n<=20) and (n>=5) then break; {nu tho mn th thot khi


vng lp}
writeln('Yeu cau 5<=n<=20. Nhap lai!');
until false;
for i := 1 to n do
repeat
write('A[',i,']='); readln(a[i]);
if (a[i]<=9999) and (a[i]>=10) then break; {a[i] c 2 n 4 ch
s}
writeln('Yeu cau cac phan tu co 2 den 4 chu so. Nhap lai!');
until false;
end;
{Hm kim tra bng cc kim tra xu i xng}
function palindrom(k : integer): boolean;
var x,y : string;
i : integer;
begin
str(k,x);

{chuyn k thnh xu x}

y := '';
for i := length(x) downto 1 do y := y + x[i];
{nu x l i xng th k l palindrom}
if x=y then palindrom := true else palindrom := false;
end;
{In kt qu:}
procedure palin;

var i : integer;
begin
writeln('Cac so la palindrom trong day:');
for i := 1 to n do
if palindrom(a[i]) then writeln(a[i]);
readln;
end;
(* Chng trnh chnh *)
BEGIN
nhap;
palin;
END.

CC BI TP V TP
BI TP 1
Nhp mt mng 2 chiu m dng, n ct t file BANGSO.TXT. Cu trc file
nh sau: dng u l 2 s m v n, cch nhau bng du cch, m dng sau, mi
dng n s nguyn.
a)

Hy in ra nhng s l s nguyn t ca mng.

b)

Tm v tr phn t ln nht trong mng.

c)

Sp xp mi dng ca mng tng dn v in ra mng dng ma trn.

HNG DN
Ta khai bo mt mng 2 chiu v nhp d liu t file vo mng. Qu trnh
nhp t file vn bn ging nh nhp t bn phm, khng cn thc hin kim
tra d liu.
sp xp mng theo yu cu, ta thc hin sp xp tng dng ca mng
bng cch vit mt th tc sp xp (kiu i ch cho n gin) coi mi dng
ca mng nh 1 mng 1 chiu.

Chng trnh:
var m,n : integer;
a : array[1..100,1..100] of integer;
(* Nhp d liu *)
procedure nhap;
var f : text;
i,j : integer;
begin
assign(f,'BANGSO.TXT'); reset(f);
readln(f,m,n);
for i := 1 to m do
for j := 1 to n do read(f,a[i,j]);
close(f);
end;
function ngto(k : integer): boolean;
var i : integer;
begin
ngto := false;
if k < 2 then exit;
for i := 2 to round(sqrt(k)) do
if k mod i = 0 then exit;
ngto := true;
end;
procedure inngto;

var i,j : integer;


begin
writeln('Cac phan tu nguyen to cua mang:');
for i := 1 to m do
for j := 1 to n do
if ngto(a[i,j]) then write(a[i,j],' ');
writeln;
end;
procedure timmax;
var max,i,j,im,jm : integer;
begin
max := a[1,1]; im := 1; jm := 1; {im, jm lu to phn t t max}
for i := 1 to m do
for j := 1 to n do
if max < a[i,j] then begin
max := a[i,j]; {mi ln gn max th gn to lun}
im := i; jm := j;
end;
writeln('Phan tu lon nhat bang la A[',im,',',jm,']=',max);
end;
{Th tc thc hin sp xp tng dn dng th k. Cc phn t dng k c dng
a[k,i]}
procedure xepdong(k: integer);
var i,j, tg : integer;

begin
for i := 1 to n do
for j := i+1 to n do
if a[k,i] > a[k,j] then begin
tg := a[k,i]; a[k,i] := a[k,j]; a[k,j] := tg;
end;
end;
procedure sapxep;
var i,j : integer;
begin
for i := 1 to m do xepdong(i); {sp xp tng dng}
writeln('Mang sau khi sap xep:');
for i := 1 to m do begin

{in dng ma trn}

for j := 1 to n do write(a[i,j] : 5); {in cc phn t trn 1 dng}


writeln;

{in ht 1 dng th xung dng}

end;
end;
BEGIN
nhap;
inngto;
timmax;
sapxep;
END.

BI TP 2

Nhp 2 s m, n t bn phm, sau sinh ngu nhin mn s nguyn ngu


nhin c gi tr t 15 n 300 ghi vo file BANG.TXT. Sau thc hin cc
yu cu sau:
a)

In mn s sinh dng ma trn m dng, n ct.

b)

In ra cc s chnh phng.

Yu cu: khng c dng mng 2 chiu lu tr d liu.

HNG DN
Do yu cu khng c dng mng 2 chiu lu tr d liu nn ta s c
file n u, x l n y.
sinh cc s ngu nhin t a n b, ta dng biu thc a + random(b-a+1).
kim tra s k c phi l s chnh phng khng, ta ly cn bc 2
ca k, lm trn ri bnh phng. Nu kt qu bng k th k l s chnh phng.
Tc l kim tra sqr(round(sqrt(k))) = k.
Chng trnh:
var m,n : integer;
f : text;
procedure sinh;
var
i,j : integer;
begin
write('Nhap vao 2 so m,n: '); readln(m,n);
assign(f,'BANG.TXT'); rewrite(f);
writeln(f,m,' ',n);
for i := 1 to m do begin
for j := 1 to n do

write(f,15 + random(300-15+1) : 6); {sinh s ngu nhin t 15 n


300}
writeln(f);
end;
close(f);
end;
{Hm chnh phng}
function cp(k : integer) : boolean;
begin
if sqr(round(sqrt(k))) = k then cp := true
else cp := false;
end;
procedure chinhphuong;
var
i,j,k : integer;
begin
assign(f,'BANG.TXT'); reset(f);
readln(f,m,n);
writeln('CAC SO CHINH PHUONG CUA BANG:');
for i := 1 to m do begin
for j := 1 to n do begin
read(f,k);
if cp(k) then write(k,' '); {va c va x l}
end;

end;
close(f);
end;
procedure inbang;
var
i,j,k : integer;
begin
assign(f,'BANG.TXT'); reset(f); {m li in dng ma trn}
readln(f,m,n);
writeln(#10,'IN BANG DANG MA TRAN:');
for i := 1 to m do begin
for j := 1 to n do begin
read(f,k);
write(k : 6);
end;
writeln;
end;
close(f);
end;
BEGIN
sinh;
chinhphuong;
inbang;
END.

{c n u in n }

CC BI TP V BN GHI
BI TP 1
Vit chng trnh qun l sch. Mi cun sch gm tn sch, tn nh xut
bn, nm xut bn, gi tin, s lng:
a)

a ra danh sch cc cun sch ca nh xut bn Gio dc.

b)

Tnh tng s tin sch.

c)
hnh.

Sp xp danh sch theo nm xut bn gim dn v ghi kt qu ra mn

d)
In ra mn hnh cc cun sch c gi tin<=10.000 v xut bn sau
nm 2000.

HNG DN
M t mi cun sch l mt bn ghi, cc thng tin v n (tn sch, tn tc
gi,) l cc trng. Danh sch cun sch s l mt mng cc bn ghi.
Khai bo kiu d liu m t sch nh sau:
type
sach = record
ten : string[30];

{tn sch}

nxb : string[20];

{tn Nh xut bn}

namxb : integer; {nm xut bn}


soluong : integer; {s lng}
gia : real;

{gi tin}

end;
Thng tin ca tt c cc cun sch ta lu trong mt mng cc bn ghi kiu
sach:
var
ds : array[1..100] of sach;
n : integer;

Nhp d liu: ta nhp tn sch trc. Nu tn sch l xu rng th ng


nhp, ngc li ln lt nhp cc thng tin khc:
procedure nhap;
var t : string;
begin
ClrScr;
writeln('NHAP THONG TIN VE CAC CUON SACH');
writeln('(nhap ten sach la xau rong neu muon dung)');
repeat
write('Ten sach: ');
readln(t);
if t='' then break;
n := n + 1;
with ds[n] do begin
ten := t;
write('NXB: ');readln(nxb);
write('Nam xuat ban: ');readln(namxb);
write('So luong: ');readln(soluong);
write('Gia tien: ');readln(gia);
end;
until false;
end;
Cu a: ta s duyt qua ton b danh sch cc cun sch, kim tra nu tn
nh xut bn l Gio dc th in ra tt c cc thng tin ca cun sch tng
ng:

procedure insach;
var
i : integer;
begin
Clrscr;
writeln('CAC CUON SACH CUA NXB GIAO DUC:');
for i:=1 to n do
with ds[i] do
if nxb='Giao duc' then begin
writeln('Ten:',ten);
writeln('Nam xuat ban:',namxb);
writeln('So luong:',soluong);
writeln('Gia tien:',gia);
end;
readln;
end;
Cu b: ta cng duyt qua ton b cc cun sch, nhn s lng v gi tin
ri cng dn vo mt bin tng. Sau in ra bin tng :
procedure tinh;
var i : integer;
tong : real;
begin
tong := 0;
for i := 1 to n do

with ds[i] do tong := tong + gia * soluong;


writeln('TONG GIA TRI CUA TAT CA CAC CUON SACH:', tong:0:3);
end;
Cu c: Sp xp danh sch gim dn theo nm xut bn bng phng php
ni bt (2 vng for). Ch bin trung gian trong i ch phi c kiu sach th
mi gn c.
procedure sxep;
var i,j : integer;
tg : sach;
begin
for i := 1 to n do
for j := i + 1 to n do
if ds[i].namxb < ds[j].namxb then begin
tg := ds[i]; ds[i] := ds[j]; ds[j] := tg;
end;
for i:=1 to n do
with ds[i] do begin
writeln('Ten:',ten);
writeln('Nam xuat ban:',namxb);
writeln('So luong:',soluong);
writeln('Gia tien:',gia);
end;
readln;
end;
Cu d: ta lm tng t vic in danh sch cc sch ca NXB Gio dc:

procedure inds;
var i : integer;
begin
writeln('CAC CUON SACH GIA RE HON 10000 VA XUAT BAN TU NAM
2000:');
for i := 1 to n do
with ds[i] do
if (gia <= 10000) and (namxb >= 2000) then writeln(ten);
end;
Chng trnh chnh: Ln lt gi cc chng trnh con theo th t:
BEGIN
nhap;
insach;
tinh;
sxep;
inds;
readln;
END.

BI TP 2
Vit chng trnh qun l cn b. Thng tin v cn b gm tn, tui, h s
lng, ph cp, thu nhp.
a)
Nhp thng tin cn b t file vn bn CANBO.TXT. Cc thng tin gm
tn, tui, h s lng, ph cp, mi thng tin trn mt dng.
Tnh thu nhp = h s lng 350000 + ph cp
b)

a ra danh sch cc b tr (tui <= 30), in y cc thng tin

c)
Sp xp tn cn b theo abc v ghi ln file truy cp trc tip SAPXEP.DAT.
d)
c danh sch t file SAPXEP.DAT, in ra mn hnh cc cn b c thu
nhp t 3 triu tr ln.

HNG DN
Lm tng t bi 1, ch l nhp d liu t file ch khng phi t bn phm.
Do khng cn ghi cc thng tin yu cu nhp ra mn hnh. Hn na, phi
to trc mt file vn bn l CANBO.TXT chng trnh c th chy m
khng bo li.
Ton vn chng trnh:
uses crt;
type
canbo = record
ten : string[20];
tuoi : byte;
hsl, phucap, thunhap: real;
end;
var
ds : array[1..100] of canbo;
n : integer;
(*********************************************)
procedure nhap;
var f : text;
begin
assign(f,'CANBO.TXT'); reset(f);
n := 0;

while not eof(f) do begin


n := n + 1;
with ds[n] do begin
readln(f,ten);
readln(f,tuoi);
readln(f,hsl);
readln(f,phucap);
thunhap := hsl * 350000 + phucap;
end;
end;
close(f);
end;
(*********************************************)
procedure in30;
var i : integer;
begin
writeln('DANH SACH CAC CAN BO TRE:');
for i := 1 to n do
with ds[i] do
if tuoi <= 30 then begin
writeln('Ten:',ten);
writeln('Tuoi:',tuoi);
writeln('He so luong:',hsl :0 :3);
writeln('Phu cap:',phucap :0 :3);

writeln('Thu nhap:',thunhap :0 :3);


end;
end;
(*********************************************)
procedure sxep;
var i,j : integer;
tg : canbo;
begin
for i := 1 to n do
for j := i + 1 to n do
if ds[i].ten > ds[j].ten then begin
tg := ds[i]; ds[i] := ds[j]; ds[j] := tg;
end;
end;
(*********************************************)
procedure ghitep;
var f : file of canbo;
i : integer;
begin
assign(f,'SAPXEP.DAT'); rewrite(f);
for i := 1 to n do write(f,ds[i]);
close(f);
end;
procedure doctep;

var f : file of canbo;


i : integer;
begin
assign(f,'SAPXEP.DAT'); reset(f);
i := 0;
while not eof(f) do begin
i := i + 1;
read(f,ds[i]);
end;
n := i;
close(f);
end;
(*********************************************)
procedure in3M;
var i : integer;
begin
writeln('DANH SACH CAC CAN BO CO THU NHAP CAO:');
for i := 1 to n do
with ds[i] do
if thunhap >= 3000000 then begin
writeln('Ten:',ten);
writeln('Tuoi:',tuoi);
writeln('Thu nhap:',thunhap :0 :3);
end;

end;
(*********************************************)
BEGIN
nhap;
in30;
sxep;
in3M;
readln;
END.
THUAT TOAN( GIAI THUAT)
I)Khai Niem Thuat Toan:
1)giai thuat cua mot bai toan la mot he thong cac quy tac
chat che va ro rang cham xac nh mot day cac thao tac tren
nhng d lieu vao ( INPUT) , sao cho sau mot so hu han bc
thc hien cac thao tac ta thu c ket qua( OUTPUT) cua bai
toan
2)V du: cho hai so nguyen a,b . can xay dng giai thuat e tm
c so chung ln nhat (USCLN) cua hai so a va b. Di ay la
giai thuat cua nha toan hoc co Hy Lap clie xuat cho bai toan
tren:
Giai thuat clid:
-

INPUT: a,b nguyen

OUTPUT: USCLN cua a va b.

Bc 1: Chia a cho b tm so d la r
Bc 2: Neu r=0 th thong bao ket qua: USCLN la b . Dng giai
thuat
Bc 3: Neu r 0 th gan tr b cho a , gan tr r cho b roi quay ve
bc 1

cac thao tac gom:


Phep tm d: chia so nnguyen a cho so nguyen b e tm so
d la r
o .

Phep gan tr: a mot gia tr cu the vao mot bien nao

Phep chuyen ieu khien: cho phep thc hien tiep t mot
bc nao o ( neu khong co gap phep chuyen tiep th may se
thc hien tuan t : sau bc i la bc i+1)
Sau ay la phan the hien giai thuat clid cua Ngon ng PASCAL thong qua mot chng trnh con la Ham.
{***************************************************}
FUNCTION

USCLN( a,b:integer) :Integer;


var r :integer;
Begin

While b<>0 do
begin
r:= a mod b;
a:=b;
b:=r;
end;
USCLN:=a;
END;
{***************************************}
II). Cac ac trng cua thuat toan:
1)Thuat toan phai co tnh dng:
sau mot so hu han bc th phai dng thuat toan va cho ra
ket qua

V du: trong thuat toan clid sau khi thc hien bc 1 chia a cho b
e tm so d r ta co 0<rb Do o neu r=0 th thuat toan dng sau
khi thc hien bc 2, con r 0 th sau bc 3 se co phep gan tr
cua b cho a va cua r cho b nen ta thu c 0<b<a . ieu nay co
ngha la so d lan sau nho hn so d lan trc. Nen sau mot
hu han bc thc hien th r=0 va dng thuat toan.
2)Thuat toan co tnh xac nh:
oi hoi thuat toan sau moi bc cac thao tac phai het sc
ro rang, khong nen gay s nhap nhang , tuy tien. noi cach
khac trong cung mot ieu kien th x ly ni nao cung cho mot
ket qua.
3)Thuat toan x ly ai lng vao(INPUT):
Mot giai thuat thng co mot hoac nhieu ai lng vao ma
ta goi la d lieu vao. cac d lieu thng bien thien trong mot
mien cho trc.
4)Thuat toan x ly ai lng ra( OUTPUT):
Sau khi thuat toan thc hien xong, tuy theo chc nang ma thuat
toan am nhan ta co the thu c mot so ket qua ta goi la ai
lng ra.
5)Thuat toan phai co tnh hieu qua:
mot bai toan co the co nhieu thuat toan e giai. Trong so
cac thuat toan ta can chon thuat toan tot nhat ,ngha la thuat
toan phai thc hien nhanh, ton t bo nh.
6)Thuat toan phai co tnh pho dung:
la thuat toan co kha nang giai c mot lp ln cac bai
toan.

III)cac v du ve giai thuat mot so bai toan viet...


BAI TOAN 1:
Viet cac ham kiem tra xem mot so co phai la so nguyen to
(so chnh phng, so hoan hao) hay khong ? Tm c so chung ln
nhat cua 2 so ?
Giai thuat cho bai nay la rat quen thuoc.

* Ve so nguyen to : N c goi la so nguyen to neu N khong


chia het cac so i t 2 cho en Round( sqrt(N)).

Ve so chnh phng: N c goi la so chnh phng neu


phan thap phan cua Sqrt(n) la bang 0.

Ve so hoan hao: N c goi la so hoan hao neu no


bang tong cac c cua no( khong ke chnh no) v du: N= 6
,N= 28
{Toan van chng trnh}

Uses

Crt;

Var

i:Integer;
{***********************************************}
Function Sont(n:Integer):Boolean;{ ham kiem tra so nguyen

to}
Var

i:Integer;

Begin
Sont:=False;
For i:=2 to Round(Sqrt(n)) do
If n Mod i=0 Then Exit;
Sont:=True;
End;
{**********************************************}
Function Cphuong(n:integer):Boolean;{ kiem tra so chnh phng}
Begin
Cphuong:=sqrt(n)=Round(sqrt(n));
End;

{**********************************************}
Function Hoanhao(n:integer):Boolean;
Var

s,i:integer;

Begin
s:=0;
for i:=1 to n div 2 do
if n Mod i=0 Then s:=s+i;
Hoanhao:=s=n;
End;
{************************************************}
Function Uscln(a,b:Integer):Integer;
Var

r :Integer;

Begin
While b<>0 Do
Begin
r:=a Mod b;
a:=b;
b:=r;
End;
Uscln:=a;
End;
{***********************************************}
Begin
{Chng trnh chnh}

End.
BAI TOAN 2:
Tm cac so M ,N sao cho tong cac c dng cua M bang N va
tong cac c dng cua N bang M vi M,N < longint
y tng giai thuat:
-Viet ham tnh tong cac c dng cua mot so.
-Duyet I=1..n. e bai toan chay trong thi gian chap
nhan ta at k= tonguoc(i);
Khi o neu
TongUoc(k)=i th to rang I va k thoa man e bai.
{Toan van chng trnh}
{$B-}
Uses Crt;
Var

k,n,i,j:Longint;

{*****************************************}
Function TongUoc(a:Longint):Longint;
Var

t,s:Longint;

Begin
s:=0;
For t:=1 to a Div 2 do
if a Mod t =0 Then s:=s+t;
TongUoc:=s;
End;
{*****************************************}
BEGIN
Write( nhap N=);

Readln(N);
For i:=1 to N do
Begin
k:=tonguoc(i);
if TongUoc(k)=i Then
Writeln(i,' ',k);
End;
END.
{******************************}
BAI TOAN 3:

Phan tch mot so t nhien N thanh tch cac so...


V du 90=2*3*3*5
Y tng giai thuat:
Chia lien tiep N cho c nguyen to be nhat cua N, qua trnh
dng lai khi N=1, c moi lan thc hien phep chia nh vay ta gan
lai n := n Div Ntmin(n); trong o Ntmin(n) la ham tm c nguyen
to be nhat cua N.
Ham tm c nguyen to be nhat cua mot so N la
de hieu nh sau:
Cho I=2..n neu i la so nguyen to va n chia het cho i th i chnh
la c nguyen to be nhat. ham kiem tra mot so co phai la
so nguyen to hay khong c viet bi ham NT
{Toan van chng trnh}
Uses Crt;
Var

N:Integer;
{********************************************}

Function NT(n:Integer):Boolean;

Var

i:Integer;

Begin
Nt:=False;
For i:=2 To N-1 Do
If n Mod i =0 Then Exit;
Nt:=True;
End;
{**********************************************}
Function NTMIn(n:Integer):Integer;
Var

i:Integer;

Begin
For i:=2 to N do
If nt(i) and (N Mod i=0) Then
Begin
ntmin:=i;
Exit;
End;
End;
{**********************************************}

BEGIN
Repeat
Readln(n);
Until n>1;
While n<>1 DO

Begin
Write(Ntmin(n):4);
n :=n Div Ntmin(n);
End;
END.
BAI TOAN 4:
Chuyen oi t he em thap phan sang he em La ma va
ngc lai.
y tng giai thuat:
Chuyen oi so N t he em thap phan sang he em La Ma:
-at a=n Div 1000 th so tng ng he em lama co a ky
hieu M.
-oi tung ky so hang hang tram,hang chuc,hang n v qua
so la ma tng ng vi cac bo ky so (C,D,M),(X,L,C),(I,V,X).
V du:4729
Th a=4
7 tram th phai dung bo M,D,C tc la so DCC
2 chuc th phai dung bo C,L,X tc la so XX
9 n v th phai dung bo X,V,I tc la so IX
Chuyen oi so S t he em he em La ma sang thap phan:
Gia ta a co ham Doi(ch) e oi mot ky so t he la ma sang
he thap phan..at Tam=doi(s[Length(s)])
-Xet tng ky so lama t phai sang trai.(i=length(s)-1..1)
- Neu gia tr cua mot ky so <= gia tr cua ky so lien ben
trai no th ket qua la gia tr hien tai cong vi gia tr cua ky
so ang xet ngc lai th tr i gia tr cua ky so ang xet.
{Toan van chng trnh}

Uses Crt;
{************************************************}
Function He10_sang_lama(n:Integer):String;
Var

s,CH1,CH2,CH3:String;

a,b,K,H,i:Integer;
Begin
s:='';
K:=1000;
H:=100;
a:=n Div k;
For i:=1 to a do s:=s+'M';
Repeat
case k of
1000:
100:
10:

Begin

CH1:='C';CH2:='D';CH3:='M'; End;

Begin CH1:='X';CH2:='L';CH3:='C'; End;


Begin CH1:='I';CH2:='V';CH3:='X'; End;

End;
b:=n Mod K Div H;
case b of
1:s:=s+CH1;
2:s:=s+CH1+CH1;
3:s:=s+CH1+CH1+CH1;
4:s:=s+CH1+CH2;
5:s:=s+CH2;

6:s:=s+CH2+CH1;
7:s:=s+CH2+CH1+CH1;
8:s:=s+CH2+CH1+CH1+CH1;
9:s:=s+CH1+CH3;
End;
K:=K Div 10;
H:=H Div 10;
Until k=1;
He10_Sang_lama:=s;
End;
{*********************************************}
Function lama_sang_he10(s:String):Integer;
Var i,tam:Integer;
Function doi(ch:char):Integer;{ ham doi la chng trnh con
cua ham LaMa_sang_he_10}
Var

k:Integer;

Begin
Case UPCASE(ch) of
'M':k:=1000;
'D':k:=500;
'C':k:=100;
'L':k:=50;
'X':k:=10;
'V':k:=5;

'I':k:=1;
'0':k:=0;
End; { end of case}
DOI:=K;
End;
BEGIN { bat au cua ham}
Tam:=doi(s[length(s)]);
For i:=length(s)-1 downto 1 do
if doi(s[i+1])<=doi(s[i]) Then
Tam:=Tam+doi(s[i])
Else
Tam:=Tam-doi(s[i]);
LAMA_sang_He10:=Tam;
END;{ ket thuc ham}
{*************************************************}
BEGIN { chng trnh chnh}
Writeln(he10_sang_lama(4729));
END.
BAI TOAN 5:
Mot phan so s/t=[b1,b2,b3,...bk] vi bi la ket qua cua phan
tch sau:
1
-------------------1

B1 + ---------------------1
B2

+ -------------------1
B3

+ ---------------B4

.................................
1
BK-1 + ------BK
a)Cho trc S/t hay tm day bi
b)Cho trc day bi hay tm S/t
{Toan van chng trnh}
Uses Crt;
Var

s,t,a,bb,i,k:Integer;

b:array[1..12] of Integer;
{*********************************************}
Procedure Cau_a;
Begin
Writeln('nhap s,t ');Readln(s,t);
i:=0;
While s<>0 Do
Begin
i:=i+1;

bb:=t div s;
a:=s;
s:=t-bb*s;
t:=a;
Write(bb:5);
End;
End;
{***************************************************}
Procedure Cau_b;
Begin
Readln(k);
For i:=1 to k do
Readln(b[i]);
s:=1;
t:=b[k];
For i:=k-1 downto 1 do
Begin
a:=t;
t:=t*b[i]+s;
s:=a;
End;
Writeln(s,'/',t);
End;
{************************************************}

BEGIN
Cau_a;
Cau_b;
END.
BAI TOAN 6:
Hay tnh tong cua hai so t nhien ln
Bai toan nay co nhieu cach giai sau ay chung toi neu len
mot li giai t nhien nhat nhng cung rat hieu qua va de hieu
nh sau:
Trc het ta i tm ham cong hai chuoi.
Function Cong(s1,s2:String):String;
Var L1,L2,Max,i,tam,a,b,code,nho:Integer;
h,h1:String;
Begin
L1:=length(s1);
L2:=length(s2);
if L1>L2 Then Max:=L1 Else Max:=L2;
For i:=L1+1 to Max do
s1:='0'+s1;
For i:=L2+1 to Max do
s2:='0'+s2;
nho:=0;
h:='';
For i:=Max downto 1 do
Begin

val(s1[i],a,code);
val(s2[i],b,code);
tam:=a+b+nho;
if tam>=10 Then nho:=1
Else nho:=0;
str(tam Mod 10,h1);
h:=h1+h;
End;
if nho=1 Then h:='1'+h;
cong:=h;
End;
{******************************************************}
Bay gi chung ta tm hieu giai thuat kinh ien cho dang toan
nay nh sau:
-Gia s hai so c cho bi chuoi s1,s2
-Them 0 vao ben trai so co chieu dai ngan e 2 chuoi s1,s2
co chieu dai bang nhau va gia s chieu dai luc o la Max.
-Tnh c[i]=a[i]+b[i] vi moi i(i=1..Max)
V du: a=986
b=927
Th c[1]=18; c[2]=10;

c[3]=13;

-e C la mang so ket qua can bien oi mot chut na nh


sau:
Duyet mang C t phai qua trai, moi c[i] ch gi lai phan d
con phan nguyen th cong them cho phan t c[i-1] nh sau:
For i:=Max downto 1 do

Begin
c[i-1]:=c[i-1] + c[i] Div 10;
c[i]:=c[i] Mod 10;
End;
{Toan van chng trnh}
USES CRT;
Procedure cong;
Var

s1,s2:String;

a,b,i,L1,L2,code,Max:Word;
c:Array[0..100] of Integer;
Begin
Readln(s1);Readln(s2);
L1:=length(s1);
L2:=length(s2);
if L1>L2 Then Max:=L1 Else Max:=L2;
For i:=L2+1 to Max do
s2:='0'+s2;
For i:=L1+1 to Max do
s1:='0'+s1;
Fillchar(C,SizEof(c),0);
For i:=1 to Max do
Begin
val(s1[i],A,code);
val(s2[i],B,code);

c[i]:=a+b;
End;
For i:=Max downto 1 do
Begin
c[i-1]:=c[i-1] + c[i] Div 10;
c[i]:=c[i] Mod 10;
End;
For i:=1 to Max do
Write(c[i]);
End;
BEGIN
cong;
END.
Chng trnh tr 2 so t nhien ln th vat va hn.theo y tng
la lay so co tr tuyet oi ln tr i so co tr tuyet oi nho va
ket qua se la so am neu so th nhat be hn so th 2, sau o
a tng ky t cua so ln vao mang h1, cua so be vao mang
h2.Neu h1[i]<h2[i] th
c[i]:=h1[i]+10-h2[i];
va

h2[i-1]:=h2[i-1]+1;

ngc lai neu h1[i]>=h2[i] th


c[i]:=h1[i]-h2[i];
{Toan van chng trnh}
Procedure tru;
Var s1,s2,s:String;
h1,h2:Array[1..100] of Integer;

C:Array[1..100] of Integer;
dau:Char;
code,l1,l2,Max,i:word;
Begin
Readln(s1);Readln(s2);
L1:=length(s1);
L2:=length(s2);
if L1>L2 Then Max:=L1 Else Max:=L2;
For i:=L2+1 to Max do
s2:='0'+s2;
For i:=L1+1 to Max do
s1:='0'+s1;
dau:=#32;
IF s2>s1 Then
Begin
dau:='-';
s:=s2;
s2:=s1;
s1:=s;
End;
Fillchar(C,SizEof(c),0);
For i:=1 to Max do
Begin
val(s1[i],h1[i],code);

val(s2[i],h2[i],code);
End;
For i:=Max downto 1 do
Begin
IF h1[i]<h2[i] Then
Begin
c[i]:=h1[i]+10-h2[i];
h2[i-1]:=h2[i-1]+1;
End
Else
c[i]:=h1[i]-h2[i];
End;
Write(dau);
For i:=1 to Max do
Write(c[i]);
End;
va chng trnh nhan 2 so t nhien ln c viet nh sau:
{Toan van chng trnh}
Procedure nhan;
Begin
Readln(s1);Readln(s2);
L1:=length(s1);
L2:=length(s2);
Fillchar(C,SizEof(c),0);

For i:=1 to L1 do
For j:=1 to L2 do
Begin
val(s1[i],A,code);
val(s2[J],B,code);
c[i+j]:=c[i+j]+a*b;
End;
For i:=L1+L2 downto 3 do
Begin
c[i-1]:=c[i-1] + c[i] Div 10;
c[i]:=c[i] Mod 10;
End;
Write('Tich la : ');
For i:=2 to L1+L2 do
Write(c[i]);
End.
Trong ti liu ny ti c s dng t liu ca anh Nguyn Thanh Tng-khoa
CNTT,i hc s phm H Ni v nhiu t liu ca bn b ti.

You might also like