Bài tập pascal có lời giải chi tiết
BAØI TAÄP CÔ BAÛN
BAØI TAÄP CHÖÔNG 1:CAÂU LEÄNH IF ….THEN…
* Baøi 1 :
Nhaäp 3 soá a , b , c baát kì . Haõy kieåm tra xem ba soá ñoù coù theå laø ñoä daøi ba caïnh cuûa
moät tam giaùc hay khoâng ? Thoâng baùo leân maøn hình ‘ Thoûa maõn ‘, ‘ Khoâng thoûa
maõn trong töøng tröôøng hôïp töông öùng .
GIAÛI
Var a , b , c : Real ;
BEGIN
Writeln (' Nhap do dai 3 canh cua tam giac : ') ;
Write (' a = ') ; Readln ( a ) ;
Write (' b = ') ; Readln ( b ) ;
Write (' c = ') ; Readln ( c ) ;
If ( a + b > c ) and ( b + c > a ) and ( c + a > b )
and ( a > 0 ) and ( b > 0 ) and ( c > 0 ) Then
Writeln (' Thoa man : Day la 3 canh cua mot tam giac ')
Else
Writeln (' Khong thoa man ! ') ;
Readln ; END .
* Baøi 2 :
Nhaäp N soá baát kì .
Ñeám caùc soá lôùn hôn 10 vaø nhoû hôn 20 vaø tính toång cuûa chuùng . Sau ñoù , ñöa ra
maøn hình :So cac so >10 vaø <20 la : ( gia tri ) ;Tong cua chung la : ( gia tri )
GIAÛI
Var Tong , So : Real ; I , N , Dem : Integer ;
BEGIN
Write (' Bao nhieu so : ') ; Readln ( N ) ;
Tong := 0 ; Dem := 0 ;
For I := 1 To N Do
Begin
Write (' So = ') ; Readln ( So ) ;
If ( So > 10 ) and ( So < 20 ) Then
Begin
Tong := Tong + So ;
Dem := Dem + 1 ;
End ;
BAØI TAÄP CÔ BAÛN
TRANG
1
BAØI TAÄP CÔ BAÛN
End ;
Writeln (' So cac so >10 va <20 la : ', Dem ) ;
Writeln (' Tong cua chung la :', Tong ) ;
Readln ; END .
* Baøi 3 :
Nhaäp boán soá a , b , c , d . Haõy tìm giaù trò lôùn nhaát cuûa chuùng vaø gaùn giaù trò lôùn
nhaát ñoù cho bieán Max .
GIAÛI
Var Max , a , b , c , d : Real ;
BEGIN
Writeln (' Nhap gia tri cua 4 so : ') ;
Write (' a = ') ; Readln ( a ) ;
Write (' b = ') ; Readln ( b ) ;
Write (' c = ') ; Readln ( c ) ;
Write (' d = ') ; Readln ( d ) ;
Max := a ;
If Max < b Then Max := b ;
If Max < c Then Max := c ;
If Max < d Then Max := d ;
Writeln (' Gia tri lon nhat la : ', Max ) ;
Readln ;
END .
* Baøi 4 :
Ñoïc ngaøy thaùng naêm , sau ñoù vieát ra maøn hình ñoù laø ngaøy thöù maáy trong tuaàn .
GIAÛI
Var Thu , Ngay , Thang : Byte ;
Nam : Integer ;
BEGIN
Write (' Doc Ngay Thang Nam : ') ;
Readln ( Ngay , Thang , Nam ) ;
Nam := 1900 + ( Nam mod 1900 ) ;
If Thang < 3 Then
Begin
Thang := Thang + 12 ;
Nam := Nam - 1 ;
End ;
Thu := Abs ( Ngay + Thang * 2 + ( Thang + 1 ) * 3
div 5 + Nam + Nam div 4 ) mod 7 ;
Case Thu Of
0 : Writeln (' Chu Nhat ') ;
1 : Writeln (' Thu Hai ') ;
BAØI TAÄP CÔ BAÛN
TRANG
2
BAØI TAÄP CÔ BAÛN
2 : Writeln (' Thu Ba ') ;
3 : Writeln (' Thu Tu ') ;
4 : Writeln (' Thu Nam ') ;
5 : Writeln (' Thu Sau ') ;
6 : Writeln (' Thu Bay ') ;
End ;
Readln ;
END .
* Baøi 5 :
Vieát chöông trình :
Nhaâp soá baùo danh
Nhaäp ñieåm vaên , toaùn , ngoaïi ngöõ
In ra maøn hình döôùi daïng :
_ Phieáu ñieåm :
_ Soá baùo danh :
_ Ñieåm vaên :
_ Ñieåm toaùn :
_ Ñieåm ngoaïi ngöõ :
_ Toång soá ñieåm :
Baïn ñaõ truùng tuyeån ( hoaëc Baïn ñaõ khoâng truùng tuyeån ) vôùi ñieàu kieän Toång soá
ñieåm >= 15 hay ngöôïc laïi .
GIAÛI
Uses Crt ; Var SBD : Integer;
Van , Toan , Ngoaingu , Tongdiem : Real ;
BEGIN
Clrscr ;
Write (' So bao danh : ') ; Readln( SBD ) ;
Write (' Diem toan : ') ; Readln( Toan ) ;
Write (' Diem ngoai ngu : ') ; Readln( Ngoaingu ) ;
Write (' Diem van : ') ; Readln ( Van ) ;
Tongdiem := Toan + Van + Ngoaingu ;
Clrscr ;
Writeln (' Phieu Bao Diem ') ;
Writeln (' So bao danh
: ', SBD ) ;
Writeln (' Diem van
: ', Van ) ;
Writeln (' Diem toan
: ', Toan ) ;
Writeln (' Diem ngoai ngu : ', Ngoaingu) ;
Writeln (' Tong diem : ', Tongdiem) ;
If Tongdiem >= 15 Then
Writeln(' Ban da trung tuyen ')
BAØI TAÄP CÔ BAÛN
TRANG
3
BAØI TAÄP CÔ BAÛN
Else
Writeln(' Ban khong trung tuyen ') ;
Readln ; END .
* Baøi 6 :
Vieát chöông trình nhaäp hai soá thöïc . Sau ñoù hoûi pheùp tính caàn thöïc hieän vaø in keát
quaû cuûa pheùp tính ñoù .
Neáu laø “+” , in keát quaû cuûa toång leân maøn hình .
Neáu laø “-” , in keát quaû cuûa hieäu leân maøn hình .
Neáu laø “/” , in keát quaû cuûa thöông leân maøn hình .
Neáu laø “*” , in keát quaû cuûa tích leân maøn hình . Neáu laø “+” , in keát quaû cuûa toång
leân maøn hình .
Neáu laø “+” , in keát quaû cuûa toång leân maøn hình .
GIAÛI
Uses Crt ; Var
a , b , T : Real ;
Pt : Char ;
BEGIN
Clrscr ;
Write (' a = ') ; Readln( a ) ;
Write (' b = ') ; Readln( b ) ;
Write (' Phep tinh thuc hien la (+ - * /) : ') ;
Readln( Pt ) ;
If Pt = '+’ Then T := a + b ;
If Pt = '-’ Then T := a - b ;
If Pt = '*’ Then T := a * b ;
If Pt = '/’ Then T := a / b ;
Write ( a , pt , b , ' = ', T ) ;
Readln ; END .
* Baøi 7 :
Giaûi vaø bieän luaän phöông trình :
x2 + ( m – 2 ) x + 1 = 0
ôû ñaây m laø tham soá thöïc tuyø yù .
GIAÛI
Uses Crt; Var m , Delta : Real ;
BEGIN
Clrscr;
Write (' m = ') ; Readln( m ) ;
Delta := sqr( m-2 ) - 4 ;
If Delta < 0 Then
Writeln(' Phuong trinh vo nghiem ')
Else
Begin
BAØI TAÄP CÔ BAÛN
TRANG
4
BAØI TAÄP CÔ BAÛN
If Delta = 0 Then
Writeln(' Phuong trinh co nghiem kep X= ', -( m - 2 ) / 2 )
Else
Begin
Writeln(' Phuong trinh co 2 nghiem : ') ;
Writeln (' X1 = ', ( -(m-2) + sqrt(delta) ) / 2 ) ;
Writeln (' X2 = ', ( -(m-2) - sqrt(Delta) ) / 2 ) ;
End ;
End ; Readln ; END .
* Baøi 8 :
Vieát chöông trình nhaäp hai soá töï nhieân N, M vaø thoâng baùo ‘Dung‘ neáu N , M cuøng
tính chaün leõ , trong tröôøng hôïp ngöôïc laïi thì thoâng baùo ‘Sai‘.
GIAÛI
Uses Crt ;
Var
N , M : Integer ;
Begin
Clrscr ;
Write(' N , M = ') ; Readln( N , M ) ;
If ( (N + M) mod 2 = 0 ) Then Writeln(' Dung ! ')
Else Writeln(' Sai ! ') ;
Readln ;
END .
BAØI TAÄP CHÖÔNG 2:VOØNG LAÄP XÑ VAØ KHOÂNG
XAÙC ÑÒNH
Söû duïng leänh For
* Baøi 1 :
Laäp trình tính tích caùc soá töï nhieân töø 1 tôùi 10 .
GIAÛI
Var i : Byte ; (* chæ soá chaïy *)
p : word ; (* tích soá *)
BEGIN
p := 1; (* cho giaù trò ban ñaàu cuûa tích *)
For i := 1 to 10 Do
(* cho i chaïy töø 1 tôùi 10 *)
p := p * i ; (* laàn löôït nhaân i vôùi p *)
Write (' 1 * 2 * ... * 10 = ', p ) ;
Readln ; END .
Baøi 2 :Vieát chöông trình ñeám soá laàn xuaát hieän cuûa caùc kí töï thuoäc baûng chöõ caùi
trong 50 laàn goõ kí töï baèng baøn phím (khoâng phaân bieät a vôùi A, b vôùi B …, duøng
haøm Upcase ñeå chuyeån ñoåi chöõ thöôøng vôùi chöõ hoa) .
BAØI TAÄP CÔ BAÛN
TRANG
5
BAØI TAÄP CÔ BAÛN
GIAÛI
Uses Crt ; Var a : Array[ 'A'..'Z' ] of integer; (* maûng boä ñeám *)
ch : char ;
(* bieán nhaäp kí töïù *)
i : byte ;
(* chæ soá cuûa laàn goõ phím *)
BEGIN
Clrscr ;
For ch :='A' to 'Z' Do a[ch] := 0 ; (* xaû boä ñeám *)
Writeln (' Go phim 50 lan ') ;
For i := 1 To 50 Do
(* thöïc hieän 100 laàn *)
Begin
ch :=Readkey ; (* nhaäp kí töï vaøo Ch khoâng caàn goõ Enter *)
ch := Upcase(ch) ; (* Ñoãi chöõ thöôøng thaønh chöõ hoa *)
a[ch] := a[ch] + 1 ;
End;
Writeln (' So lan xuat hien cac ki tu la :') ;
For ch :='A' to 'Z' do (* Kieåm tra boä ñeám töø 'A' tôùi 'Z' *)
If a[ch] > 0 Then
(* Neáu Ch coù xuaát hieän *)
Writeln (ch , a[ch] : 4 , ' lan . ') ; (* Vieát ra maøn hình kí töï vaø
soá laàn xuaát hieän *)
Readln ; END .
*
Baøi 3 :Cho soá töï nhieân n , haõy laäp trình ñeå tính caùc toång sau :
a. a. 1 + 1/22 + 1/32 + … + 1/n2
b. b. 1 + 1/2! + 1/3! + … + 1/n!
GIAÛI
BAØI TAÄP CÔ BAÛN
TRANG
6
BAØI TAÄP CÔ BAÛN
a)
Var n , i : Word ;
S : Real ;
BEGIN
Write (' Nhap n : ') ; Readln (n) ;
S := 0 ;
For i := 1 To n Do
S := S + 1 / sqr(i) ;
Writeln (' S = ', S:0:2) ;
Readln ;
END .
b)
Var n , i , j , p : Word ;
S : Real ;
BEGIN
Write (' Nhap n : ') ; Readln(n) ;
p := 1 ;
s := 0 ;
For i :=1 To n Do
Begin
p := p * i ; (* tính i *)
S := S + 1 / p ;
End ;
Writeln (' S = ', S:0:2) ;
Readln ; END .
*Baøi 4 :
Tính giaù trò cuûa bieåu thöùc sau :
( 1 + 1/12 ) ( 1 + 1/22 ) … ( 1 + 1/n2 )
GIAÛI
Var i , n : Byte ;
p : Real ;
Begin
Write(' Nhap n : ') ; Readln (n) ;
p := 1 ;
For i := 1 To n Do p := p * ( 1 + 1/sqr(i) ) ;
Writeln(' p = ', p:10:5 ) ;
Readln ; End
Söû duïng leänh While
* Baøi 5 :
Laäp trình tính toång :
A = 1 + 1/2 + 1/3 + … + 1/n
BAØI TAÄP CÔ BAÛN
TRANG
7
BAØI TAÄP CÔ BAÛN
ôû ñaây n laø soá töï nhieân ñöôïc nhaäp vaøo töø baøn phím .
GIAÛI
Uses Crt ;
Var i , n : Integer ;
tong: Real ;
BEGIN
Clrscr ;
Write (' Cho so tu nhien n : ') ; Readln (n) ;
tong :=0 ;
i :=1 ;
While i <= n Do
Begin
tong := tong + 1/i ;
i := i + 1 ;
End ;
Writeln (' Tong can tim la : ', tong:12:6 ) ;
Readln ; END .
* Baøi 6 :
Tính haøm luõy thöøa an , ôû ñaây a thöïc vaø n töï nhieân ñöôïc nhaäp vaøo töø baøn phím .
GIAÛI
Uses Crt ;
Var i , n : Integer ;
a , giatri : Real ;
BEGIN
Clrscr ;
Write (' Cho so a : ') ; Readln(a) ;
Write (' Cho so mu n : ') ; Readln(n) ;
i := 1 ;
giatri := 1 ;
While i <= n Do
Begin
giatri := giatri * a ;
i:= i+1 ;
End ;
Writeln(' a mu n bang : ', giatri ) ;
Readln ; END .
* Baøi 7 :
Vieát chöông trình nhaäp moät daõy soá toái ña 100 soá , sau ñoù in ra maøn hình caùc soá
khaùc nhau .
GIAÛI
BAØI TAÄP CÔ BAÛN
TRANG
8
BAØI TAÄP CÔ BAÛN
Uses Crt;
Var A : Array [1..100] Of Integer;
i , j , n : Integer ;
BEGIN
Clrscr ;
Write(' Do dai cua day so N = ') ; Readln (N) ;
For I := 1 To N Do
Begin
Write ('A[', i , ']= ') ; Readln ( A[i] ) ;
End ;
Writeln (' Cac so khac nhau la : ') ; Writeln ( A[1] ) ;
i := 2 ;
While i <= N Do
Begin
j := 1 ;
While ( j < i ) and ( A[j] <> A[i] ) Do inc(j) ;
If j = i Then Writeln( A[i] ) ;
i :=i + 1 ;
End ;
Readln ; END .
* Baøi 8 :
Vieát chöông trình nhaäp moät daõy soá toái ña 100 soá , sau ñoù saép xeáp laïi theo thöù töï
taêng daàn .
GIAÛI
Uses Crt;
Var A : Array [1..100] Of Integer ;
i , j , n , T : Integer ;
BEGIN
Clrscr ;
Write(' Do dai cua day so N = ') ; Readln (N) ;
Writeln (' Nhap day so : ') ;
For i := 1 To N Do
Begin
Write('A[', i ,'] = ') ; Readln ( A[i] ) ;
End ;
i := 1 ;
While (i <= n-1) Do
Begin
j := i+1;
While j<=n do
BAØI TAÄP CÔ BAÛN
TRANG
9
BAØI TAÄP CÔ BAÛN
Begin
If A[j] < A[i] then
Begin
T := A[j];
A[j ] := A[i];
A[i] := T ;
End ;
j := j + 1;
End ;
i := i + 1;
End ;
Writeln(' Day sau khi sap xep : ') ;
For i := 1 To N Do Write(A[i] : 4) ;
Readln ; END .
Söû duïng leänh Repeat
* Baøi 9 :
Cho moät daõy soá ñöôïc nhaäp töø baøn phím . Haõy vieát chöông trình nhaäp moät soá a roài
lieät keâ taát caû caùc phaàn töû trong daõy lôùn hôn a.
GIAÛI
Uses Crt ;
Var b : Array[1..100] Of Real;
a : Real ;
n , i : Byte ;
BEGIN
Clrscr ;
Write ('Nhap do dai cua day so : ') ; Readln(n) ;
Writeln (' Nhap cac phan tu cua day : ') ;
For i := 1 To n Do
Begin
Write (' b[', i ,'] = ') ; Readln( b[i] ) ;
End ;
Write (' Nhap so thuc a : ') ; Readln(a) ;
Writeln (' Cac phan tu lon hon a cua day : ') ;
i:=1;
Repeat
If ( b[i] > a ) Then Writeln (' b[', i ,'] = ', b[i]:8:2 ) ;
inc(i) ;
Until i > n ;
Readln ;
END .
BAØI TAÄP CÔ BAÛN
TRANG
10
BAØI TAÄP CÔ BAÛN
Baøi 10 :
Vieát chöông trình nhaäp moät daõy soá toái ña 50 soá roài in ra maøn hình caùc soá truøng
nhau cuûa daõy .
GIAÛI
Uses crt ;
Var a , b : Array[1..50] Of Integer ;
n , m , i , j , k : Byte ;
trung : Boolean ;
BEGIN
Clrscr ;
Write (' Nhap do dai cua day so nguyen : ') ; Readln(n) ;
Writeln (' Nhap cac phan tu cua day : ') ;
For i := 1 To N do
Begin
Write (' a[', i ,'] = ') ; Readln( a[i] ) ;
End ;
i := 1 ; m := 0 ;
Repeat
trung := false ;
j := i + 1;
Repeat
If ( j <= n ) and ( a[i] = a[j] ) Then trung := true ;
inc (j) ;
Until trung or ( j > n ) ;
If trung Then
Begin
m := m + 1;
b[m] := a[i] ; writeln ( b[m] : 4 ) ;
End ;
inc(i) ;
Until i > n ;
If m > 1 Then
Begin
i := 1 ;
Repeat
j := i + 1 ;
Repeat
trung := false ;
If b[i] = b[j] Then trung := true ;
If trung Then
Begin
BAØI TAÄP CÔ BAÛN
TRANG
11
BAØI TAÄP CÔ BAÛN
If j < m Then
For k := j To m - 1 Do b[k] := b[k + 1] ;
m := m - 1 ;
dec ( j ) ;
End ;
inc ( j ) ;
Until j > m ;
inc ( i ) ;
Until i > m ;
End ;
If m > 0 Then
For k := 1 To m Do Write ( b[k] : 4 ) ;
Readln ; END .
* Baøi 11 :
Baïn coù 1000 ñ ñem göûi ngaân haøng vôùi laõi suaát 8%/thaùng . Sau moãi thaùng tieàn laõi
ñöôïc nhaäp vaøo ñeå tính laõi suaát thaùng sau . Baïn muoán ñeå daønh cho ñeán khi soá tieàn
taêng leân laø x . Vaäy phaûi ñeå trong bao laâu
GIAÛI
uses crt ;
var
thang : Byte ;
tien , lai , x : Real ;
BEGIN
clrscr ;
writeln (' Chuong trinh tinh thoi gian rut tien lai ') ;
write (' So tien lai muon rut ra : ') ; readln(x) ;
tien := 1000 ;
thang :=1 ;
repeat
lai := tien * 8 / 100 ;
tien := tien + lai ;
thang := thang + 1 ;
until tien >= x ;
writeln (' Ban phai gui tien trong ', thang div 12 , ' nam ',
thang mod 12 ,' thang .') ;
writeln (' Khi do so tien ban rut ra duoc la ', tien:12:2 ,' dong .') ;
readln ; END .
* Baøi 12 :
Vieát chöông trình tìm ÖSCLN cuûa N soá ñöôïc nhaäp töø baøn phím .
GIAÛI
Uses crt ;
Var a : Array [1..100] Of Integer ;
BAØI TAÄP CÔ BAÛN
TRANG
12
BAØI TAÄP CÔ BAÛN
n , i : Byte ;
d : integer ;
BEGIN
Clrscr ;
Writeln (' Tim USCLN cua N so :') ;
Write (' Nhap so N : ') ; Readln(n) ;
Writeln ('Nhap ', N ,' so : ') ;
For i := 1 To n Do
Begin
Write(' So thu ', i ,' = ') ; Readln( a[i] ) ;
End ;
For i := 1 To n-1 Do
Repeat
d := a[i] ;
a[i] := a[ i+1 ] mod a[i] ;
a[i+1] := d ;
Until a[i] = 0 ;
Writeln (' USCLN cua ', N ,' so la : ', a[n] ) ;
Readln ; END .
BAØI TAÄP CHÖÔNG 3:CHÖÔNG TRÌNH CON
Baøi 1 :
Duøng thuû tuïc chuyeån moät soá töï nhieân n cho tröôùc sang heä cô soá 2 .
GIAÛI
Procedure Change ( n : integer ; Var St : String ) ;
(* thuû tuïc chuyeån soá töï nhieân n cho tröôùc sang
heä cô soá 2 vaø ñöôïc löu ôû trong xaâu St *)
Type
b : Array[0 .. 1] Of Char = ('0' , '1') ;
Var
du , So : Integer ;
S : String ;
Begin
S := '' ; (* xaâu roãng *)
So := n ;
Repeat
Du := So mod 2 ;
So :=So div 2 ;
S := b[du] + s ;
Until So = 0 ;
St := S ; End ;
Baøi 2 :Duøng thuû tuïc giaûi phöông trình baäc hai ax2 + bx + c = 0
GIAÛI
Uses Crt ;
Var a, b, c, x1, x2: real;
BAØI TAÄP CÔ BAÛN
TRANG
13
BAØI TAÄP CÔ BAÛN
(*================================*)
Procedure Nhapabc(var aa,bb,cc: real);
Begin
Write('a='); Readln(aa);
Write('b='); Readln(bb);
Write('c='); Readln(cc);
End;
(*=================================*)
Procedure GPTB2;
Var Delta: real;
Begin
Delta:=sqr(b)-4*a*c;
If Delta<0 then Writeln('Phuong trinh vo nghiem.')
Else
If Delta=0 then
Begin
Write('Phuong trinh co nghiem kep : ');
Write('x1,2=',-b/(2*a):8:2);
End
Else
Begin
x1:=(-b+sqrt(Delta))/(2*a);
x2:=(-b-sqrt(Delta))/(2*a);
Writeln('Phuong trinh co 2 nghiem phan biet la :');
Writeln('X1=',x1:8:2, 'X2=',x2:8:2);
End;
End;
(*================================*)
BEGIN (* CT chính *)
Clrscr;
Writeln(' Giai Phuong Trinh Bac Hai Voi Cac He So :');
Nhapabc(a,b,c);
If a<>0 then GPTB2
Else Writeln(' Khong phai phuong trinh bac hai ');
Readln ; END .
Baøi 3 :
Haõy vieát laïi thuû tuïc Insert ñoái vôùi moät chuoãi kí töï cho tröôùc tuøy yù .
GIAÛI
Procedure Insert ( St1 : String ; Var St2 : String ;Vt : Byte ) ;
(* cheøn xaâu St1 vaøo St2 baét ñaàu töø vò trí Vt *)
Var i : Byte ;
S : String ;
Begin
If ( Vt > length(St2) Or ( Vt < 1 ) Then
BAØI TAÄP CÔ BAÛN
TRANG
14
BAØI TAÄP CÔ BAÛN
Write(' Khong the chen ra ngoai xau ') ;
Else
Begin
S := '' ; (* xaâu roãng *)
For i := 1 To (Vt - 1) Do S := S + St2[i] ;
S := S + St1 ;
For i := Vt To length(St2) Do S := S + St2[i] ;
St2 := S ;
End ;
End ;
Baøi 4 :
Vieát chöông trình thöïc hieän laàn löôït caùc coâng vieäc sau :
_ Laäp thuû tuïc nhaäp ba soá thöïc döông a , b , c töø baøn phím .
_ Laäp thuû tuïc kieåm tra xem ba soá treân coù laäp thaønh ba caïnh cuûa tam giaùc hay
khoâng ?
_ Vieát thuû tuïc tính dieän tích cuûa tam giaùc .
_ Vieát thuû tuïc tính caùc trung tuyeán cuûa tam giaùc .
_ Vieát hoaøn thieän chöông trình chính .
GIAÛI
Uses Crt;
Var a, b, c: real ;
(*================================*)
Procedure Nhap(Var a, b, c: real);
Procedure input (Var a: real; tenbien: Char);
Begin
Repeat
Write('Nhap ' + tenbien+' = '); Readln(a);
Until (a>=0);
End;
Begin (* baét ñaàu thuû tuïc nhaäp *)
Input(a, 'a');
Input(b, 'b');
Input(c, 'c');
End; (* keát thuùc thuû tuïc nhaäp *)
(*================================*)
Procedure Kiemtra(a, b, c: Real);
Begin
If (a0;
End;
(*================================*)
Begin (* Thaân cuûa thuû tuïc Compare*)
kq:=''; (* Xaâu roãng *)
For i:=1 to length(s1) do
If (not kt(s1[i],kq)) and (kt(s1[i],s2)) then
kq:=concat(kq,s1[i]);
End;
(*==============================*)
BEGIN
Clrscr;
Writeln('Nhap 2 xau S1 va S2 :');
Write('S1: '); Readln(xau1);
Write('S2: '); Readln(xau2);
Compare(xau1, xau2, xau);
If xau<>'' then Writeln('Xau chung la: ',xau)
Else Writeln('Khong co ki tu nao trong ca hai xau ');
BAØI TAÄP CÔ BAÛN
TRANG
18
BAØI TAÄP CÔ BAÛN
Write('Nhan ENTER de ket thuc...');
Readln;
END .
Baøi 8 :
Vieát haøm tính D (St1 , St2) , vôùi U, V laø hai xaâu kí töï baát kì , laø toång soá caùc kí töï
khoâng gioáng nhau trong hai xaâu treân , moãi loaïi kí töï chæ ñöôïc nhôù moät laàn . Ví duï
D (‘aabba’ , ‘bcdd’) = 2 vì chæ coù hai kí töï a vaø d laø khoâng gioáng nhau trong caùc
xaâu treân .
GIAÛI
Uses Crt;
Const M=100;
Var S: array[1..M] of string;
max, min, i, j, n: byte;
(*===============================*)
Function D(U,V: string): byte;
(*Traû veà toång soá loaïi kí töï khoâng gioáng nhau
trong 2 xaâu U vaø V *)
Var k, id: byte;
s, luu: string;
Begin
luu:=''; (* Xaâu roãng *)
For id:=1 to length(U) do
If (pos(U[id],V)=0) and (pos(U[id],luu)=0) then
luu:=concat(luu,U[id]);
For id:=1 to length(V) do
If(pos(V[id],U) = 0) and (pos(V[id],luu)=0) then
luu:= concat(luu,V[id]);
d:=length(luu);
End;
(*=================================*)
Procedure nhap;
Begin
Repeat
Write('So xau ki tu (>=2):') ; Readln(n);
If n<2 then
Writeln(#7,'Co ',n,' xau ki tu nen khong the '
+ 'so sanh duoc');
Until n>=2;
Writeln('Nhap ',n,' xau ki tu :');
For i:=1 to n do
BAØI TAÄP CÔ BAÛN
TRANG
19
BAØI TAÄP CÔ BAÛN
Begin
Write('S',i,'='); Readln(S[i]);
End;
End ;
(*===============================*)
BEGIN (* Chöông trình chính *)
Clrscr;
nhap;
max:=0;
min:=255;
For i:=1 to n-1 do
For j:=i+1 to n do
Begin
If maxd(S[i],S[j]) then min:=d(S[i],S[j]);
End;
Write('Max(d(Si,Sj)=',max,' Min(d(Si,Sj)=',min);
Readln;
END .
Baøi 9 :
Vieát chöông trình hoaøn chænh thöïc hieän caùc coâng vieäc cuûa thöïc ñôn sau :
1. 1. Nhaäp döõ lieäu ( nhaäp soá töï nhieân n ) .
2. 2. Phaân tích ra thöøa soá nguyeân toá ( phaân tích n thaønh tích caùc soá nguyeân
toá ) .
3. 3. Thoaùt khoûi chöông trình .
GIAÛI
Uses Crt;
Type uoc_nguyen_to=array[1..50] of longint;
Var
u, N: longint;
i, dem: integer;
a: uoc_nguyen_to;
(*================================*)
Procedure nhap(Var NN:longint);
Begin
Repeat
Write('Nhap N='); Readln(NN);
Until NN>=0;
End;
(*=================================*)
Procedure viet;
Begin
BAØI TAÄP CÔ BAÛN
TRANG
20
- Xem thêm -