Professional Documents
Culture Documents
Tomtatcacthuattoancobantrong Pascal
Tomtatcacthuattoancobantrong 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.
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.
b)
c)
d)
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}
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
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
BI TP 2
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 :
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);
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.
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;
i}
for j := 1 to n do write(a[i,j]:6);
cn phi cho thng ct v khng st nhau}
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}
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).
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.
(************************************************)
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);
{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)
b)
c)
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;
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
end;
end;
BEGIN
nhap;
inngto;
timmax;
sapxep;
END.
BI TP 2
b)
In ra cc s chnh phng.
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
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)
b)
c)
hnh.
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];
{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;
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
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)
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;
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:
-
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
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
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.
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:
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;
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;
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;
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.