SlideShare a Scribd company logo
1 of 68
Download to read offline
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 1
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 ;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 2
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 ') ;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 3
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 ')
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 4
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 , kq : Real ; Pt : Char ;
BEGIN
Clrscr ;
Write (' a = ') ; Readln( a ) ;
Write (' b = ') ; Readln( b ) ;
Write (' Phep tinh thuc hien la (+ - * /) : ') ;
Readln( Pt ) ;
If Pt = '+’ Then kq := a + b ;
If Pt = '-’ Then kq := a - b ;
If Pt = '*’ Then kq := a * b ;
If Pt = '/’ Then kq := a / b ;
Write ( a , pt , b , ' = ', kq ) ;
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
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 5
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) .
GIAÛI
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 6
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
a)
Var n , i : Word ;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 7
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
ôû ñaây n laø soá töï nhieân ñöôïc nhaäp vaøo töø baøn phím .
GIAÛI
Uses Crt ;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 8
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
Uses Crt;
Var A : Array [1..100] Of Integer;
i , j , n : Integer ;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 9
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
Begin
If A[j] < A[i] then
Begin
T := A[j];
A[j ] := A[i];
A[i] := T ;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 10
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 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 ;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 11
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
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 ;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 12
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 ;
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
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 13
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;
(*================================*)
Procedure Nhapabc(var aa,bb,cc: real);
Begin
Write('a='); Readln(aa);
Write('b='); Readln(bb);
Write('c='); Readln(cc);
End;
(*=================================*)
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 14
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
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 ;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 15
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 (a<b+c) and (b<a+c) and (c<a+b) then
Writeln(a:0:2, ', ', b:0:2, ' va ', c:0:2,
' lap thanh ba canh cua tam giac ')
Else Writeln('Khong lap thanh ba canh cua tam giac') ;
End;
(*===============================*)
Procedure Trung_tuyen (a, b, c: Real);
Var ma, mb, mc: real;
Begin
ma:=sqrt((2*sqr(b)+2*sqr(c)-sqr(a))/4);
mb:=sqrt((2*sqr(a)+2*sqr(c)-sqr(b))/4);
mc:=sqrt((2*sqr(a)+2*sqr(b)-sqr(c))/4);
Writeln('Cac trung tuyen cua tam giac la : ') ;
Writeln('ma=', ma:0:2, ' mb=', mb:0:2, ' mc=', mc:0:2);
End;
(*================================*)
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 16
Procedure Dientich (a, b, c: real); Var p, S: real;
Begin
p:=(a+b+c)/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c));
Writeln('Dien tich =', S:0:2);
End;
(*================================*)
BEGIN (* Chöông trình chính *)
Clrscr;
Nhap(a, b, c);
Kiemtra(a, b, c);
Dientich(a, b, c);
Trung_tuyen(a, b, c);
Readln;
END .
Baøi 5 :Giaûi phöông trình x + y + z = 12 trong phaïm vi soá nguyeân khoâng aâm vôùi ñieàu kieän x < 4
.
GIAÛI
Uses Crt;
Var X, Y, Z: byte;
Begin
Clrscr;
Writeln('Giai phuong trinh X+Y+Z=12 trong pham vi '
+ 'so nguyen khong am voi dieu kien x<4');
For X:=0 to 3 do
For Y:=0 to 12 do
For Z:=0 to 12 do
If (X+Y+Z=12) then Writeln(' x=',X,' y=',Y, 'z=',Z);
Readln;
End.
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 17
Baøi 6 :
Cho tröôùc caùc soá N , a , b , c töï nhieân . Giaûi phöông trình sau trong phaïm vi soá nguyeân khoâng
aâm x + y + z = N vôùi ñieàu kieän x < a , y < b , z < c .
GIAÛI
Uses Crt;
Var N, a, b, c, X, Y, Z, i: Integer;
Begin
Clrscr;
Write(' N, a, b, c = '); Readln(N, a, b,c);
If (a+b+c-3<N) then
Begin
Writeln('Phuong trinh vo nghiem'); Readln;
Exit;
End
Else
Begin
Writeln('Phuong trinh co nghiem la:');
Writeln('x': 10, 'y': 10, 'z':10);
i:=4;
For X:=0 to (a-1) do
For Y:=0 to (b-1) do
For Z:=0 to (c-1) do
If (X+Y+Z=N) then
Begin
Writeln(x: 10, y: 10, z: 10);
inc(i);
If i=24 then
Begin
Write('Nhan Enter de tiep tuc...'); Readln;
i :=0;
End;
End ;
End ;
Write('Nhan Enter de ket thuc...');
Readln;
End.
Baøi 7 :
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 18
Vieát thuû tuïc Compare ( S1 , S2 : String ; Var Kq : String ) thöïc hieän coâng vieäc sau : so saùnh
hai xaâu S1 vaø S2 , tìm taát caû caùc kí töï coù trong caû hai xaâu treân . Xaâu Kq seõ chöùa taát caû caùc kí
töï ñoù , moãi kí töï chæ ñöôïc nhôù moät laàn .
GIAÛI
Uses Crt;
Var xau1,xau2,xau: string;
(*==================================*)
Procedure compare(s1, s2: string; Var kq: string);
Var i: byte;
(*===============================*)
Function kt(ch: char; st: string): boolean;
(* Kieåm tra xem kí töï Ch coù trong xaâu St khoâng . Neáu coù thì
haøm traû veà giaù trò True . Neáu khoâng thì haøm traû veà giaù trò False *)
Begin
kt:=pos(ch,st)<>0;
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 ');
Write('Nhan ENTER de ket thuc...');
Readln;
END .
Baøi 8 :
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 19
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
Begin
Write('S',i,'='); Readln(S[i]);
End;
End ;
(*===============================*)
BEGIN (* Chöông trình chính *)
Clrscr;
nhap;
max:=0;
min:=255;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 20
For i:=1 to n-1 do
For j:=i+1 to n do
Begin
If max<d(S[i],S[j]) then max:=d(S[i],S[j]);
If min>d(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
If dem=0 then
Writeln('So ',N,' khong the phan tich thanh '
+ 'tich cua cac so nguyen to')
Else
If dem=1 then Writeln(N, '=', a[dem])
Else
Begin
Write(N,'=');
For i:=1 to dem-1 do Write(a[i],'*');
Writeln(a[dem]);
End;
End;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 21
(*================================*)
Procedure phantich(N1:longint);
Begin
If N1>1 then
Begin
u:=2;
dem:=0;
Repeat
If (N1 mod u=0) then
Begin
inc(dem);
a[dem]:=u;
N1:=N1 div u;
End
Else inc(u);
Until N1=1;
End
Else dem:=0;
Viet;
End;
(*==============================*)
BEGIN (* Main Program *)
Clrscr;
Writeln('Phan tich so N thanh tich cua cac so nguyen to :');
nhap(N);
phantich(N);
Write('Nhan Enter de ket thuc ...');
Readln;
END .
BAØI TAÄP CHÖÔNG 4: CAÁU TRUÙC DÖÕ LIEÄU MAÛNG
Baøi 1 :
Giaûi heä phöông trình tuyeán tính hai aån duøng ma traän :
a11x + a12y = c1
a21x + a22y = c2
GIAÛI
Uses Crt;
Var a: array[1..2, 1..2] of real;
c: array[1..2] of real;
d, dx, dy, x, y: real;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 22
BEGIN
Clrscr;
Writeln('Giai he phuong tring tuyen tinh hai an:');
Writeln(' a11x+a12y=c1');
Writeln(' a21x+a22y=c2');
Writeln('Nhap cac he so cua he phuong trinh');
Write('a11='); Readln(a[1,1]);
Write('a12='); Readln(a[1,2]);
Write('c1='); Readln(c[1]);
Write('a21='); Readln(a[2,1]);
Write('a22='); Readln(a[2,2]);
Write('c2='); Readln(c[2]);
d:=a[1,1]*a[2,2] - a[2,1] * a[1,2];
dx:=c[1]*a[2,2] - c[2] * a[1,2];
dy:=a[1,1]*c[2] - a[2,1] * c[1];
If d=0 then Writeln(' He vo nghiem hoac vo so nghiem')
Else
Begin
x:=dx/d; y:=dy/d;
Writeln('He co nghiem duy nhat :');
Writeln('x=', x:0:2, ' ; y=', y:0:2);
End ;
Readln;
END .
Baøi 2 :
Laäp phöông trình taïo ra moät maûng chöùa baûng cöûu chöông .
Uses Crt ;
Var a : Array[1..10, 2..9] Of Byte ;
i, j : Byte ;
BEGIN
Clrscr ;
For i := 1 To 10 Do
For j := 2 To 9 Do a[i, j] := i*j ;
Writeln(' Bang cuu chuong : ') ; Writeln ;
For i := 1 To 10 Do
For j := 2 to 9 do Write ( j:4 , 'x' , i:2 , '=' , a[i , j]:2) ;
(* heát 80 coät töï ñoäng xuoáng haøng *)
Readln ;
END .
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 23
Baøi 3 :
Vieát chöông trình nhaäp hai soá nguyeân döông m , n . Sau ñoù tính trung bình coäng bình phöông
caùc soá nguyeân töø m ñeán n .
Var m , n , k , s : Word ;
tb : real ;
BEGIN
Writeln('Nhap 2 so nguyen duong m, n :') ;
Write (' m = ') ; Readln(m) ;
Write (' n = ') ; Readln(n);
If m > n Then (* ñoãi choã ñeå m <= n *)
Begin
k := m ; m := n ; n := k ;
End ;
s := 0 ;
For k := m To n do s := s + sqr(k) ;
tb := s / (n - m + 1) ;
Writeln ('Trung binh cong bimh phuong cac so '
+ 'nguyen tu m den n la: ', tb:12:2);
Readln ;
END .
Baøi 4 :
Vieát chöông trình nhaäp töø baøn phím caùc phaàn töû cuûa moät maûng hai chieàu . Kích thöôùc cuûa maûng
ñöôïc nhaäp tröôùc töø baøn phím .
Var m , n , i , j : Byte ;
a : Array[1..100, 1..100] Of Real;
BEGIN
Write ('Nhap cac kich thuoc cua mang hai chieu : ') ;
Write (' So hang m = ') ; Readln(m) ;
Write (' So cot n = ') ; Readln(n) ;
Writeln (' Nhap cac phan tu cua mang : ') ;
For i := 1 To m Do
For j := 1 To n Do
Begin
Write ('a[', i:2, ', ' , j:2 ,']=') ; Readln(a[i, j]) ;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 24
End ;
Readln ;
END .
Baøi 5 :
Daõy soá sau ñöôïc goïi laø daõy Fibonaci :
a1 = 1
a2 = 1
a3 = 2
a4 = 3
. . .
an = an-1 + an-2
Vieát chöông trình tính 20 soá Fibonaci ñaàu tieân vaø ñöa ra keát quaû vaøo moät maûng 20 phaàn töû .
Var
a : Array[1..20] Of Byte ;
i : Byte ;
BEGIN
a[1] :=1;
a[2] :=1;
For i:=3 to 20 do a[i]:=a[i-1]+a[i-2] ;
END .
Baøi 6 :
Daõy soá an ñöôïc ñònh nghóa nhö sau :
a1 = 1
a2 = 2
. . .
an = 2an-1 + an-2 ( n > 2 )
Haõy laäp chöông trình tính vaø gaùn giaù trò cuûa daõy vaøo bieán maûng .
Var a : Array [1..100] Of Word ;
i, N : Byte ;
S : Real ;
BEGIN
Write (' Nhap so N>=2 : ') ; Readln(n) ;
a[1] := 1 ;
a[2] := 2 ;
For i := 3 To N Do a[i] := 2*a[i-1]+a[i-2] ;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 25
S := 0 ;
For i := 1 to N do S := S+1/sqr(a[i]) ;
Writeln (' S = ', S:12:6) ;
Readln ;
END .
Baøi 7 :
Nhaäp soá töï nhieân N vaø vieát chöông trình taïo maûng bao goàm N soá nguyeân toá ñaàu tieân .
var
a:array[1..100,1..100]of byte;
n,i,j,k,l,ba:byte;
d:boolean;
BEGIN
write(' Nhap kich thuoc cua mang hai chieu NxN. N = ');readln(n);
for i:=1 to n do
for j:=1 to n do
begin
ba:=0;
repeat
d:=FALSE;
if j>1 then for k:=1 to j-1 do
if a[i,k]=ba then d:=true;
if i>1 then for k:=1 to i-1 do
if a[k,j]=ba then d:=true;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 26
ba:=ba+1;
until not d;
a[i,j]:=ba-1;
end;
for i:=1 to n do
for j:=1 to n do write(a[i,j]:8);
readln;
END .
Baøi 8 :
Vieát chöông trình nhaäp moät baûng soá 3 x 3 vôùi ñieàu kieän caùc soá ñöôïc nhaäp seõ hieän treân maøn
hình ñuùng taïi vò trí cuûa mình treân baûng soá .
Uses Crt;
Var
a : array[1..3, 1..3] of integer ;
i, j: byte ;
BEGIN
Clrscr;
Writeln('Nhap mot bang so nguyen kich thuoc 3x3:');
Gotoxy(10, 4); Write(1);
Gotoxy(19, 4); Write(2);
Gotoxy(28, 4); Write(3);
Gotoxy(5, 6); Write(1);
Gotoxy(5, 8); Write(2);
Gotoxy(5,10); Write(3);
For i:=1 to 3 do
For j:=1 to 3 do
Begin
Gotoxy(9*j-1, 2*i+4); Read(a[i, j]);
Gotoxy(9*j-1, 2*i+4); ClrEol; Write(a[i, j]:6);
End;
Readln;
END .
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 27
Baøi 9 :
a. a. Vieát chöông trình nhaäp döõ lieäu töø daõy ñoái xöùng vaøo maûng moät chieàu .
b. b. Vieát chöông trình nhaäp döõ lieäu laø ma traän ñoái xöùng vaøo maûng hai chieàu .
a)
Var a: array [1..100] of integer;
n, i: byte;
Begin
Write('Nhap so phan tu cua day doi xung:');
Readln(n);
Writeln('Nhap cac phan tu cua day:');
For i:=1 to (n+1) div 2 do
Begin
Write('a[', i:2, ']='); Readln(a[i]);
a[n-i+1] := a[i];
End;
Readln ;
END ;
b)
Var a: array [1..100, 1..100] of integer;
n, i, j: integer;
BEGIN
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 28
Write('Nhap kich thuoc cua mang doi xung: ');
Readln(n);
Write('Nhap cac phan tu cua mang:');
For i:=1 to n do
For j:=1 to i do
Begin
Write('a[', i:2, ',', j:2, ']='); Readln(a[i, j]);
a[j,i]:=a[i,j];
End;
Readln ;
END ;
BAØI TAÄP CHÖÔNG 5: XAÂU KYÙ TÖÏ
Baøi 1 :
Laäp trình ñeám soá laàn xuaát hieän ôû moãi loaïi kí töï thuoäc baûng chöõ caùi tieáng Anh trong moät xaâu kí
töï Str .
Var A: array [ 'A'..'Z'] of integer;
S: string;
ch: char;
i: integer;
BEGIN
Write(' Cho mot xau ki tu : '); Readln(s);
For ch:= 'A' to 'Z' do A[ch]:=0;
For i:=1 to length(s) do
Begin
If Upcase(S[i]) in (['A'..'Z']) then
Begin
S[i]:= Upcase(S[i]);
A[S[i]]:= A[S[i]]+1;
End;
End;
For ch:= 'A' to 'Z' do
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 29
Writeln('So lan xuat hien cua ',ch,' trong xau la: ', A[ch]:4) ;
Readln ;
END .
Baøi 2 :
Cho soá töï nhieân n vaø xaâu coù ñoä daøi n . Haõy bieán ñoåi xaâu ñaõ cho baèng caùch thay ñoåi trong ñoù :
a. a. Taát caû caùc daáu ! baèng daáu chaám .
b. b. Moãi moät nhoùm caùc daáu chaám lieàn nhau baèng moät daáu chaám .
c. c. Moät nhoùm caùc daáu chaám ñöùng lieàn nhau baèng daáu ba chaám .
a )
Var S: string;
i: byte;
BEGIN
Write(' Cho mot xau ki tu S = '); Readln(S);
For i:=1 to length(S) do
If S[i] = '!' then S[i]:= '.';
Write( ' Chuoi sau khi da bien doi la : ', S);
Readln;
END .
b )
Uses crt;
Var S : string;
i : byte;
BEGIN
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 30
Clrscr;
Write(' Cho mot xau ki tu S = '); Readln(S);
i:=1;
While i< length(S) do
If (S[i]='.')and(S[i+1]='.') then Delete(S,i,1)
Else inc(i);
Write('Chuoi sau khi da bien doi la: ' ,S);
Readln;
END .
c )
Uses crt;
Var S: string;
i, j: byte;
BEGIN
Clrscr;
Write('Nhap xau S='); Readln(S);
i:=1;
While i<=Length(S) do
Begin
If S[i]='.' then
Begin
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 31
j:=i;
While (S[i]='.')and(i<=length(S)) do inc(i);
dec(i);
If (i-j)=1 then insert('.',S,i)
Else
If (i-j)>2 then
Begin
Delete(S,j+2,i-j-2); i:=j+1;
End;
End ;
Inc(i);
End;
Write('Chuoi sau khi bien doi la: ',S);
Readln;
END .
Baøi 3 :
Cho soá töï nhieân n vaø moät daõy caùc kí töï S1 , S2 , … , Sn . Haõy tìm soá töï nhieân I ñaàu tieân sao cho
caùc kí töï Si , Si+1 ñeàu laø chöõ caùi a . Neáu trong daõy khoâng coù nhöõng caëp nhö vaäy thì thoâng baùo .
Var S: string;
i: integer;
BEGIN
Write(' Cho mot xau ki tu : '); Readln(S);
i:= pos('aa', S); {tìm vò trí xaâu con 'aa' trong S}
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 32
If i<>0 then Writeln(' Ton tai "aa" tai vi tri ', i)
Else Writeln(' Khong ton tai .') ;
Readln;
END .
Baøi 4 :
Cho soá töï nhieân n vaø daõy caùc kí töï S1 , S2 , … , Sn . Bieát raèng trong daõy coù ít nhaát moät daáu
phaåy . Haõy tìm soá töï nhieân i sao cho :
a. a. Si laø daáu phaåy ñaàu tieân .
b. b. Si laø daáu phaày cuoái cuøng .
a )
Var S: string;
i: integer;
BEGIN
Write('Cho mot xau S co dau ",": '); Readln(S);
i:= pos(',', S); (* vò trí cuûa daáu ',' trong S *)
If i<> 0 then Write(' Vi tri thoa man la: ', i);
Readln;
END .
b )
Var S: string;
i: integer;
BEGIN
Write('Cho mot xau S co dau ",": '); Readln(S);
i:= length(S);
While (i>=1)and(S[i] <> ',' ) do i:=i -1;
If i>=1 then Write('So thu tu thoa man la: ', i)
Else Write('Khong ton tai.');
Readln;
END .
Baøi 5 :
Vieát chöông trình nhaäp moät xaâu kí töï , sau ñoù chæ ra xem xaâu ñoù coù phaûi laø xaâu ñoái xöùng
khoâng ( xaâu ñoái xöùng laø xaâu coù caùc kí töï gioáng nhau vaø ñoái xöùng nhau qua ñieåm giöõa xaâu , ví
duï ‘ABBA’ hoaëc ‘ABCBA’ ) .
Uses Crt;
Var St : string;
dx : Boolean;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 33
i, len: byte;
BEGIN
Clrscr;
Write(' Nhap xau St = '); Readln(St);
dx:= True;
i:=1;
len:= Length(St);
While dx and (i<=(len div 2)) do
Begin
dx:=(St[i] = St[len - i+1]);
inc(i);
End;
If dx then Write(' St la xau doi xung ')
Else Write(' St khong phai la xau doi xung ') ;
Readln;
END .
Baøi 6 :
Cho moät xaâu kí töï S . Haõy vieát chöông trình tính xem trong S coù bao nhieâu loaïi kí töï khaùc nhau
( phaân bieät chöõ in hoa vôùi chöõ in thöôøng ) . Ví duï vôùi S laø ‚Pascal‛ ta coù ñaùp soá laø 5 .
Var S: string;
i, j, dem: integer;
t: boolean;
BEGIN
Write('Cho mot xau ki tu S: '); Readln(S);
dem:=0;
For i:=1 to length(S) do
Begin
t:=false;
For j:=1 to i-1 do if (S[j]=S[i]) then t:=true;
If not t then dem:= dem+1;
End;
Write('So ki tu khac nhau cua xau S la: ', Dem);
Readln;
END .
Baøi 7 :
Vieát chöông trình nhaäp moät xaâu kí töï vaø bieán ñoåi chuùng thaønh toaøn chöõ in hoa .
Var S : string;
i : integer;
BEGIN
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 34
Write('Cho mot xau ky tu: '); Readln(S);
For i:=1 to length(S) do
If S[i] in ['a' ..'z'] then S[i]:= Upcase(S[i]);
Write('Chuoi sau khi da bien doi la: ', S);
Readln;
END .
Baøi 8 :
Hoï teân moät hoïc sinh ñöôïc nhaäp töø baøn phím . Baïn haõy vieát chöông trình ñieàu chænh laïi caùc kí
töï ñaàu cuûa caùc töø ñôn trong teân cuûa hoïc sinh aáy trôû thaønh chöõ in hoa .
Uses crt;
Const Chu=['a'..'z'];
Var Hoten: string;
i,len: byte;
BEGIN
Clrscr;
Write('Ho ten='); Readln(Hoten);
Len:=length(Hoten);
If Hoten[1] in Chu then Hoten[1]:=Upcase(Hoten[1]);
For i:=2 to len do
If (Hoten[i-1]=#32)and(Hoten[i] in Chu) then
Hoten[i]:=Upcase(Hoten[i]);
Write('Ho ten sau khi dieu chinh la: ', Hoten);
Readln;
END .
Baøi 9 :
Vieát chöông trình nhaäp xaõu kí töï töø baøn phím , sau ñoù goït xaâu laïi baèng caùch caùch xoaù ñi caùc kí
töï troáng ôû hai ñaàu cuûa xaâu . Ví duï neáu nhaäp xaâu ‚ Ha noi ‚ , thì keát quaû seõ laø ‚Ha Noi‛ .
ar S: String;
BEGIN
Write('Cho mot xau ky tu: '); Readln(S);
While S[1] = #32 do Delete(S,1,1);
While (S[length(S)] = #32) do Delete(S,length(S),1);
Write('Chuoi sau khi da bien doi la: ', S);
Readln;
END .
BAØI TAÄP CHÖÔNG 6: DÖÕ LIEÄU KIEÅU TAÄP
Baøi 1 :
Baïn haõy vieát haøm Card(A) ñeám soá phaàn töû cuûa taäp hôïp A cho tröôùc coù kieåu Set Of 0 .. 99 .
(* haøm ñeám soá phaàn töû cuûa taäp hôïp *)
Uses Crt;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 35
Type Tap=set of 0..99;
Const inp='Number.dat';
Var S : Tap;
i : byte;
Procedure Nhap;
Var a: byte; f: text;
Begin
S:=[];
Assign(f,inp); Reset(f);
While not SeekEoF(f) do
begin
Readln(f,a); If (a>=0)and(a<=99) then S:=S+[a];
End;
Close(f);
End;
Function Card(S: Tap): byte;
Var i,n: byte;
Begin
n:=0;
For i:=0 to 99 do If i in S then Inc(n);
Card:=n;
End;
BEGIN
Nhap;
Clrscr;
Write('Tap S co ',Card(S),' phan tu.');
Readln;
END.
Baøi 2 :
Baïn haõy laäp chöông trình taïo moät taäp hôïp caùc soá nguyeân chaün kieåu Byte vaø loaïi khoûi noù caùc
soá chia heát cho 3 . Keát quaû theå hieän treân maøn hình .
Uses Crt;
Const n=5;
Type
Danhsach=record
holot: string[25];
ten: string[10];
tuoi: 0..99;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 36
lop: string[3];
End ;
Var ds: array [1..20] of Danhsach;
i,j: byte;
f: file of Danhsach;
Procedure Doi(i,j: byte);
Var tg: Danhsach;
Begin
tg:=ds[i];
ds[i]:=ds[j];
ds[j]:=tg;
End;
BEGIN
ClrScr;
Writeln('Nhap danh sach hoc sinh tu file data.dat : ');
Writeln;
Assign(f,'data.dat'); Reset(f);
For i:=1 to n do Read(f,ds[i]);
Close(f);
For i:=1 to n-1 do
For j:=i+1 to n do
begin
If (ds[i].ten>ds[j].ten) then Doi(i,j)
Else
If (ds[i].ten=ds[j].ten)and(ds[i].holot>ds[j].holot) then Doi(i,j);
end;
Writeln('Danh sach hoc sinh:');
For i:=1 to n do
With ds[i] do Writeln(holot:20,ten:11,tuoi:4,lop:5);
Writeln;
Write('Bam Enter de ket thuc...');
Readln;
END.
Baøi 3 :
Xeùt chöông trình sau :
Program B4 ;
Var
Thoat : Set Of Char = [‘e’ , ’E’] ;
BEGIN
Write (‘ Hay go E de ket thuc : ‘) ;
Repeat
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 37
Ch := Readkey ;
Until Ch in thoat ;
END .
Haõy tìm vaø söûa loãi trong chöông trình ñoù .
Uses Crt;
Const
thoat: set of char=['e','E'];
Var
ch: char;
BEGIN
Write('Hay go E de thoat khoi chuong trinh: ');
Repeat
ch:=readkey;
Until ch in thoat;
END .
Baøi 4 :
Baïn haõy laäp chöông trình hieån thò moät menu daïng sau treân maøn hình
1. Xem
2. 2. Sua chua
3. 3. Loai bo
4. 4. Nhap them
5. 5. Thoat
Lua chon cua ban : _
Sau ñoù ñôïi goõ phím . Chöông trình phaûi ñôïi cho tôùi khi phím goõ vaøo laø moät trong caùc chöõ soá 1
.. 5 hoaëc caùc chöõ caùi ñaàu cuûa caùc tuyø choïn thì thoâng baùo phím goõ vaøo hôïp leä vaø keát thuùc
chöông trình . Trong chöông trình phaûi duøng moät taäp hôïp ñeå kieåm tra vieäc nhaäp giaù trò cho
bieán töø baøn phím .
(* Hieån thò menu *)
Uses Crt;
Const
menu: set of char = ['1'..'5','X','S','L','N','T'];
Var
ch: char;
BEGIN
Clrscr;
Writeln(' 1. Xem ');
Writeln(' 2. Sua chua ');
Writeln(' 3. Loai bo ');
Writeln(' 4. Nhap them');
Writeln(' 5. Thoat ');
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 38
Write('Lua chon cua ban: ');
Repeat
ch:=readkey; ch:=Upcase(ch);
Until ch in menu;
Writeln;
Write('Ban da chon:');
Case ch of
'1','X': Writeln(' 1. Xem ');
'2','S': Writeln(' 2. Sua chua ');
'3','L': Writeln(' 3. Loai bo ');
'4','N': Writeln(' 4. Nhap them');
'5','T': Writeln(' 5. Thoat ');
End;
Readln;
END.
Baøi 5 :
Haõy laäp chöông trình nhaäp vaøo moät xaâu nhò phaân . Caùc kí töï nhaäp vaøo khoâng hôïp leä bò boû qua
.
(* nhaäp moät xaâu nhò phaân *)
Uses Crt;
Const bit : set of char= ['0','1'];
Var ch: char;
st: string;
BEGIN
Clrscr;
st:='';
Write('Nhap vao mot xau nhi phan : ');
Repeat
ch:= Readkey;
If ch in bit then
begin
st:=st+ch; Write(ch);
end
Else If ch<>#13 then Write(#7);
Until ch=#13;
Readln;
END.
Baøi 6 :
Haõy laäp chöông trình nhaäp vaøo moät xaâu kí töï töø baøn phím . Yeâu caàu caùc kí töï nhaäp vaøo phaûi laø
caùc chöõ caùi thuoäc baûng chöõ caùi tieáng Anh , boû qua caùc phím khaùc .
(* Nhaäp moät xaâu toaøn caùc chöõ caùi *)
Uses Crt;
Const A:set of char=['a'..'z','A'..'Z'];
Var ch: char;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 39
st: string;
BEGIN
Clrscr;
st:='';
Writeln('Nhap vao mot xau toan cac chu cai:');
Repeat
ch:=Readkey;
If ch in A then
begin
st:=st+ch; write(ch);
End
Else if ch<>#13 then Write(#7);
If ch=#0 then ch:=Readkey;
Until ch = #13;
END .
Baøi 7 :
Vieát chöông trình coù chöùc naêng theâm phaàn töû vaøo taäp hôïp tröïc tieáp töø baøn phím vaø loaïi bôùt
phaàn töû khoûi taäp hôïp cuõng tröïc tieáp töø baøn phím .
(* loai bo cac phan tu khoi tap hop *)
Uses Crt;
Var tap: set of char;
ch: char;
BEGIN
tap:=[];
Writeln('Nhap cac phan tu cho mot tap hop cac ki tu: ');
Repeat
ch:=ReadKey;
tap:=tap+[ch];
Writeln(ch);
Until not(ch in ['a'..'z']);
Writeln('Cac phan tu cua tap hop la:');
For ch:='a' to 'z' do
If ch in tap then Write(ch,' ');
Writeln;
Writeln('Ban muon bo cac phan tu nao khoi tap hop:');
Repeat
ch:=ReadKey;
tap:=tap-[ch];
Writeln(ch);
Until not(ch in ['a'..'z']);
Writeln('Cac phan tu con lai cua tap hop la:');
For ch:='a' to 'z' do
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 40
If ch in tap then Write(ch,' ');
Readln;
END .
BAØI TAÄP CHÖÔNG 7: KIEÅU RECORD
Baøi 1 :
Thoâng tin veà moãi hoïc sinh goàm :
 Hoï ñeäm : moät xaâu 25 kí töï .
 Teân : moät xaâu 10 kí töï .
 Tuoåi : moät soá nguyeân hai chöõ soá .
 Lôùp : moät xaâu hai chöõ soá vaø moät chöõ caùi vieát hoa
Haõy laäp chöông trình nhaäp töø baøn phím danh saùch moät lôùp 15 hoïc sinh vaøo moät maûng baûn ghi .
Sau ñoù hieån thò danh saùch leân maøn hình , moãi ngöôøi moät doøng .
(* Nhaäp danh saùch hoïc sinh töø baøn phím *)
Uses Crt;
Const n=15;
Type Danhsach=record
holot: string[25];
ten: string[10];
tuoi: 0..99;
lop: string[3];
End;
Var ds: array [1..n] of Danhsach;
i : byte;
BEGIN
ClrScr;
Writeln('Hay nhap danh sach hoc sinh : ');
Writeln;
For i:=1 to n do
Begin
Writeln('Thong tin hoc sinh thu ',i);
Write('Cho ho lot : '); Readln(ds[i].holot);
Write('Cho ten : '); Readln(ds[i].ten);
Write('Cho tuoi : '); Readln(ds[i].tuoi);
Write('Cho lop : '); Readln(ds[i].lop);
Writeln;
End;
Writeln('Danh sach hoc sinh :');
For i:=1 to n do
With ds[i] do Writeln(holot:20,ten:10,tuoi:4,lop:5);
Writeln;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 41
Write('Bam Enter de ket thuc...');
Readln;
END.
Baøi 2 :
Thoâng tin veà moãi hoïc sinh laø moät baûn ghi goàm caùc tröôøng :
 Hoïñeäm : moät xaâu 25 kí töï .
 Teân : moät xaâu 10 kí töï .
 Tuoåi : moät soá nguyeân hai chöõ soá .
 Lôùp : moät xaâu hai chöõ soá vaø moät chöõ caùi vieát hoa
Moät file baûn ghi chöùa moät danh saùch moät lôùp goàm 20 hoïc sinh . Haõy laäp chöông trình hieån thò
danh saùch leân maøn hình , moãi ngöôøi moät doøng .
(* Doc tu mot file ban ghi *)
Uses Crt;
Const n=5;
Type Danhsach=record
holot: string[25];
ten: string[10];
tuoi: 0..99;
lop: string[3];
end;
Var ds: Danhsach;
i: byte;
f: file of Danhsach;
BEGIN
ClrScr;
Writeln('Danh sach hoc sinh tu file bai2.dat');
Writeln;
Assign(f,'bai2.dat'); Reset(f);
For i:=1 to n do
Begin
Read(f,ds);
With ds do Writeln(holot:20,ten:11,tuoi:4,lop:5);
End;
Close(f);
Writeln;
Write('Bam Enter de ket thuc...');
Readln;
END .
Baøi 3 :
Moät file baûn ghi chöùa moät danh saùch hoïc sinh , thoâng tin veà moãi hoïc sinh gioáng nhö baøi treân .
Haõy laäp chöông trình taïo moät file baûn ghi khaùc chöùa danh saùch ñoù , moãi baûn ghi goàm caùc
tröôøng :
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 42
 Hoïteân : moät xaâu 35 kí töï .
 Tuoåi : moät soá nguyeân hai chöõ soá .
 Khoái : moät soá nguyeân hai chöõ soá .
 Lôùp : moät chöõ caùi vieát hoa
(* Doi kieu ban ghi *)
Uses Crt;
Type Danhsach1=record
holot: string[25];
ten: string[10];
tuoi: 0..99;
lop: string[3];
End;
Danhsach2=record
hoten: string[35];
tuoi: byte;
khoi: byte;
lop: char;
End;
Var ds1 : Danhsach1;
ds2 : Danhsach2;
f1 : file of Danhsach1;
f2 : file of Danhsach2;
c : integer;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 43
BEGIN
ClrScr;
Writeln('Ghi tu file bai3.dat sang bai3n.dat:');
Writeln;
Assign(f1,'bai3.dat'); Reset(f1);
Assign(f2,'bai3n.dat'); Rewrite(f2);
While not Eof(f1) do
Begin
Read(f1,ds1);
With ds1 do
Begin
ds2.hoten:=holot+ten;
val(copy(lop,1,2),ds2.khoi,c);
ds2.tuoi:=tuoi;
ds2.lop:=UpCase(lop[3]);
Write(f2,ds2);
End;
End;
Close(f1); Close(f2);
Writeln;
Writeln('Bam Enter de ket thuc!');
Readln;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 44
END .
Baøi 4 :
Moät file baûn ghi chöùa moät danh saùch hoïc sinh PTTH , thoâng tin veà moãi hoïc sinh ngoaøi caùc
tröôøng Hoïñeäm , Teân , Tuoåi , Lôùp gioáng nhö caùc baøi treân coøn coù theâm tröôøng Ñieåm chöùa ñieåm
trung bình cuûa hoïc sinh trong naêm hoïc . Haõy laäp chöông trình :
a. a. Hieån thò leân maøn hình danh saùch nhöõng hoïc sinh gioûi nhaát cuûa tröôøng laø nhöõng baïn coù
ñieåm trung bình töø 8.0 trôû leân vaø cao nhaát trong khoái .
b. b. Laäp danh saùch hoïc sinh trong naêm hoïc môùi , bieát moät hoïc sinh coù ñieåm trung bình töø 5.0
trôû leân thì ñöôïc leân lôùp . Chuù yù : lôùp 10A leân lôùp 11A , lôùp 11A leân 12A ... Keát quaû chöùa
trong file .
(* Khen thuong va len lop *)
Uses Crt;
Type Danhsach=record
holot: string[25];
ten: string[10];
tuoi: 0..99;
lop: string[3];
diem: real;
End;
Var ds: array [1..100] of Danhsach;
f: file of Danhsach;
n: integer;
Procedure Nhap;
Begin
Assign(f,'bai4.dat'); Reset(f);
n:=0;
While not Eof(f) do
Begin
n:=n+1; Read(f,ds[n]);
End;
Close(f);
End;
Procedure Timgioi;
Var i: integer;
max10,max11,max12: real;
l: string;
Begin
max10:=0; max11:=0; max12:=0;
For i:=1 to n do With ds[i] do
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 45
Begin
l:=copy(lop,1,2);
If (l='10')and(diem>max10)and(diem>8.0) then max10:=diem
Else If (l='11')and(diem>max11)and(diem>8.0) then max11:=diem
Else If (l='12')and(diem>max12)and(diem>8.0) then max12:=diem;
End;
Writeln('Hoc sinh gioi nhat khoi 10 : ');
For i:=1 to n do With ds[i] do
If (copy(lop,1,2)='10')and(diem>=max10) then
Writeln(holot:20,ten:10,tuoi:4,lop:5,diem:5:1);
Writeln('Hoc sinh gioi nhat khoi 11 : ');
For i:=1 to n do With ds[i] do
If (copy(lop,1,2)='11')and(diem>=max11) then
Writeln(holot:20,ten:10,tuoi:4,lop:5,diem:5:1);
Writeln('Hoc sinh gioi nhat khoi 12 : ');
For i:=1 to n do With ds[i] do
If (copy(lop,1,2)='12')and(diem>=max12) then
Writeln(holot:20,ten:10,tuoi:4,lop:5,diem:5:1);
End;
Procedure Lenlop;
Var i: integer;
l: string;
f: file of Danhsach;
Begin
For i:=1 to n do With ds[i] do
Begin
l:=copy(lop,1,2);
If (l='10')and(diem>=5.0) then lop:='11'+lop[3]
Else If (l='11')and(diem>=5.0) then lop:='12'+lop[3]
Else If (l='12')and(diem>=5.0) then lop:='DTN';
End;
Assign(f,'bai4n.dat'); Rewrite(f);
For i:=1 to n do With ds[i] do
If lop<>'DTN' then Write(f,ds[i]);
Close(f);
End;
BEGIN
ClrScr;
Nhap;
Timgioi;
Lenlop;
Write('Bam ENTER de ket thuc...');
Readln;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 46
END .
Baøi 5 :
Cho file baûn ghi f chöùa döõ lieäu veà kho saùch , döõ lieäu veà moãi cuoán saùch ñöôïc chöùa trong moät
baûn ghi goàm 3 tröôøng mang thoâng tin veà :
 Hoï teân taùc giaû : moät xaâu 26 kí töï .
 Teân saùch : moät xaâu 40 kí töï .
 Naêm xuaát baûn : moät soá nguyeân 4 chöõ soá .
Haêy laäp chöông trình nhaäp döõ lieäu vaøo kho saùch , sau ñoù tìm ra :
 Nhöõng cuoán saùch cuûa moät taùc giaû cho tröôùc xuaát baûn vaøo moät naêm cho tröôùc .
 Nhöõng cuoán saùch coù teân cho tröôùc .
Keát quaû hieän treân maøn hình.
(* Tim kiem tren ban ghi *)
Uses Crt;
Type Danhsach=record
Tacgia: string[26];
Tensach: string[40];
NamXB: integer;
End;
Var ds: array [1..100] of Danhsach;
n : integer;
f : file of Danhsach;
M: Danhsach;
Procedure Nhap;
Begin
n:=0;
Assign(f,'bai5.dat'); Reset(f);
While not Eof(f) do
Begin
Inc(n); Read(f,ds[n]);
End;
Close(f);
End;
Procedure TheoTG;
Var tacgia: string;
namXB: integer;
i: integer;
Begin
Write('Cho ten tac gia : '); Readln(M.tacgia);
Write('Cho nam xuat ban : '); Readln(M.NamXB);
i:=1;
While (i<=n)and((ds[i].tacgia<>tacgia)or(ds[i].namXB<>namXB)) do i:=i+1;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 47
If (i>n) then Writeln('Khong tim duoc')
Else Writeln(ds[i].tacgia:28,ds[i].tensach:42,ds[i].namXB:6);
End;
Procedure TheoTS;
Var ten: string;
i: integer;
Begin
Write('Cho ten sach : '); Readln(ten);
i:=1;
While (i<=n)and(ds[i].tensach<>ten) do i:=i+1;
If (i>n) then Writeln('Khong tim duoc')
Else Writeln(ds[i].tacgia:28,ds[i].tensach:42,ds[i].namXB:6);
End;
Procedure Timkiem;
Var c:char;
Begin
Writeln('1. Tim kiem theo tac gia va nam xuat ban.');
Writeln('2. Tim kiem theo ten sach');
Writeln;
Write('Ban chon [1/2] : ');
Repeat
c:=Readkey;
Until pos(c,'12')>0;
Writeln(c);
If c='1' then TheoTG Else TheoTS;
End;
BEGIN
ClrScr;
Nhap;
Timkiem;
Write('Ban Enter de ket thuc...');
Readln;
END.
Baøi 6 :
File baûn ghi F chöùa danh saùch caùc ngaøy leã trong moät naêm , moãi baûn ghi goàm ngaøy thaùng , teân
ngaøy leã vaø soá ngaøy ñöôïc nghæ . Haõy laäp chöông trình nhaäp danh saùch caùc ngaøy leã vaø tính :
 Toång soá caùc ngaøy leã vaø toång soá caùc ngaøy nghæ leã trong naêm .
 Toång soá caùc ngaøy leã vaø toång soá caùc ngaøy nghæ leã trong quí 1 , quí 2 , …
Keát quaû theå hieän treân maøn hình .
(* Tinh so ngay le va ngay nghi trong nam ,qui *)
Uses Crt;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 48
Type Danhsach=record
ngay: byte;
thang: byte;
ten: string[15];
songay: integer;
end;
Var ds: array [1..100] of Danhsach;
n: integer;
f: file of Danhsach;
snn,snnq1,snnq2,snnq3,snnq4: integer;
tsq1,tsq2,tsq3,tsq4: integer;
Procedure Nhap;
Begin
n:=0;
Assign(f,'bai6.dat'); Reset(f);
While not Eof(f) do
Begin
Inc(n); Read(f,ds[n]);
End;
Close(f);
End;
Procedure Tinh_ngay_nghi;
Var i: integer;
Begin
snn:=0;
snnq1:=0; tsq1:=0;
snnq2:=0; tsq2:=0;
snnq3:=0; tsq3:=0;
snnq4:=0; tsq4:=0;
For i:=1 to n do With ds[i] do
Begin
Inc(snn,songay);
If (thang<3) then
Begin
Inc(snnq1,songay); Inc(tsq1);
End
Else If (thang<6) then
Begin
Inc(snnq2,songay); Inc(tsq2);
End;
If (thang<9) then
Begin
Inc(snnq3,songay); Inc(tsq3);
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 49
End ;
If (thang<12) then
Begin
Inc(snnq4,songay); Inc(tsq4);
End;
End;
End;
Procedure Inkq;
Var i: integer;
Begin
Writeln('So ngay le trong nam : ',n);
Writeln('Tong so ngay nghi le trong nam : ',snn);
Writeln;
Writeln('So ngay le trong qui 1 : ',tsq1);
Writeln('Tong so ngay nghi le trong qui 1 : ',snnq1);
Writeln('So ngay le trong qui 2 : ',tsq2);
Writeln('Tong so ngay nghi le trong qui 2 : ',snnq2);
Writeln('So ngay le trong qui 3 : ',tsq3);
Writeln('Tong so ngay nghi le trong qui 3 : ',snnq3);
Writeln('So ngay le trong qui 4 : ',tsq4);
Writeln('Tong so ngay nghi le trong qui 4 : ',snnq4);
Writeln;
End;
BEGIN
Clrscr;
Nhap;
Tinh_ngay_nghi;
Inkq;
Write('Ban Enter de ket thuc...');
Readln;
END.
BAØI TAÄP CHÖÔNG 8: KIEÅU FILE
Baøi 1 :
Haõy laäp chöông trình taïo moät teäp soá nguyeân chöùa caùc soá nguyeân toá nhoû hôn 10000 theo thöù töï
taêng daàn .
(* Taïo file soá nguyeân toá nhoû hôn 10000 *)
Uses Crt;
Const N=10000;
Var i , j : Integer;
f: File of Integer;
a: Array[2..N] of boolean;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 50
BEGIN
For i:=2 to N do a[i]:=true;
i:=2;
Repeat
For j:=2 to (N div i) do a[i*j]:=false;
Repeat Inc(i) Until a[i] or (i>N);
Until i>N;
Assign(F,'C:SoNT.dat'); Rewrite(F);
For i:=1 to N do If a[i] then Write(F,i);
Close(F);
clrscr;
Write(' Viet ra file "C:SoNT" cac so nguyen to nho hon 10000 ');
Readln;
END .
Baøi 2 :
Cho f laø teäp vaên baûn chöùa caùc xaâu 10 kí töï . Haõy laäp chöông trình nhaäp vaø hieån thò noäi dung
file ñoù leân maøn hình , moãi xaâu moät doøng , ñaày trang maøn hình thì döøng laïi ñôïi goõ Enter môùi
hieån thò trang tieáp theo cho tôùi heát.
(* Ghi vaø ñoïc file of String *)
Uses Crt;
Const INP='FoString.dat';
Type String10 = String[10];
Procedure Ghi;
Var f: file of String10; S: String10;
Begin
Assign(f,INP); Rewrite(f);
Writeln('Nhap vao f. Thoi nhap khi S='''' (go Enter)!');
Readln(S);
While (S<>'') do
Begin
Write(f,S);
Readln(S);
End;
Close(f);
End;
Procedure Doc;
Var f: file of String10; S: String10;
Begin
Clrscr;
Assign(f,INP); Reset(f);
While Not Eof(f) Do
Begin
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 51
Read(f,S);
Writeln(S);
If WhereY=25 then
Begin
Write('Press Enter to continue..');
Readln; Clrscr;
End;
End;
Close(f);
Readln;
End;
BEGIN
Ghi;
Doc;
END.
Baøi 3 :
Baïn haõy vieát chöông trình cho pheùp ñoïc döõ lieäu töø baøn phím vaø ghi theâm vaøo cuoái moät teäp caùc
baûn ghi .
(* Doc vaø ghi vaøo cuoái teäp caùc baûn ghi *)
Uses Crt;
Const inp='Hocsinh.dat';
Type Hocsinh=Record
Ten : String[30];
Tuoi: Byte;
End;
Var F : file of Hocsinh;
Hs: Hocsinh;
BEGIN
Assign(f,inp); Reset(f);
Write('Ho va ten: '); Readln(Hs.Ten);
Write('Tuoi : '); Readln(Hs.Tuoi);
Seek(f,Filesize(F));
Write(f,Hs);
Close(f);
END .
Baøi 4 :
Cho moät vaên baûn chöùa trong moät text file f . Trong vaên baûn , tính töø traùi sang phaûi , töø treân
xuoáng döôùi , kí töï # laø kí hieäu xoaù ñi moät töø ñöùng ngay tröôùc noù neáu coù . Ví duï ‘#Ta#oi di
ngu#h###hoc’ coù nghóa laø ‘Toi di hoc’ . Baïn haõy vieát chöông trình söûa laïi file f theo quy öôùc
treân .
(* Söûa vaên baûn *)
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 52
Uses Crt;
Const fi='vanban.txt';
Var f: text;
s: string;
ch: char;
Procedure docfile ( fi : String );
Var f : text ;
Begin
Assign(f,fi); Reset(f);
while not eof(f) do
Begin
Read(f,ch);
Write(ch);
End;
close(f) ;
writeln ;
End ;
BEGIN
Writeln(' Van ban ban dau doc tu file "vanban.txt" :') ;
docfile(fi) ;
assign(f,fi) ; reset(f) ;
s:='';
Repeat
Read(f,ch);
If (ch='#')then Delete(s,length(s),1) Else s:=s+ch;
Until Eof(f);
Close(f);
Assign(f,fi); Rewrite(f);
Writeln(f,s);
Close(f);
Writeln(' Van ban sau khi sua chua :') ;
docfile(fi) ;
Readln;
END .
Baøi 5 :
Cho 2 file f vaø g cuøng kieåu ( nhöng khoâng roõ kieåu naøo ) . Baïn haõy laäp thuû tuïc gaùn noäi dung cuûa
file g cho file f.
(* Gan hai file *)
Uses Crt;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 53
Const
f1='calc.ex';
f2='C:calc.exe';
Procedure Copyfile(fi1,fi2: string);
Var nread,nbuf: word;
buf: array [1..1024] of byte;
f1,f2: file;
Begin
Assign(f1,fi1); Reset(f1,1);
Assign(f2,fi2); Rewrite(f2,1);
nbuf:=1024;
Repeat
Blockread(f1,buf,nbuf,nread);
Blockwrite(f2,buf,nread);
Until nread<>nbuf;
Close(f1); Close(f2);
End;
BEGIN
Copyfile(f1,f2);
END.
Baøi 6 :
Cho moät file text ghi laïi moät chöông trình Pascal cuûa moät hoïc sinh . Haõy vieát chöông trình
kieåm tra loãi cuûa chöông trình Pascal treân theo caùc caùch sau ñaây :
Caùch 1 : Kieåm tra xem soá löôïng caùc daáu ‘ ( daáu môû vaø daáu ñoùng ) coù baèng nhau khoâng ?
Caùch 2 : Kieåm tra xem soá löôïng caùc töø Begin vaø End coù baèng nhau khoâng ?
(* Dem (') vaø 'Begin' , 'End' *)
Uses Crt;
Const fi='C8_6.txt';
Function Dem(c: string): integer;
Var n,l: integer; f: text; S: string;
Begin
l:=Length(c); n:=0;
Assign(f,fi); Reset(f);
While not Eof(f) do
Begin
Readln(f,S);
While pos(c,s)<>0 do
Begin
Inc(n); Delete(s,pos(c,s),l);
End;
End;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 54
Close(f);
Dem:=n;
End;
BEGIN
Clrscr;
Write(' So luong cac dau ( va ) ');
If Dem('(')<>Dem(')') then Writeln('khong bang nhau.')
Else Writeln('bang nhau.');
Write(' So luong cac tu Begin va End ');
If Dem('End')<>Dem('Begin') then Writeln('khong bang nhau.')
Else Writeln('bang nhau.');
Readln;
END .
Baøi 7 :
Cho moät file text . Haõy vieát chöông trình ñeám xem file text treân chöùa bao nhieâu töø .
( Chuù yù : theo quy ñònh , caùc töø caùch nhau bôûi moät hay nhieàu daáu caùch ) .
(* Ñeám töø *)
Uses Crt;
Const fi = 'hoten.txt';
Var f: text;
s: string;
dem: word;
BEGIN
Clrscr;
dem:=0;
Assign(f,fi); Reset(f);
While not Eof(f) do
Begin
Readln(f,s);
While s[1]=' ' do Delete(s,1,1);
While length(s)>0 do
Begin
Case s[1] of
' ': While (s[1]=' ')and(length(s)>0) do Delete(s,1,1);
Else
Begin
inc(dem);
While (s[1]<>' ')and(length(s)>0) do Delete(s,1,1);
End;
End;
End;
End;
Close(f);
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 55
Write(' So tu co trong file hoten.txt la: ',dem);
Readln;
END.
Baøi 8 :
Cho moät file text . Vieát chöông trình loaïi boû caùc khoaûng troáng thöøa beân trong file text naøy .
(* Cat khoang trong thua *)
Uses Crt;
Const fi = 'file.inp';
fo = 'C:file.out';
Var inp,out: text;
s: string;
BEGIN
Assign(inp,fi); Reset(inp);
Assign(out,fo); Rewrite(out);
While not Eof(inp) do
Begin
Readln(inp,s);
While (s[1]=' ')and(Length(s)>0) do Delete(s,1,1);
While (s[Length(s)]=' ')and(Length(s)>0) do Delete(s,Length(s),1);
While (Length(s)>0)and(pos(' ',s)<>0) do Delete(s,pos(' ',s),1);
Writeln(out,s);
End;
Close(out); Close(inp);
END.
BAØI TAÄP CHÖÔNG 9: CON TROÛ
Baøi 1 :
Baïn haõy laäp chöông trình cho pheùp ta nhaäp töø baøn phím moät danh saùch ñöôïc gheùp noái . Sau ñoù
gôõ boû moät record khoûi danh saùch .
(* Gôõ boû baûn ghi khoûi danh saùch *)
Uses Crt;
Type ptr=^rec;
rec=record
name: string[20];
next: ptr;
End;
Var k : integer;
p,l : ptr;
Procedure Nhap;
Begin
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 56
ClrScr;
New(p); l:=p;
Write('Ten: '); Readln(p^.name);
Repeat
New(p^.next);
p:=p^.next;
Write('Ten: '); Readln(p^.name);
Until p^.name='';
p^.next:=nil;
Write('Vi tri ban ghi can go bo: '); Readln(k);
End;
Procedure Gobo;
Var i: integer; q: Ptr;
Begin
p:=l; For i:=1 to k do p:=p^.next; (* Tìm vò trí cuoái *)
q:=p;
p:=l; For i:=3 to k do p:=p^.next; (* Tìm vò trí ñaàu *)
If k=1 then l:=q Else p^.next:=q;
End;
Procedure In_kq;
Begin
While (l^.next<>nil) do
Begin
Writeln(l^.name);
l:=l^.next;
End;
Readln;
End;
BEGIN
Nhap;
Gobo;
In_kq;
END.
Baøi 2 :
Baïn haõy laäp chöông trình cho pheùp nhaäp moät danh saùch ñöôïc gheùp noái . Sau ñoù cheøn theâm
moät record vaøo danh saùch .
(* Cheøn theâm baûn ghi vaøo danh saùch *)
Uses Crt;
Const inp='C9_2.inp';
Type ptr=^rec;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 57
rec=record
name: string[20];
next: ptr;
End;
Var f: text;
k: integer;
p,s,l: ptr;
Procedure Nhap;
Begin
Assign(f,inp); Reset(f);
New(p); l:=p;
While not EoF(f) do
Begin
Readln(f,p^.name);
New(p^.next);
p:=p^.next;
End;
p^.next:=nil;
Close(f);
New(s);
Clrscr;
Writeln('Nhap ban ghi can chen: ');
Write('Ten: '); Readln(s^.name);
Write('Vi tri can chen: '); Readln(k);
End;
Procedure Chen_rec;
Var i: integer;
Procedure Cat(Var L: ptr);
Begin s^.next:=l; l:=s; End;
Begin
p:=l; For i:=3 to k do p:=p^.next; (* Tim vi tri *)
If k>1 then Cat(p^.next) Else Cat(l); {Cat - Noi}
End;
Procedure In_kq;
Begin
While (l^.next<>nil) do
Begin
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 58
Writeln(l^.name);
l:=l^.next;
End;
Readln;
End;
BEGIN
Nhap;
Chen_rec;
In_kq;
END.
Baøi 3 :
Baïn haõy laäp chöông trình cho pheùp nhaäp moät danh saùch ñöôïc gheùp noái . Sau ñoù ñoåi choã hai
record trong danh saùch .
(* Ñoåi choã 2 baûn ghi trong danh saùch *)
Uses Crt;
Const inp='C9_3.txt';
Type ptr=^rec;
rec=record
name: string[20];
next: ptr;
End;
Var f: text;
j,k: integer;
p,l: ptr;
tenj,tenk: string;
Procedure Nhap;
Begin
Assign(f,inp); Reset(f);
New(p); l:=p;
While not EoF(f) do
Begin
Readln(f,p^.name);
New(p^.next);
p:=p^.next;
End;
p^.next:=nil;
Close(f);
Clrscr;
Write('Nhap vi tri 2 ban ghi can doi cho: '); Readln(j,k);
End;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 59
Procedure Doicho;
Var i: integer;
Begin
p:=l; For i:=2 to k do p:=p^.next; tenk:=p^.name;
p:=l; For i:=2 to j do p:=p^.next; tenj:=p^.name;
p:=l; For i:=2 to k do p:=p^.next; p^.name:=tenj;
p:=l; For i:=2 to j do p:=p^.next; p^.name:=tenk;
End;
Procedure In_kq;
Begin
While (l^.next<>nil) do
Begin
Writeln(l^.name);
l:=l^.next;
End;
Readln;
End;
BEGIN
Nhap;
Doicho;
In_kq;
END.
BAØI TAÄP CHÖÔNG 10: ÑOÀ HOÏA
Baøi 1 :
Veõ hình chöõ nhaät coù taâm truøng vôùi taâm maøn hình , caùc caïnh song song vaø tæ leâ vôùi caùc caïnh
maøn hình , kích thöôùc lôùn daàn theo thôøi gian .
(* Hình chöõ nhaät thay ñoåi kích thöôùc *)
Uses Crt,Graph;
Var Gd,Gm,x,y: Integer;
tl: real;
BEGIN
Gd:=Detect;
InitGraph(Gd,Gm,'');
If GraphResult <> GrOk Then Halt ;
tl:=GetMaxY/GetMaxX;
SetFillStyle(1,4);
For x:=1 to GetMaxX do
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 60
Begin
y:=round(x*tl);
Bar((GetMaxX-x) div 2,(GetMaxY-y) div 2,
(GetMaxX+x) div 2,(GetMaxY+y) div 2);
Delay(10);
End;
CloseGraph;
END.
Baøi 2 :
Veõ hình chöõ nhaät nhö treân , kích thöôùc ñieàu khieån ñöôïc . Neáu goõ phím + thì hình lôùn leân , goõ
phím – thì nhoû ñi , goõ Enter thì döøng chöông trình .
(* Hình chöõ nhaät kích thöôùc ñieàu khieån ñöôïc *)
Uses Crt, Graph;
Var Gd,Gm,x,y: Integer;
tl: real;
c: char;
BEGIN
Gd:=Detect;
InitGraph(Gd,Gm,'');
tl:=GetMaxY/GetMaxX;
x:=GetMaxX div 2;
y:=round(x*tl);
SetFillStyle(1,4);
Bar((GetMaxX-x) div 2,(GetMaxY-y) div 2,
(GetMaxX+x) div 2,(GetMaxY+y) div 2);
Repeat
OutTextXY(0,0,'Press Esc to Exit...');
Repeat
c:=ReadKey;
Until c in [#27,'+','-'];
SetFillStyle(1,0);
Bar((GetMaxX-x) div 2,(GetMaxY-y) div 2,
(GetMaxX+x) div 2,(GetMaxY+y) div 2);
If (c='+')and(x<GetMaxX) then Inc(x)
Else If (c='-')and(y>0) then Dec(x);
y:=round(x*tl);
SetFillStyle(1,4);
Bar((GetMaxX-x) div 2,(GetMaxY-y) div 2,
(GetMaxX+x) div 2,(GetMaxY+y) div 2);
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 61
Until c=#27;
CloseGraph;
END.
Baøi 3 :
Moät baøn côø vua hieån thò treân maøn hình . Neáu ñaët moät con haäu ( hình troøn maøu ñoû ) vaøo moät oâ
baèng caùch nhaäp teân oâ , chaúng haïn a5 , thì caùc oâ bò con haâu khoáng cheá seõ ñöôïc toâ maøu xanh .
Baïn haõy laäp chöông trình thöïc hieän caùc yeâu caàu treân .
(* Phaïm vi kieåm soaùt cuûa Con haäu *)
Uses Crt,Graph;
Const N=8; W=40; X=150; Y=400;
Var Gd,Gm,i,Hi: Integer;
j,Hj,H: char;
S: String;
Pattern : FillPatternType;
BEGIN
Gd:=Detect;
InitGraph(Gd,Gm,'');
OutTextXY(270,430,'Ban co vua');
For i:=1 to N do
For j:='a' to chr(Ord('a')+N-1) do
Begin
If Odd(i+Ord(j)) then SetFillStyle(SolidFill,14)
Else SetFillStyle(SolidFill,15);
Bar(X+(i-1)*W,Y-(Ord(j)-Ord('a'))*W,X+i*W,Y-(Ord(j)-Ord('a')+1)*W);
End;
OutTextXY(200,20,'Nhap vi tri con hau:');
Hj:=ReadKey; OutTextXY(370,20,Hj);
H:=ReadKey; Hi:=Ord(H)-Ord('0'); OutTextXY(380,20,H);
SetColor(4);
Circle(X+(Hi-1)*W+W div 2,Y-(Ord(Hj)-Ord('a'))*W-W div 2,W div 2-5);
GetFillPattern(Pattern);
SetFillPattern(Pattern,4);
FloodFill(X+(Hi-1)*W+W div 2,Y-(Ord(Hj)-Ord('a'))*W-W div 2,4);
SetFillStyle(SolidFill,13);
For i:=1 to N do
For j:='a' to chr(Ord('a')+N-1) do
If ((i<>Hi)or(j<>Hj))
and((Abs(i-Hi)=Abs(Ord(j)-Ord(Hj)))or(i=Hi)or(j=Hj)) then
Bar(X+(i-1)*W,Y-(Ord(j)-Ord('a'))*W,X+i*W,Y-(Ord(j)-Ord('a')+1)*W);
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 62
Readln;
CloseGraph;
END.
Baøi 4 :
Veõ ñoàng hoà ñieän töû hoaït ñoäng treân maøn hình .
(* Ñoàng hoà ñieän töû *)
Uses Crt,Dos,Graph;
Var h,m,s,hund: Word;
GD,GM: Integer;
St: String;
Function LeadingZero(w: Word): String;
Var s: String;
Begin
Str(w:0,s);
if Length(s)=1 then s:='0'+s;
LeadingZero:=s;
End;
BEGIN
GD:=Detect;
InitGraph(GD,GM,' ');
SetTextStyle(DefaultFont,HorizDir,5);
Repeat
GetTime(h,m,s,hund);
St:=LeadingZero(h)+':'+LeadingZero(m)+':'+LeadingZero(s);
SetColor(15);
OutTextXY(150,200,St);
Delay(1000);
SetColor(0);
OutTextXY(150,200,St);
Until KeyPressed;
CloseGraph;
END.
Baøi 5 :
Hieån thò moät ñieåm chuyeån ñoäng ñeàu theo chieàu kim ñoàng hoà treân quyõ ñaïo troøn , taâm laø taâm
maøn hình , baùn kính r = 150 .
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 63
(* Ñieåm chuyeån ñoäng troøn ñeàu *)
Uses Crt, Graph;
Const
r=150; v=5;
Var
Gd,Gm,x0,y0,x,y: Integer;
a: real; (* goùc *)
BEGIN
Gd:=Detect;
InitGraph(Gd,Gm,' ');
x0:=GetMaxX div 2; y0:=GetMaxY div 2;
PutPixel(x0,y0,4);
a:=0;
Repeat
x:=x0+Round(r*cos(a)); y:=y0+Round(r*sin(a));
PutPixel(x,y,15);
Delay(v);
PutPixel(x,y,0);
a:=a+0.01;
Until KeyPressed;
CloseGraph;
END.
Baøi 6 :
Hieån thò moät hình chöõ nhaät treân maøn hình , vò trí coù theå ñieàu khieån ñöôïc baèng baøn phím . Goõ
caùc phím muõi teân ñeå dòch chuyeån hình ñoù theo caùc höôùng töông öùng .
(* dieu khien vi tri cua hinh vuong *)
Uses Crt, Graph;
Var Gd,Gm,x,y,v: Integer;
Pa,Pb: Pointer;
Size: Word;
c: char;
BEGIN
Gd:=Detect;
InitGraph(Gd,Gm,' ');
Size:=ImageSize(0,0,20,20);
GetMem(Pb,Size);
GetImage(0,0,20,20,Pb^);
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 64
GetMem(Pa,Size);
Bar(0,0,20,20);
GetImage(0,0,20,20,Pa^);
ClearDevice;
x:=300; y:=200; v:=10; c:=#77;
Repeat
PutImage(x,y,Pa^,NormalPut);
Repeat Until KeyPressed;
c:=ReadKey; If c=#0 then c:=ReadKey;
PutImage(x,y,Pb^,NormalPut);
Case c of
#72: Dec(y);
#75: Dec(x);
#77: Inc(x);
#80: Inc(y);
End;
If x>600 then x:=0;
If x<0 then x:=600;
If y>440 then y:=0;
If y<0 then y:=440;
Until (c=#27)or(c=#13);
CloseGraph;
END.
Baøi 7 :
Veõ hình sau vôùi caùc phoâng chöõ , caùc maøu khaùc nhau :
Size 8
Size 16
Size 24
Size 32
Size 40
(* Caùc daïng phoâng chöõ *)
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 65
Uses Graph;
Const K=3;
Var Gd,Gm,Font,Color,Size,i: Integer;
S: String;
BEGIN
Gd:=Detect;
InitGraph(Gd,Gm,' ');
Color:=0;
For Font:=0 to 11 do
Begin
ClearDevice;
For i:=1 to 4 do
Begin
Size:=(i-1)*K+1;
Inc(Color); Color:=Color mod 15+1;
SetColor(Color);
SetTextStyle(Font,HorizDir,Size);
Str(Size,S); S:='Size '+S;
OutTextXY(100,i*80,S) ;
End;
Readln;
End;
CloseGraph;
END.
Baøi 8 :
Veõ heä truïc toaï ñoä vaø ñoà thò haøm soá y = x2
vôùi ñaày ñuû chuù thích .
(* Ñoà thò cuûa haøm soá y = Sqr(x) *)
Uses Graph;
Const X0=320;Y0=300;E=50;
Var Gd,Gm,i,j,k: Integer;
x,y: real;
S: String;
BEGIN
Gd:=Detect;
InitGraph(Gd,Gm,' ');
Line(100,Y0,550,Y0); {Truc Ox}
OutTextXY(540,Y0+10,'x');
For k:=-3 to 3 do
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 66
Begin
i:=k*E+X0; j:=Y0;
Str(k,S);
OutTextXY(i-10,j+8,S);
Bar(i-1,j-1,i+1,j+1);
End;
Line(X0,50,X0,370); {Truc Oy}
OutTextXY(X0-20,50,'y');
For k:=-1 to 4 do
Begin
i:=X0; j:=-k*E+Y0;
Str(k,S);
If k<>0 then OutTextXY(i-20,j,S);
Bar(i-1,j-1,i+1,j+1);
End;
For i:=X0-2*E to X0+2*E do {Do thi}
Begin
x:=(i-X0)/E; y:=Sqr(x); j:=Round(-y*E+Y0);
PutPixel(i,j,10);
End;
SetTextStyle(1,0,2);
OutTextXY(100,400,'Do thi ham so y = Sqr(x):');
Readln;
CloseGraph;
END.
Baøi 9 :
Veõ vaø toâ maøu cho ngoâi nhaø sau . Ñaûm baûo khaû naêng baät taét ñieän cho ngoâi nhaø . Neáu goõ phím
+ thì ñeøn saùng ( cöûa soå coù maøu traéng ) , goõ phím – thì ñeøn taét ( cöûa soá coù maøu ñen )
.
(* To mau Ngoi nha *)
Uses Crt,Graph;
Var Gd,Gm: Integer;
Pattern : FillPatternType;
c: Char;
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 67
BEGIN
Gd:=Detect;
InitGraph(Gd,Gm,' ');
GetFillPattern(Pattern);
OutTextXY(120,50,'To mau Ngoi nha:');
Rectangle(220,200,420,330);
Rectangle(250,230,300,330);
Rectangle(330,230,390,280);
MoveTo(220,200);
Lineto(180,200);
Lineto(220,140);
Lineto(420,140);
Lineto(460,200);
Lineto(420,200);
SetFillPattern(Pattern,Blue);
Floodfill(0,0,White);
SetFillPattern(Pattern,4);
Floodfill(320,190,White);
SetFillPattern(Pattern,8);
Floodfill(320,220,White);
Repeat
Repeat c:=ReadKey; Until c in [#27,'+','-'];
If (c='+') then SetFillPattern(Pattern,14)
Else If (c='-') then SetFillPattern(Pattern,0);;
Floodfill(270,300,White);
Floodfill(370,270,White);
Until c=#27;
CloseGraph; END.
MUÏC LUÏC
Chöông 1:IF ……..Then …………Else.
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com)
Bài tập Pascal có lời giải 68

More Related Content

What's hot

Conditional Control in MATLAB Scripts
Conditional Control in MATLAB ScriptsConditional Control in MATLAB Scripts
Conditional Control in MATLAB ScriptsShameer Ahmed Koya
 
Serie algos approximationx
Serie algos approximationxSerie algos approximationx
Serie algos approximationxmohamed_SAYARI
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetiquemohamed_SAYARI
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)salah fenni
 
Race condition
Race conditionRace condition
Race conditionhama7230
 
Std 12 Computer Chapter 9 Working with Array and String in Java important MCQs
Std 12 Computer Chapter 9 Working with Array and String in Java important MCQsStd 12 Computer Chapter 9 Working with Array and String in Java important MCQs
Std 12 Computer Chapter 9 Working with Array and String in Java important MCQsNuzhat Memon
 
Practical Class 12th (c++programs+sql queries and output)
Practical Class 12th (c++programs+sql queries and output) Practical Class 12th (c++programs+sql queries and output)
Practical Class 12th (c++programs+sql queries and output) Aman Deep
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018salah fenni
 
Insecure coding in C (and C++)
Insecure coding in C (and C++)Insecure coding in C (and C++)
Insecure coding in C (and C++)Olve Maudal
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Hichem Kemali
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmationborhen boukthir
 
Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximationmohamed_SAYARI
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)salah fenni
 
Nhưng kinh nghiệm đề tay thép hay mà kỹ sư hiện trường không thể bỏ qua
Nhưng kinh nghiệm đề tay thép hay mà kỹ sư hiện trường không thể bỏ quaNhưng kinh nghiệm đề tay thép hay mà kỹ sư hiện trường không thể bỏ qua
Nhưng kinh nghiệm đề tay thép hay mà kỹ sư hiện trường không thể bỏ quaKiến Trúc KISATO
 

What's hot (20)

Conditional Control in MATLAB Scripts
Conditional Control in MATLAB ScriptsConditional Control in MATLAB Scripts
Conditional Control in MATLAB Scripts
 
Serie algos approximationx
Serie algos approximationxSerie algos approximationx
Serie algos approximationx
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetique
 
Recursiviteeeeeeeeee
RecursiviteeeeeeeeeeRecursiviteeeeeeeeee
Recursiviteeeeeeeeee
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)
 
Serie
SerieSerie
Serie
 
Race condition
Race conditionRace condition
Race condition
 
Ansi c
Ansi cAnsi c
Ansi c
 
Serie2
Serie2Serie2
Serie2
 
Std 12 Computer Chapter 9 Working with Array and String in Java important MCQs
Std 12 Computer Chapter 9 Working with Array and String in Java important MCQsStd 12 Computer Chapter 9 Working with Array and String in Java important MCQs
Std 12 Computer Chapter 9 Working with Array and String in Java important MCQs
 
Practical Class 12th (c++programs+sql queries and output)
Practical Class 12th (c++programs+sql queries and output) Practical Class 12th (c++programs+sql queries and output)
Practical Class 12th (c++programs+sql queries and output)
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018
 
Insecure coding in C (and C++)
Insecure coding in C (and C++)Insecure coding in C (and C++)
Insecure coding in C (and C++)
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
 
Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximation
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
 
Nhưng kinh nghiệm đề tay thép hay mà kỹ sư hiện trường không thể bỏ qua
Nhưng kinh nghiệm đề tay thép hay mà kỹ sư hiện trường không thể bỏ quaNhưng kinh nghiệm đề tay thép hay mà kỹ sư hiện trường không thể bỏ qua
Nhưng kinh nghiệm đề tay thép hay mà kỹ sư hiện trường không thể bỏ qua
 
Python basics
Python basicsPython basics
Python basics
 
Récursivité
RécursivitéRécursivité
Récursivité
 

Similar to Bài tập pascal

Bai tap pascal co giai
Bai tap pascal co giaiBai tap pascal co giai
Bai tap pascal co giaitrungdha
 
Tuyen chon-bai-tap-pascal-lop
Tuyen chon-bai-tap-pascal-lopTuyen chon-bai-tap-pascal-lop
Tuyen chon-bai-tap-pascal-lopphuocpg
 
Bai tap-pascal-lop-11
Bai tap-pascal-lop-11Bai tap-pascal-lop-11
Bai tap-pascal-lop-11sonnqsp
 
Cac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieuCac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieuThanh Pham
 
Mot sothuattoan
Mot sothuattoanMot sothuattoan
Mot sothuattoanHoàng My
 
Bài tập cơ bản-nâng cao mảng
Bài tập cơ bản-nâng cao mảngBài tập cơ bản-nâng cao mảng
Bài tập cơ bản-nâng cao mảngTường Tường
 
Bao cao chia se bd hsg
Bao cao chia se bd hsgBao cao chia se bd hsg
Bao cao chia se bd hsghohoa15
 
Java printing
Java printingJava printing
Java printingLý Công
 
Bai 17 chuong trinh con va phan loai
Bai 17 chuong trinh con va phan loaiBai 17 chuong trinh con va phan loai
Bai 17 chuong trinh con va phan loaiThaiPham97
 
Bai tap pascal tong hop
Bai tap pascal tong hopBai tap pascal tong hop
Bai tap pascal tong hopQuyen Hong
 

Similar to Bài tập pascal (18)

Bai tap pascal co giai
Bai tap pascal co giaiBai tap pascal co giai
Bai tap pascal co giai
 
Khao sat
Khao satKhao sat
Khao sat
 
Khao sat
Khao satKhao sat
Khao sat
 
Tuyen chon-bai-tap-pascal-lop
Tuyen chon-bai-tap-pascal-lopTuyen chon-bai-tap-pascal-lop
Tuyen chon-bai-tap-pascal-lop
 
Bai tap-pascal-lop-11
Bai tap-pascal-lop-11Bai tap-pascal-lop-11
Bai tap-pascal-lop-11
 
Bai 11 kieu mang
Bai 11 kieu mangBai 11 kieu mang
Bai 11 kieu mang
 
Cac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieuCac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieu
 
Bai tap mau pascal
Bai tap mau pascalBai tap mau pascal
Bai tap mau pascal
 
Bai12 kieuxau
Bai12 kieuxauBai12 kieuxau
Bai12 kieuxau
 
Mot sothuattoan
Mot sothuattoanMot sothuattoan
Mot sothuattoan
 
Bài tập cơ bản-nâng cao mảng
Bài tập cơ bản-nâng cao mảngBài tập cơ bản-nâng cao mảng
Bài tập cơ bản-nâng cao mảng
 
Bao cao chia se bd hsg
Bao cao chia se bd hsgBao cao chia se bd hsg
Bao cao chia se bd hsg
 
Java printing
Java printingJava printing
Java printing
 
Bai 17 chuong trinh con va phan loai
Bai 17 chuong trinh con va phan loaiBai 17 chuong trinh con va phan loai
Bai 17 chuong trinh con va phan loai
 
Bai tap pascal tong hop
Bai tap pascal tong hopBai tap pascal tong hop
Bai tap pascal tong hop
 
Bai9
Bai9Bai9
Bai9
 
Bai9
Bai9Bai9
Bai9
 
Bai9
Bai9Bai9
Bai9
 

More from Tường Tường (16)

Một Số Phương Pháp Hỗ Trợ dạy Học
Một Số Phương Pháp Hỗ Trợ dạy HọcMột Số Phương Pháp Hỗ Trợ dạy Học
Một Số Phương Pháp Hỗ Trợ dạy Học
 
Bai tập mảng
Bai tập mảngBai tập mảng
Bai tập mảng
 
Bài tập xâu cơ bản-nâng cao
Bài tập xâu cơ bản-nâng caoBài tập xâu cơ bản-nâng cao
Bài tập xâu cơ bản-nâng cao
 
Gthieu
GthieuGthieu
Gthieu
 
Bài 12: Kiểu Xâu (Tiết 3)
Bài 12: Kiểu Xâu (Tiết 3)Bài 12: Kiểu Xâu (Tiết 3)
Bài 12: Kiểu Xâu (Tiết 3)
 
Bai12 kieuxau3
Bai12 kieuxau3Bai12 kieuxau3
Bai12 kieuxau3
 
Bai12 kieuxau 2
Bai12 kieuxau 2Bai12 kieuxau 2
Bai12 kieuxau 2
 
Bai12 kieuxau3
Bai12 kieuxau3Bai12 kieuxau3
Bai12 kieuxau3
 
Bai12 kieuxau 2
Bai12 kieuxau 2Bai12 kieuxau 2
Bai12 kieuxau 2
 
Bai12 kieuxaut1
Bai12 kieuxaut1Bai12 kieuxaut1
Bai12 kieuxaut1
 
Kieumang
KieumangKieumang
Kieumang
 
Ho sotrinhchieu intel
Ho sotrinhchieu intelHo sotrinhchieu intel
Ho sotrinhchieu intel
 
Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)
 
Ho sotrinhchieu intel
Ho sotrinhchieu intelHo sotrinhchieu intel
Ho sotrinhchieu intel
 
Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)
 
Kịch bản dạy học bài 16 tin học lớp 10
Kịch bản dạy học bài 16 tin học lớp 10Kịch bản dạy học bài 16 tin học lớp 10
Kịch bản dạy học bài 16 tin học lớp 10
 

Recently uploaded

30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxAnAn97022
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...ThunTrn734461
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfVyTng986513
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...hoangtuansinh1
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Nguyen Thanh Tu Collection
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptx
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 

Bài tập pascal

  • 1. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 1 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 ;
  • 2. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 2 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 ') ;
  • 3. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 3 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 ')
  • 4. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 4 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 , kq : Real ; Pt : Char ; BEGIN Clrscr ; Write (' a = ') ; Readln( a ) ; Write (' b = ') ; Readln( b ) ; Write (' Phep tinh thuc hien la (+ - * /) : ') ; Readln( Pt ) ; If Pt = '+’ Then kq := a + b ; If Pt = '-’ Then kq := a - b ; If Pt = '*’ Then kq := a * b ; If Pt = '/’ Then kq := a / b ; Write ( a , pt , b , ' = ', kq ) ; 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
  • 5. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 5 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) . GIAÛI
  • 6. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 6 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 a) Var n , i : Word ;
  • 7. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 7 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 ôû ñaây n laø soá töï nhieân ñöôïc nhaäp vaøo töø baøn phím . GIAÛI Uses Crt ;
  • 8. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 8 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 Uses Crt; Var A : Array [1..100] Of Integer; i , j , n : Integer ;
  • 9. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 9 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 Begin If A[j] < A[i] then Begin T := A[j]; A[j ] := A[i]; A[i] := T ;
  • 10. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 10 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 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 ;
  • 11. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 11 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 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 ;
  • 12. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 12 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 ; 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
  • 13. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 13 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; (*================================*) Procedure Nhapabc(var aa,bb,cc: real); Begin Write('a='); Readln(aa); Write('b='); Readln(bb); Write('c='); Readln(cc); End; (*=================================*)
  • 14. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 14 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 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 ;
  • 15. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 15 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 (a<b+c) and (b<a+c) and (c<a+b) then Writeln(a:0:2, ', ', b:0:2, ' va ', c:0:2, ' lap thanh ba canh cua tam giac ') Else Writeln('Khong lap thanh ba canh cua tam giac') ; End; (*===============================*) Procedure Trung_tuyen (a, b, c: Real); Var ma, mb, mc: real; Begin ma:=sqrt((2*sqr(b)+2*sqr(c)-sqr(a))/4); mb:=sqrt((2*sqr(a)+2*sqr(c)-sqr(b))/4); mc:=sqrt((2*sqr(a)+2*sqr(b)-sqr(c))/4); Writeln('Cac trung tuyen cua tam giac la : ') ; Writeln('ma=', ma:0:2, ' mb=', mb:0:2, ' mc=', mc:0:2); End; (*================================*)
  • 16. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 16 Procedure Dientich (a, b, c: real); Var p, S: real; Begin p:=(a+b+c)/2; S:=sqrt(p*(p-a)*(p-b)*(p-c)); Writeln('Dien tich =', S:0:2); End; (*================================*) BEGIN (* Chöông trình chính *) Clrscr; Nhap(a, b, c); Kiemtra(a, b, c); Dientich(a, b, c); Trung_tuyen(a, b, c); Readln; END . Baøi 5 :Giaûi phöông trình x + y + z = 12 trong phaïm vi soá nguyeân khoâng aâm vôùi ñieàu kieän x < 4 . GIAÛI Uses Crt; Var X, Y, Z: byte; Begin Clrscr; Writeln('Giai phuong trinh X+Y+Z=12 trong pham vi ' + 'so nguyen khong am voi dieu kien x<4'); For X:=0 to 3 do For Y:=0 to 12 do For Z:=0 to 12 do If (X+Y+Z=12) then Writeln(' x=',X,' y=',Y, 'z=',Z); Readln; End.
  • 17. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 17 Baøi 6 : Cho tröôùc caùc soá N , a , b , c töï nhieân . Giaûi phöông trình sau trong phaïm vi soá nguyeân khoâng aâm x + y + z = N vôùi ñieàu kieän x < a , y < b , z < c . GIAÛI Uses Crt; Var N, a, b, c, X, Y, Z, i: Integer; Begin Clrscr; Write(' N, a, b, c = '); Readln(N, a, b,c); If (a+b+c-3<N) then Begin Writeln('Phuong trinh vo nghiem'); Readln; Exit; End Else Begin Writeln('Phuong trinh co nghiem la:'); Writeln('x': 10, 'y': 10, 'z':10); i:=4; For X:=0 to (a-1) do For Y:=0 to (b-1) do For Z:=0 to (c-1) do If (X+Y+Z=N) then Begin Writeln(x: 10, y: 10, z: 10); inc(i); If i=24 then Begin Write('Nhan Enter de tiep tuc...'); Readln; i :=0; End; End ; End ; Write('Nhan Enter de ket thuc...'); Readln; End. Baøi 7 :
  • 18. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 18 Vieát thuû tuïc Compare ( S1 , S2 : String ; Var Kq : String ) thöïc hieän coâng vieäc sau : so saùnh hai xaâu S1 vaø S2 , tìm taát caû caùc kí töï coù trong caû hai xaâu treân . Xaâu Kq seõ chöùa taát caû caùc kí töï ñoù , moãi kí töï chæ ñöôïc nhôù moät laàn . GIAÛI Uses Crt; Var xau1,xau2,xau: string; (*==================================*) Procedure compare(s1, s2: string; Var kq: string); Var i: byte; (*===============================*) Function kt(ch: char; st: string): boolean; (* Kieåm tra xem kí töï Ch coù trong xaâu St khoâng . Neáu coù thì haøm traû veà giaù trò True . Neáu khoâng thì haøm traû veà giaù trò False *) Begin kt:=pos(ch,st)<>0; 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 '); Write('Nhan ENTER de ket thuc...'); Readln; END . Baøi 8 :
  • 19. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 19 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 Begin Write('S',i,'='); Readln(S[i]); End; End ; (*===============================*) BEGIN (* Chöông trình chính *) Clrscr; nhap; max:=0; min:=255;
  • 20. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 20 For i:=1 to n-1 do For j:=i+1 to n do Begin If max<d(S[i],S[j]) then max:=d(S[i],S[j]); If min>d(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 If dem=0 then Writeln('So ',N,' khong the phan tich thanh ' + 'tich cua cac so nguyen to') Else If dem=1 then Writeln(N, '=', a[dem]) Else Begin Write(N,'='); For i:=1 to dem-1 do Write(a[i],'*'); Writeln(a[dem]); End; End;
  • 21. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 21 (*================================*) Procedure phantich(N1:longint); Begin If N1>1 then Begin u:=2; dem:=0; Repeat If (N1 mod u=0) then Begin inc(dem); a[dem]:=u; N1:=N1 div u; End Else inc(u); Until N1=1; End Else dem:=0; Viet; End; (*==============================*) BEGIN (* Main Program *) Clrscr; Writeln('Phan tich so N thanh tich cua cac so nguyen to :'); nhap(N); phantich(N); Write('Nhan Enter de ket thuc ...'); Readln; END . BAØI TAÄP CHÖÔNG 4: CAÁU TRUÙC DÖÕ LIEÄU MAÛNG Baøi 1 : Giaûi heä phöông trình tuyeán tính hai aån duøng ma traän : a11x + a12y = c1 a21x + a22y = c2 GIAÛI Uses Crt; Var a: array[1..2, 1..2] of real; c: array[1..2] of real; d, dx, dy, x, y: real;
  • 22. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 22 BEGIN Clrscr; Writeln('Giai he phuong tring tuyen tinh hai an:'); Writeln(' a11x+a12y=c1'); Writeln(' a21x+a22y=c2'); Writeln('Nhap cac he so cua he phuong trinh'); Write('a11='); Readln(a[1,1]); Write('a12='); Readln(a[1,2]); Write('c1='); Readln(c[1]); Write('a21='); Readln(a[2,1]); Write('a22='); Readln(a[2,2]); Write('c2='); Readln(c[2]); d:=a[1,1]*a[2,2] - a[2,1] * a[1,2]; dx:=c[1]*a[2,2] - c[2] * a[1,2]; dy:=a[1,1]*c[2] - a[2,1] * c[1]; If d=0 then Writeln(' He vo nghiem hoac vo so nghiem') Else Begin x:=dx/d; y:=dy/d; Writeln('He co nghiem duy nhat :'); Writeln('x=', x:0:2, ' ; y=', y:0:2); End ; Readln; END . Baøi 2 : Laäp phöông trình taïo ra moät maûng chöùa baûng cöûu chöông . Uses Crt ; Var a : Array[1..10, 2..9] Of Byte ; i, j : Byte ; BEGIN Clrscr ; For i := 1 To 10 Do For j := 2 To 9 Do a[i, j] := i*j ; Writeln(' Bang cuu chuong : ') ; Writeln ; For i := 1 To 10 Do For j := 2 to 9 do Write ( j:4 , 'x' , i:2 , '=' , a[i , j]:2) ; (* heát 80 coät töï ñoäng xuoáng haøng *) Readln ; END .
  • 23. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 23 Baøi 3 : Vieát chöông trình nhaäp hai soá nguyeân döông m , n . Sau ñoù tính trung bình coäng bình phöông caùc soá nguyeân töø m ñeán n . Var m , n , k , s : Word ; tb : real ; BEGIN Writeln('Nhap 2 so nguyen duong m, n :') ; Write (' m = ') ; Readln(m) ; Write (' n = ') ; Readln(n); If m > n Then (* ñoãi choã ñeå m <= n *) Begin k := m ; m := n ; n := k ; End ; s := 0 ; For k := m To n do s := s + sqr(k) ; tb := s / (n - m + 1) ; Writeln ('Trung binh cong bimh phuong cac so ' + 'nguyen tu m den n la: ', tb:12:2); Readln ; END . Baøi 4 : Vieát chöông trình nhaäp töø baøn phím caùc phaàn töû cuûa moät maûng hai chieàu . Kích thöôùc cuûa maûng ñöôïc nhaäp tröôùc töø baøn phím . Var m , n , i , j : Byte ; a : Array[1..100, 1..100] Of Real; BEGIN Write ('Nhap cac kich thuoc cua mang hai chieu : ') ; Write (' So hang m = ') ; Readln(m) ; Write (' So cot n = ') ; Readln(n) ; Writeln (' Nhap cac phan tu cua mang : ') ; For i := 1 To m Do For j := 1 To n Do Begin Write ('a[', i:2, ', ' , j:2 ,']=') ; Readln(a[i, j]) ;
  • 24. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 24 End ; Readln ; END . Baøi 5 : Daõy soá sau ñöôïc goïi laø daõy Fibonaci : a1 = 1 a2 = 1 a3 = 2 a4 = 3 . . . an = an-1 + an-2 Vieát chöông trình tính 20 soá Fibonaci ñaàu tieân vaø ñöa ra keát quaû vaøo moät maûng 20 phaàn töû . Var a : Array[1..20] Of Byte ; i : Byte ; BEGIN a[1] :=1; a[2] :=1; For i:=3 to 20 do a[i]:=a[i-1]+a[i-2] ; END . Baøi 6 : Daõy soá an ñöôïc ñònh nghóa nhö sau : a1 = 1 a2 = 2 . . . an = 2an-1 + an-2 ( n > 2 ) Haõy laäp chöông trình tính vaø gaùn giaù trò cuûa daõy vaøo bieán maûng . Var a : Array [1..100] Of Word ; i, N : Byte ; S : Real ; BEGIN Write (' Nhap so N>=2 : ') ; Readln(n) ; a[1] := 1 ; a[2] := 2 ; For i := 3 To N Do a[i] := 2*a[i-1]+a[i-2] ;
  • 25. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 25 S := 0 ; For i := 1 to N do S := S+1/sqr(a[i]) ; Writeln (' S = ', S:12:6) ; Readln ; END . Baøi 7 : Nhaäp soá töï nhieân N vaø vieát chöông trình taïo maûng bao goàm N soá nguyeân toá ñaàu tieân . var a:array[1..100,1..100]of byte; n,i,j,k,l,ba:byte; d:boolean; BEGIN write(' Nhap kich thuoc cua mang hai chieu NxN. N = ');readln(n); for i:=1 to n do for j:=1 to n do begin ba:=0; repeat d:=FALSE; if j>1 then for k:=1 to j-1 do if a[i,k]=ba then d:=true; if i>1 then for k:=1 to i-1 do if a[k,j]=ba then d:=true;
  • 26. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 26 ba:=ba+1; until not d; a[i,j]:=ba-1; end; for i:=1 to n do for j:=1 to n do write(a[i,j]:8); readln; END . Baøi 8 : Vieát chöông trình nhaäp moät baûng soá 3 x 3 vôùi ñieàu kieän caùc soá ñöôïc nhaäp seõ hieän treân maøn hình ñuùng taïi vò trí cuûa mình treân baûng soá . Uses Crt; Var a : array[1..3, 1..3] of integer ; i, j: byte ; BEGIN Clrscr; Writeln('Nhap mot bang so nguyen kich thuoc 3x3:'); Gotoxy(10, 4); Write(1); Gotoxy(19, 4); Write(2); Gotoxy(28, 4); Write(3); Gotoxy(5, 6); Write(1); Gotoxy(5, 8); Write(2); Gotoxy(5,10); Write(3); For i:=1 to 3 do For j:=1 to 3 do Begin Gotoxy(9*j-1, 2*i+4); Read(a[i, j]); Gotoxy(9*j-1, 2*i+4); ClrEol; Write(a[i, j]:6); End; Readln; END .
  • 27. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 27 Baøi 9 : a. a. Vieát chöông trình nhaäp döõ lieäu töø daõy ñoái xöùng vaøo maûng moät chieàu . b. b. Vieát chöông trình nhaäp döõ lieäu laø ma traän ñoái xöùng vaøo maûng hai chieàu . a) Var a: array [1..100] of integer; n, i: byte; Begin Write('Nhap so phan tu cua day doi xung:'); Readln(n); Writeln('Nhap cac phan tu cua day:'); For i:=1 to (n+1) div 2 do Begin Write('a[', i:2, ']='); Readln(a[i]); a[n-i+1] := a[i]; End; Readln ; END ; b) Var a: array [1..100, 1..100] of integer; n, i, j: integer; BEGIN
  • 28. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 28 Write('Nhap kich thuoc cua mang doi xung: '); Readln(n); Write('Nhap cac phan tu cua mang:'); For i:=1 to n do For j:=1 to i do Begin Write('a[', i:2, ',', j:2, ']='); Readln(a[i, j]); a[j,i]:=a[i,j]; End; Readln ; END ; BAØI TAÄP CHÖÔNG 5: XAÂU KYÙ TÖÏ Baøi 1 : Laäp trình ñeám soá laàn xuaát hieän ôû moãi loaïi kí töï thuoäc baûng chöõ caùi tieáng Anh trong moät xaâu kí töï Str . Var A: array [ 'A'..'Z'] of integer; S: string; ch: char; i: integer; BEGIN Write(' Cho mot xau ki tu : '); Readln(s); For ch:= 'A' to 'Z' do A[ch]:=0; For i:=1 to length(s) do Begin If Upcase(S[i]) in (['A'..'Z']) then Begin S[i]:= Upcase(S[i]); A[S[i]]:= A[S[i]]+1; End; End; For ch:= 'A' to 'Z' do
  • 29. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 29 Writeln('So lan xuat hien cua ',ch,' trong xau la: ', A[ch]:4) ; Readln ; END . Baøi 2 : Cho soá töï nhieân n vaø xaâu coù ñoä daøi n . Haõy bieán ñoåi xaâu ñaõ cho baèng caùch thay ñoåi trong ñoù : a. a. Taát caû caùc daáu ! baèng daáu chaám . b. b. Moãi moät nhoùm caùc daáu chaám lieàn nhau baèng moät daáu chaám . c. c. Moät nhoùm caùc daáu chaám ñöùng lieàn nhau baèng daáu ba chaám . a ) Var S: string; i: byte; BEGIN Write(' Cho mot xau ki tu S = '); Readln(S); For i:=1 to length(S) do If S[i] = '!' then S[i]:= '.'; Write( ' Chuoi sau khi da bien doi la : ', S); Readln; END . b ) Uses crt; Var S : string; i : byte; BEGIN
  • 30. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 30 Clrscr; Write(' Cho mot xau ki tu S = '); Readln(S); i:=1; While i< length(S) do If (S[i]='.')and(S[i+1]='.') then Delete(S,i,1) Else inc(i); Write('Chuoi sau khi da bien doi la: ' ,S); Readln; END . c ) Uses crt; Var S: string; i, j: byte; BEGIN Clrscr; Write('Nhap xau S='); Readln(S); i:=1; While i<=Length(S) do Begin If S[i]='.' then Begin
  • 31. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 31 j:=i; While (S[i]='.')and(i<=length(S)) do inc(i); dec(i); If (i-j)=1 then insert('.',S,i) Else If (i-j)>2 then Begin Delete(S,j+2,i-j-2); i:=j+1; End; End ; Inc(i); End; Write('Chuoi sau khi bien doi la: ',S); Readln; END . Baøi 3 : Cho soá töï nhieân n vaø moät daõy caùc kí töï S1 , S2 , … , Sn . Haõy tìm soá töï nhieân I ñaàu tieân sao cho caùc kí töï Si , Si+1 ñeàu laø chöõ caùi a . Neáu trong daõy khoâng coù nhöõng caëp nhö vaäy thì thoâng baùo . Var S: string; i: integer; BEGIN Write(' Cho mot xau ki tu : '); Readln(S); i:= pos('aa', S); {tìm vò trí xaâu con 'aa' trong S}
  • 32. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 32 If i<>0 then Writeln(' Ton tai "aa" tai vi tri ', i) Else Writeln(' Khong ton tai .') ; Readln; END . Baøi 4 : Cho soá töï nhieân n vaø daõy caùc kí töï S1 , S2 , … , Sn . Bieát raèng trong daõy coù ít nhaát moät daáu phaåy . Haõy tìm soá töï nhieân i sao cho : a. a. Si laø daáu phaåy ñaàu tieân . b. b. Si laø daáu phaày cuoái cuøng . a ) Var S: string; i: integer; BEGIN Write('Cho mot xau S co dau ",": '); Readln(S); i:= pos(',', S); (* vò trí cuûa daáu ',' trong S *) If i<> 0 then Write(' Vi tri thoa man la: ', i); Readln; END . b ) Var S: string; i: integer; BEGIN Write('Cho mot xau S co dau ",": '); Readln(S); i:= length(S); While (i>=1)and(S[i] <> ',' ) do i:=i -1; If i>=1 then Write('So thu tu thoa man la: ', i) Else Write('Khong ton tai.'); Readln; END . Baøi 5 : Vieát chöông trình nhaäp moät xaâu kí töï , sau ñoù chæ ra xem xaâu ñoù coù phaûi laø xaâu ñoái xöùng khoâng ( xaâu ñoái xöùng laø xaâu coù caùc kí töï gioáng nhau vaø ñoái xöùng nhau qua ñieåm giöõa xaâu , ví duï ‘ABBA’ hoaëc ‘ABCBA’ ) . Uses Crt; Var St : string; dx : Boolean;
  • 33. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 33 i, len: byte; BEGIN Clrscr; Write(' Nhap xau St = '); Readln(St); dx:= True; i:=1; len:= Length(St); While dx and (i<=(len div 2)) do Begin dx:=(St[i] = St[len - i+1]); inc(i); End; If dx then Write(' St la xau doi xung ') Else Write(' St khong phai la xau doi xung ') ; Readln; END . Baøi 6 : Cho moät xaâu kí töï S . Haõy vieát chöông trình tính xem trong S coù bao nhieâu loaïi kí töï khaùc nhau ( phaân bieät chöõ in hoa vôùi chöõ in thöôøng ) . Ví duï vôùi S laø ‚Pascal‛ ta coù ñaùp soá laø 5 . Var S: string; i, j, dem: integer; t: boolean; BEGIN Write('Cho mot xau ki tu S: '); Readln(S); dem:=0; For i:=1 to length(S) do Begin t:=false; For j:=1 to i-1 do if (S[j]=S[i]) then t:=true; If not t then dem:= dem+1; End; Write('So ki tu khac nhau cua xau S la: ', Dem); Readln; END . Baøi 7 : Vieát chöông trình nhaäp moät xaâu kí töï vaø bieán ñoåi chuùng thaønh toaøn chöõ in hoa . Var S : string; i : integer; BEGIN
  • 34. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 34 Write('Cho mot xau ky tu: '); Readln(S); For i:=1 to length(S) do If S[i] in ['a' ..'z'] then S[i]:= Upcase(S[i]); Write('Chuoi sau khi da bien doi la: ', S); Readln; END . Baøi 8 : Hoï teân moät hoïc sinh ñöôïc nhaäp töø baøn phím . Baïn haõy vieát chöông trình ñieàu chænh laïi caùc kí töï ñaàu cuûa caùc töø ñôn trong teân cuûa hoïc sinh aáy trôû thaønh chöõ in hoa . Uses crt; Const Chu=['a'..'z']; Var Hoten: string; i,len: byte; BEGIN Clrscr; Write('Ho ten='); Readln(Hoten); Len:=length(Hoten); If Hoten[1] in Chu then Hoten[1]:=Upcase(Hoten[1]); For i:=2 to len do If (Hoten[i-1]=#32)and(Hoten[i] in Chu) then Hoten[i]:=Upcase(Hoten[i]); Write('Ho ten sau khi dieu chinh la: ', Hoten); Readln; END . Baøi 9 : Vieát chöông trình nhaäp xaõu kí töï töø baøn phím , sau ñoù goït xaâu laïi baèng caùch caùch xoaù ñi caùc kí töï troáng ôû hai ñaàu cuûa xaâu . Ví duï neáu nhaäp xaâu ‚ Ha noi ‚ , thì keát quaû seõ laø ‚Ha Noi‛ . ar S: String; BEGIN Write('Cho mot xau ky tu: '); Readln(S); While S[1] = #32 do Delete(S,1,1); While (S[length(S)] = #32) do Delete(S,length(S),1); Write('Chuoi sau khi da bien doi la: ', S); Readln; END . BAØI TAÄP CHÖÔNG 6: DÖÕ LIEÄU KIEÅU TAÄP Baøi 1 : Baïn haõy vieát haøm Card(A) ñeám soá phaàn töû cuûa taäp hôïp A cho tröôùc coù kieåu Set Of 0 .. 99 . (* haøm ñeám soá phaàn töû cuûa taäp hôïp *) Uses Crt;
  • 35. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 35 Type Tap=set of 0..99; Const inp='Number.dat'; Var S : Tap; i : byte; Procedure Nhap; Var a: byte; f: text; Begin S:=[]; Assign(f,inp); Reset(f); While not SeekEoF(f) do begin Readln(f,a); If (a>=0)and(a<=99) then S:=S+[a]; End; Close(f); End; Function Card(S: Tap): byte; Var i,n: byte; Begin n:=0; For i:=0 to 99 do If i in S then Inc(n); Card:=n; End; BEGIN Nhap; Clrscr; Write('Tap S co ',Card(S),' phan tu.'); Readln; END. Baøi 2 : Baïn haõy laäp chöông trình taïo moät taäp hôïp caùc soá nguyeân chaün kieåu Byte vaø loaïi khoûi noù caùc soá chia heát cho 3 . Keát quaû theå hieän treân maøn hình . Uses Crt; Const n=5; Type Danhsach=record holot: string[25]; ten: string[10]; tuoi: 0..99;
  • 36. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 36 lop: string[3]; End ; Var ds: array [1..20] of Danhsach; i,j: byte; f: file of Danhsach; Procedure Doi(i,j: byte); Var tg: Danhsach; Begin tg:=ds[i]; ds[i]:=ds[j]; ds[j]:=tg; End; BEGIN ClrScr; Writeln('Nhap danh sach hoc sinh tu file data.dat : '); Writeln; Assign(f,'data.dat'); Reset(f); For i:=1 to n do Read(f,ds[i]); Close(f); For i:=1 to n-1 do For j:=i+1 to n do begin If (ds[i].ten>ds[j].ten) then Doi(i,j) Else If (ds[i].ten=ds[j].ten)and(ds[i].holot>ds[j].holot) then Doi(i,j); end; Writeln('Danh sach hoc sinh:'); For i:=1 to n do With ds[i] do Writeln(holot:20,ten:11,tuoi:4,lop:5); Writeln; Write('Bam Enter de ket thuc...'); Readln; END. Baøi 3 : Xeùt chöông trình sau : Program B4 ; Var Thoat : Set Of Char = [‘e’ , ’E’] ; BEGIN Write (‘ Hay go E de ket thuc : ‘) ; Repeat
  • 37. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 37 Ch := Readkey ; Until Ch in thoat ; END . Haõy tìm vaø söûa loãi trong chöông trình ñoù . Uses Crt; Const thoat: set of char=['e','E']; Var ch: char; BEGIN Write('Hay go E de thoat khoi chuong trinh: '); Repeat ch:=readkey; Until ch in thoat; END . Baøi 4 : Baïn haõy laäp chöông trình hieån thò moät menu daïng sau treân maøn hình 1. Xem 2. 2. Sua chua 3. 3. Loai bo 4. 4. Nhap them 5. 5. Thoat Lua chon cua ban : _ Sau ñoù ñôïi goõ phím . Chöông trình phaûi ñôïi cho tôùi khi phím goõ vaøo laø moät trong caùc chöõ soá 1 .. 5 hoaëc caùc chöõ caùi ñaàu cuûa caùc tuyø choïn thì thoâng baùo phím goõ vaøo hôïp leä vaø keát thuùc chöông trình . Trong chöông trình phaûi duøng moät taäp hôïp ñeå kieåm tra vieäc nhaäp giaù trò cho bieán töø baøn phím . (* Hieån thò menu *) Uses Crt; Const menu: set of char = ['1'..'5','X','S','L','N','T']; Var ch: char; BEGIN Clrscr; Writeln(' 1. Xem '); Writeln(' 2. Sua chua '); Writeln(' 3. Loai bo '); Writeln(' 4. Nhap them'); Writeln(' 5. Thoat ');
  • 38. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 38 Write('Lua chon cua ban: '); Repeat ch:=readkey; ch:=Upcase(ch); Until ch in menu; Writeln; Write('Ban da chon:'); Case ch of '1','X': Writeln(' 1. Xem '); '2','S': Writeln(' 2. Sua chua '); '3','L': Writeln(' 3. Loai bo '); '4','N': Writeln(' 4. Nhap them'); '5','T': Writeln(' 5. Thoat '); End; Readln; END. Baøi 5 : Haõy laäp chöông trình nhaäp vaøo moät xaâu nhò phaân . Caùc kí töï nhaäp vaøo khoâng hôïp leä bò boû qua . (* nhaäp moät xaâu nhò phaân *) Uses Crt; Const bit : set of char= ['0','1']; Var ch: char; st: string; BEGIN Clrscr; st:=''; Write('Nhap vao mot xau nhi phan : '); Repeat ch:= Readkey; If ch in bit then begin st:=st+ch; Write(ch); end Else If ch<>#13 then Write(#7); Until ch=#13; Readln; END. Baøi 6 : Haõy laäp chöông trình nhaäp vaøo moät xaâu kí töï töø baøn phím . Yeâu caàu caùc kí töï nhaäp vaøo phaûi laø caùc chöõ caùi thuoäc baûng chöõ caùi tieáng Anh , boû qua caùc phím khaùc . (* Nhaäp moät xaâu toaøn caùc chöõ caùi *) Uses Crt; Const A:set of char=['a'..'z','A'..'Z']; Var ch: char;
  • 39. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 39 st: string; BEGIN Clrscr; st:=''; Writeln('Nhap vao mot xau toan cac chu cai:'); Repeat ch:=Readkey; If ch in A then begin st:=st+ch; write(ch); End Else if ch<>#13 then Write(#7); If ch=#0 then ch:=Readkey; Until ch = #13; END . Baøi 7 : Vieát chöông trình coù chöùc naêng theâm phaàn töû vaøo taäp hôïp tröïc tieáp töø baøn phím vaø loaïi bôùt phaàn töû khoûi taäp hôïp cuõng tröïc tieáp töø baøn phím . (* loai bo cac phan tu khoi tap hop *) Uses Crt; Var tap: set of char; ch: char; BEGIN tap:=[]; Writeln('Nhap cac phan tu cho mot tap hop cac ki tu: '); Repeat ch:=ReadKey; tap:=tap+[ch]; Writeln(ch); Until not(ch in ['a'..'z']); Writeln('Cac phan tu cua tap hop la:'); For ch:='a' to 'z' do If ch in tap then Write(ch,' '); Writeln; Writeln('Ban muon bo cac phan tu nao khoi tap hop:'); Repeat ch:=ReadKey; tap:=tap-[ch]; Writeln(ch); Until not(ch in ['a'..'z']); Writeln('Cac phan tu con lai cua tap hop la:'); For ch:='a' to 'z' do
  • 40. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 40 If ch in tap then Write(ch,' '); Readln; END . BAØI TAÄP CHÖÔNG 7: KIEÅU RECORD Baøi 1 : Thoâng tin veà moãi hoïc sinh goàm :  Hoï ñeäm : moät xaâu 25 kí töï .  Teân : moät xaâu 10 kí töï .  Tuoåi : moät soá nguyeân hai chöõ soá .  Lôùp : moät xaâu hai chöõ soá vaø moät chöõ caùi vieát hoa Haõy laäp chöông trình nhaäp töø baøn phím danh saùch moät lôùp 15 hoïc sinh vaøo moät maûng baûn ghi . Sau ñoù hieån thò danh saùch leân maøn hình , moãi ngöôøi moät doøng . (* Nhaäp danh saùch hoïc sinh töø baøn phím *) Uses Crt; Const n=15; Type Danhsach=record holot: string[25]; ten: string[10]; tuoi: 0..99; lop: string[3]; End; Var ds: array [1..n] of Danhsach; i : byte; BEGIN ClrScr; Writeln('Hay nhap danh sach hoc sinh : '); Writeln; For i:=1 to n do Begin Writeln('Thong tin hoc sinh thu ',i); Write('Cho ho lot : '); Readln(ds[i].holot); Write('Cho ten : '); Readln(ds[i].ten); Write('Cho tuoi : '); Readln(ds[i].tuoi); Write('Cho lop : '); Readln(ds[i].lop); Writeln; End; Writeln('Danh sach hoc sinh :'); For i:=1 to n do With ds[i] do Writeln(holot:20,ten:10,tuoi:4,lop:5); Writeln;
  • 41. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 41 Write('Bam Enter de ket thuc...'); Readln; END. Baøi 2 : Thoâng tin veà moãi hoïc sinh laø moät baûn ghi goàm caùc tröôøng :  Hoïñeäm : moät xaâu 25 kí töï .  Teân : moät xaâu 10 kí töï .  Tuoåi : moät soá nguyeân hai chöõ soá .  Lôùp : moät xaâu hai chöõ soá vaø moät chöõ caùi vieát hoa Moät file baûn ghi chöùa moät danh saùch moät lôùp goàm 20 hoïc sinh . Haõy laäp chöông trình hieån thò danh saùch leân maøn hình , moãi ngöôøi moät doøng . (* Doc tu mot file ban ghi *) Uses Crt; Const n=5; Type Danhsach=record holot: string[25]; ten: string[10]; tuoi: 0..99; lop: string[3]; end; Var ds: Danhsach; i: byte; f: file of Danhsach; BEGIN ClrScr; Writeln('Danh sach hoc sinh tu file bai2.dat'); Writeln; Assign(f,'bai2.dat'); Reset(f); For i:=1 to n do Begin Read(f,ds); With ds do Writeln(holot:20,ten:11,tuoi:4,lop:5); End; Close(f); Writeln; Write('Bam Enter de ket thuc...'); Readln; END . Baøi 3 : Moät file baûn ghi chöùa moät danh saùch hoïc sinh , thoâng tin veà moãi hoïc sinh gioáng nhö baøi treân . Haõy laäp chöông trình taïo moät file baûn ghi khaùc chöùa danh saùch ñoù , moãi baûn ghi goàm caùc tröôøng :
  • 42. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 42  Hoïteân : moät xaâu 35 kí töï .  Tuoåi : moät soá nguyeân hai chöõ soá .  Khoái : moät soá nguyeân hai chöõ soá .  Lôùp : moät chöõ caùi vieát hoa (* Doi kieu ban ghi *) Uses Crt; Type Danhsach1=record holot: string[25]; ten: string[10]; tuoi: 0..99; lop: string[3]; End; Danhsach2=record hoten: string[35]; tuoi: byte; khoi: byte; lop: char; End; Var ds1 : Danhsach1; ds2 : Danhsach2; f1 : file of Danhsach1; f2 : file of Danhsach2; c : integer;
  • 43. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 43 BEGIN ClrScr; Writeln('Ghi tu file bai3.dat sang bai3n.dat:'); Writeln; Assign(f1,'bai3.dat'); Reset(f1); Assign(f2,'bai3n.dat'); Rewrite(f2); While not Eof(f1) do Begin Read(f1,ds1); With ds1 do Begin ds2.hoten:=holot+ten; val(copy(lop,1,2),ds2.khoi,c); ds2.tuoi:=tuoi; ds2.lop:=UpCase(lop[3]); Write(f2,ds2); End; End; Close(f1); Close(f2); Writeln; Writeln('Bam Enter de ket thuc!'); Readln;
  • 44. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 44 END . Baøi 4 : Moät file baûn ghi chöùa moät danh saùch hoïc sinh PTTH , thoâng tin veà moãi hoïc sinh ngoaøi caùc tröôøng Hoïñeäm , Teân , Tuoåi , Lôùp gioáng nhö caùc baøi treân coøn coù theâm tröôøng Ñieåm chöùa ñieåm trung bình cuûa hoïc sinh trong naêm hoïc . Haõy laäp chöông trình : a. a. Hieån thò leân maøn hình danh saùch nhöõng hoïc sinh gioûi nhaát cuûa tröôøng laø nhöõng baïn coù ñieåm trung bình töø 8.0 trôû leân vaø cao nhaát trong khoái . b. b. Laäp danh saùch hoïc sinh trong naêm hoïc môùi , bieát moät hoïc sinh coù ñieåm trung bình töø 5.0 trôû leân thì ñöôïc leân lôùp . Chuù yù : lôùp 10A leân lôùp 11A , lôùp 11A leân 12A ... Keát quaû chöùa trong file . (* Khen thuong va len lop *) Uses Crt; Type Danhsach=record holot: string[25]; ten: string[10]; tuoi: 0..99; lop: string[3]; diem: real; End; Var ds: array [1..100] of Danhsach; f: file of Danhsach; n: integer; Procedure Nhap; Begin Assign(f,'bai4.dat'); Reset(f); n:=0; While not Eof(f) do Begin n:=n+1; Read(f,ds[n]); End; Close(f); End; Procedure Timgioi; Var i: integer; max10,max11,max12: real; l: string; Begin max10:=0; max11:=0; max12:=0; For i:=1 to n do With ds[i] do
  • 45. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 45 Begin l:=copy(lop,1,2); If (l='10')and(diem>max10)and(diem>8.0) then max10:=diem Else If (l='11')and(diem>max11)and(diem>8.0) then max11:=diem Else If (l='12')and(diem>max12)and(diem>8.0) then max12:=diem; End; Writeln('Hoc sinh gioi nhat khoi 10 : '); For i:=1 to n do With ds[i] do If (copy(lop,1,2)='10')and(diem>=max10) then Writeln(holot:20,ten:10,tuoi:4,lop:5,diem:5:1); Writeln('Hoc sinh gioi nhat khoi 11 : '); For i:=1 to n do With ds[i] do If (copy(lop,1,2)='11')and(diem>=max11) then Writeln(holot:20,ten:10,tuoi:4,lop:5,diem:5:1); Writeln('Hoc sinh gioi nhat khoi 12 : '); For i:=1 to n do With ds[i] do If (copy(lop,1,2)='12')and(diem>=max12) then Writeln(holot:20,ten:10,tuoi:4,lop:5,diem:5:1); End; Procedure Lenlop; Var i: integer; l: string; f: file of Danhsach; Begin For i:=1 to n do With ds[i] do Begin l:=copy(lop,1,2); If (l='10')and(diem>=5.0) then lop:='11'+lop[3] Else If (l='11')and(diem>=5.0) then lop:='12'+lop[3] Else If (l='12')and(diem>=5.0) then lop:='DTN'; End; Assign(f,'bai4n.dat'); Rewrite(f); For i:=1 to n do With ds[i] do If lop<>'DTN' then Write(f,ds[i]); Close(f); End; BEGIN ClrScr; Nhap; Timgioi; Lenlop; Write('Bam ENTER de ket thuc...'); Readln;
  • 46. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 46 END . Baøi 5 : Cho file baûn ghi f chöùa döõ lieäu veà kho saùch , döõ lieäu veà moãi cuoán saùch ñöôïc chöùa trong moät baûn ghi goàm 3 tröôøng mang thoâng tin veà :  Hoï teân taùc giaû : moät xaâu 26 kí töï .  Teân saùch : moät xaâu 40 kí töï .  Naêm xuaát baûn : moät soá nguyeân 4 chöõ soá . Haêy laäp chöông trình nhaäp döõ lieäu vaøo kho saùch , sau ñoù tìm ra :  Nhöõng cuoán saùch cuûa moät taùc giaû cho tröôùc xuaát baûn vaøo moät naêm cho tröôùc .  Nhöõng cuoán saùch coù teân cho tröôùc . Keát quaû hieän treân maøn hình. (* Tim kiem tren ban ghi *) Uses Crt; Type Danhsach=record Tacgia: string[26]; Tensach: string[40]; NamXB: integer; End; Var ds: array [1..100] of Danhsach; n : integer; f : file of Danhsach; M: Danhsach; Procedure Nhap; Begin n:=0; Assign(f,'bai5.dat'); Reset(f); While not Eof(f) do Begin Inc(n); Read(f,ds[n]); End; Close(f); End; Procedure TheoTG; Var tacgia: string; namXB: integer; i: integer; Begin Write('Cho ten tac gia : '); Readln(M.tacgia); Write('Cho nam xuat ban : '); Readln(M.NamXB); i:=1; While (i<=n)and((ds[i].tacgia<>tacgia)or(ds[i].namXB<>namXB)) do i:=i+1;
  • 47. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 47 If (i>n) then Writeln('Khong tim duoc') Else Writeln(ds[i].tacgia:28,ds[i].tensach:42,ds[i].namXB:6); End; Procedure TheoTS; Var ten: string; i: integer; Begin Write('Cho ten sach : '); Readln(ten); i:=1; While (i<=n)and(ds[i].tensach<>ten) do i:=i+1; If (i>n) then Writeln('Khong tim duoc') Else Writeln(ds[i].tacgia:28,ds[i].tensach:42,ds[i].namXB:6); End; Procedure Timkiem; Var c:char; Begin Writeln('1. Tim kiem theo tac gia va nam xuat ban.'); Writeln('2. Tim kiem theo ten sach'); Writeln; Write('Ban chon [1/2] : '); Repeat c:=Readkey; Until pos(c,'12')>0; Writeln(c); If c='1' then TheoTG Else TheoTS; End; BEGIN ClrScr; Nhap; Timkiem; Write('Ban Enter de ket thuc...'); Readln; END. Baøi 6 : File baûn ghi F chöùa danh saùch caùc ngaøy leã trong moät naêm , moãi baûn ghi goàm ngaøy thaùng , teân ngaøy leã vaø soá ngaøy ñöôïc nghæ . Haõy laäp chöông trình nhaäp danh saùch caùc ngaøy leã vaø tính :  Toång soá caùc ngaøy leã vaø toång soá caùc ngaøy nghæ leã trong naêm .  Toång soá caùc ngaøy leã vaø toång soá caùc ngaøy nghæ leã trong quí 1 , quí 2 , … Keát quaû theå hieän treân maøn hình . (* Tinh so ngay le va ngay nghi trong nam ,qui *) Uses Crt;
  • 48. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 48 Type Danhsach=record ngay: byte; thang: byte; ten: string[15]; songay: integer; end; Var ds: array [1..100] of Danhsach; n: integer; f: file of Danhsach; snn,snnq1,snnq2,snnq3,snnq4: integer; tsq1,tsq2,tsq3,tsq4: integer; Procedure Nhap; Begin n:=0; Assign(f,'bai6.dat'); Reset(f); While not Eof(f) do Begin Inc(n); Read(f,ds[n]); End; Close(f); End; Procedure Tinh_ngay_nghi; Var i: integer; Begin snn:=0; snnq1:=0; tsq1:=0; snnq2:=0; tsq2:=0; snnq3:=0; tsq3:=0; snnq4:=0; tsq4:=0; For i:=1 to n do With ds[i] do Begin Inc(snn,songay); If (thang<3) then Begin Inc(snnq1,songay); Inc(tsq1); End Else If (thang<6) then Begin Inc(snnq2,songay); Inc(tsq2); End; If (thang<9) then Begin Inc(snnq3,songay); Inc(tsq3);
  • 49. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 49 End ; If (thang<12) then Begin Inc(snnq4,songay); Inc(tsq4); End; End; End; Procedure Inkq; Var i: integer; Begin Writeln('So ngay le trong nam : ',n); Writeln('Tong so ngay nghi le trong nam : ',snn); Writeln; Writeln('So ngay le trong qui 1 : ',tsq1); Writeln('Tong so ngay nghi le trong qui 1 : ',snnq1); Writeln('So ngay le trong qui 2 : ',tsq2); Writeln('Tong so ngay nghi le trong qui 2 : ',snnq2); Writeln('So ngay le trong qui 3 : ',tsq3); Writeln('Tong so ngay nghi le trong qui 3 : ',snnq3); Writeln('So ngay le trong qui 4 : ',tsq4); Writeln('Tong so ngay nghi le trong qui 4 : ',snnq4); Writeln; End; BEGIN Clrscr; Nhap; Tinh_ngay_nghi; Inkq; Write('Ban Enter de ket thuc...'); Readln; END. BAØI TAÄP CHÖÔNG 8: KIEÅU FILE Baøi 1 : Haõy laäp chöông trình taïo moät teäp soá nguyeân chöùa caùc soá nguyeân toá nhoû hôn 10000 theo thöù töï taêng daàn . (* Taïo file soá nguyeân toá nhoû hôn 10000 *) Uses Crt; Const N=10000; Var i , j : Integer; f: File of Integer; a: Array[2..N] of boolean;
  • 50. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 50 BEGIN For i:=2 to N do a[i]:=true; i:=2; Repeat For j:=2 to (N div i) do a[i*j]:=false; Repeat Inc(i) Until a[i] or (i>N); Until i>N; Assign(F,'C:SoNT.dat'); Rewrite(F); For i:=1 to N do If a[i] then Write(F,i); Close(F); clrscr; Write(' Viet ra file "C:SoNT" cac so nguyen to nho hon 10000 '); Readln; END . Baøi 2 : Cho f laø teäp vaên baûn chöùa caùc xaâu 10 kí töï . Haõy laäp chöông trình nhaäp vaø hieån thò noäi dung file ñoù leân maøn hình , moãi xaâu moät doøng , ñaày trang maøn hình thì döøng laïi ñôïi goõ Enter môùi hieån thò trang tieáp theo cho tôùi heát. (* Ghi vaø ñoïc file of String *) Uses Crt; Const INP='FoString.dat'; Type String10 = String[10]; Procedure Ghi; Var f: file of String10; S: String10; Begin Assign(f,INP); Rewrite(f); Writeln('Nhap vao f. Thoi nhap khi S='''' (go Enter)!'); Readln(S); While (S<>'') do Begin Write(f,S); Readln(S); End; Close(f); End; Procedure Doc; Var f: file of String10; S: String10; Begin Clrscr; Assign(f,INP); Reset(f); While Not Eof(f) Do Begin
  • 51. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 51 Read(f,S); Writeln(S); If WhereY=25 then Begin Write('Press Enter to continue..'); Readln; Clrscr; End; End; Close(f); Readln; End; BEGIN Ghi; Doc; END. Baøi 3 : Baïn haõy vieát chöông trình cho pheùp ñoïc döõ lieäu töø baøn phím vaø ghi theâm vaøo cuoái moät teäp caùc baûn ghi . (* Doc vaø ghi vaøo cuoái teäp caùc baûn ghi *) Uses Crt; Const inp='Hocsinh.dat'; Type Hocsinh=Record Ten : String[30]; Tuoi: Byte; End; Var F : file of Hocsinh; Hs: Hocsinh; BEGIN Assign(f,inp); Reset(f); Write('Ho va ten: '); Readln(Hs.Ten); Write('Tuoi : '); Readln(Hs.Tuoi); Seek(f,Filesize(F)); Write(f,Hs); Close(f); END . Baøi 4 : Cho moät vaên baûn chöùa trong moät text file f . Trong vaên baûn , tính töø traùi sang phaûi , töø treân xuoáng döôùi , kí töï # laø kí hieäu xoaù ñi moät töø ñöùng ngay tröôùc noù neáu coù . Ví duï ‘#Ta#oi di ngu#h###hoc’ coù nghóa laø ‘Toi di hoc’ . Baïn haõy vieát chöông trình söûa laïi file f theo quy öôùc treân . (* Söûa vaên baûn *)
  • 52. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 52 Uses Crt; Const fi='vanban.txt'; Var f: text; s: string; ch: char; Procedure docfile ( fi : String ); Var f : text ; Begin Assign(f,fi); Reset(f); while not eof(f) do Begin Read(f,ch); Write(ch); End; close(f) ; writeln ; End ; BEGIN Writeln(' Van ban ban dau doc tu file "vanban.txt" :') ; docfile(fi) ; assign(f,fi) ; reset(f) ; s:=''; Repeat Read(f,ch); If (ch='#')then Delete(s,length(s),1) Else s:=s+ch; Until Eof(f); Close(f); Assign(f,fi); Rewrite(f); Writeln(f,s); Close(f); Writeln(' Van ban sau khi sua chua :') ; docfile(fi) ; Readln; END . Baøi 5 : Cho 2 file f vaø g cuøng kieåu ( nhöng khoâng roõ kieåu naøo ) . Baïn haõy laäp thuû tuïc gaùn noäi dung cuûa file g cho file f. (* Gan hai file *) Uses Crt;
  • 53. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 53 Const f1='calc.ex'; f2='C:calc.exe'; Procedure Copyfile(fi1,fi2: string); Var nread,nbuf: word; buf: array [1..1024] of byte; f1,f2: file; Begin Assign(f1,fi1); Reset(f1,1); Assign(f2,fi2); Rewrite(f2,1); nbuf:=1024; Repeat Blockread(f1,buf,nbuf,nread); Blockwrite(f2,buf,nread); Until nread<>nbuf; Close(f1); Close(f2); End; BEGIN Copyfile(f1,f2); END. Baøi 6 : Cho moät file text ghi laïi moät chöông trình Pascal cuûa moät hoïc sinh . Haõy vieát chöông trình kieåm tra loãi cuûa chöông trình Pascal treân theo caùc caùch sau ñaây : Caùch 1 : Kieåm tra xem soá löôïng caùc daáu ‘ ( daáu môû vaø daáu ñoùng ) coù baèng nhau khoâng ? Caùch 2 : Kieåm tra xem soá löôïng caùc töø Begin vaø End coù baèng nhau khoâng ? (* Dem (') vaø 'Begin' , 'End' *) Uses Crt; Const fi='C8_6.txt'; Function Dem(c: string): integer; Var n,l: integer; f: text; S: string; Begin l:=Length(c); n:=0; Assign(f,fi); Reset(f); While not Eof(f) do Begin Readln(f,S); While pos(c,s)<>0 do Begin Inc(n); Delete(s,pos(c,s),l); End; End;
  • 54. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 54 Close(f); Dem:=n; End; BEGIN Clrscr; Write(' So luong cac dau ( va ) '); If Dem('(')<>Dem(')') then Writeln('khong bang nhau.') Else Writeln('bang nhau.'); Write(' So luong cac tu Begin va End '); If Dem('End')<>Dem('Begin') then Writeln('khong bang nhau.') Else Writeln('bang nhau.'); Readln; END . Baøi 7 : Cho moät file text . Haõy vieát chöông trình ñeám xem file text treân chöùa bao nhieâu töø . ( Chuù yù : theo quy ñònh , caùc töø caùch nhau bôûi moät hay nhieàu daáu caùch ) . (* Ñeám töø *) Uses Crt; Const fi = 'hoten.txt'; Var f: text; s: string; dem: word; BEGIN Clrscr; dem:=0; Assign(f,fi); Reset(f); While not Eof(f) do Begin Readln(f,s); While s[1]=' ' do Delete(s,1,1); While length(s)>0 do Begin Case s[1] of ' ': While (s[1]=' ')and(length(s)>0) do Delete(s,1,1); Else Begin inc(dem); While (s[1]<>' ')and(length(s)>0) do Delete(s,1,1); End; End; End; End; Close(f);
  • 55. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 55 Write(' So tu co trong file hoten.txt la: ',dem); Readln; END. Baøi 8 : Cho moät file text . Vieát chöông trình loaïi boû caùc khoaûng troáng thöøa beân trong file text naøy . (* Cat khoang trong thua *) Uses Crt; Const fi = 'file.inp'; fo = 'C:file.out'; Var inp,out: text; s: string; BEGIN Assign(inp,fi); Reset(inp); Assign(out,fo); Rewrite(out); While not Eof(inp) do Begin Readln(inp,s); While (s[1]=' ')and(Length(s)>0) do Delete(s,1,1); While (s[Length(s)]=' ')and(Length(s)>0) do Delete(s,Length(s),1); While (Length(s)>0)and(pos(' ',s)<>0) do Delete(s,pos(' ',s),1); Writeln(out,s); End; Close(out); Close(inp); END. BAØI TAÄP CHÖÔNG 9: CON TROÛ Baøi 1 : Baïn haõy laäp chöông trình cho pheùp ta nhaäp töø baøn phím moät danh saùch ñöôïc gheùp noái . Sau ñoù gôõ boû moät record khoûi danh saùch . (* Gôõ boû baûn ghi khoûi danh saùch *) Uses Crt; Type ptr=^rec; rec=record name: string[20]; next: ptr; End; Var k : integer; p,l : ptr; Procedure Nhap; Begin
  • 56. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 56 ClrScr; New(p); l:=p; Write('Ten: '); Readln(p^.name); Repeat New(p^.next); p:=p^.next; Write('Ten: '); Readln(p^.name); Until p^.name=''; p^.next:=nil; Write('Vi tri ban ghi can go bo: '); Readln(k); End; Procedure Gobo; Var i: integer; q: Ptr; Begin p:=l; For i:=1 to k do p:=p^.next; (* Tìm vò trí cuoái *) q:=p; p:=l; For i:=3 to k do p:=p^.next; (* Tìm vò trí ñaàu *) If k=1 then l:=q Else p^.next:=q; End; Procedure In_kq; Begin While (l^.next<>nil) do Begin Writeln(l^.name); l:=l^.next; End; Readln; End; BEGIN Nhap; Gobo; In_kq; END. Baøi 2 : Baïn haõy laäp chöông trình cho pheùp nhaäp moät danh saùch ñöôïc gheùp noái . Sau ñoù cheøn theâm moät record vaøo danh saùch . (* Cheøn theâm baûn ghi vaøo danh saùch *) Uses Crt; Const inp='C9_2.inp'; Type ptr=^rec;
  • 57. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 57 rec=record name: string[20]; next: ptr; End; Var f: text; k: integer; p,s,l: ptr; Procedure Nhap; Begin Assign(f,inp); Reset(f); New(p); l:=p; While not EoF(f) do Begin Readln(f,p^.name); New(p^.next); p:=p^.next; End; p^.next:=nil; Close(f); New(s); Clrscr; Writeln('Nhap ban ghi can chen: '); Write('Ten: '); Readln(s^.name); Write('Vi tri can chen: '); Readln(k); End; Procedure Chen_rec; Var i: integer; Procedure Cat(Var L: ptr); Begin s^.next:=l; l:=s; End; Begin p:=l; For i:=3 to k do p:=p^.next; (* Tim vi tri *) If k>1 then Cat(p^.next) Else Cat(l); {Cat - Noi} End; Procedure In_kq; Begin While (l^.next<>nil) do Begin
  • 58. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 58 Writeln(l^.name); l:=l^.next; End; Readln; End; BEGIN Nhap; Chen_rec; In_kq; END. Baøi 3 : Baïn haõy laäp chöông trình cho pheùp nhaäp moät danh saùch ñöôïc gheùp noái . Sau ñoù ñoåi choã hai record trong danh saùch . (* Ñoåi choã 2 baûn ghi trong danh saùch *) Uses Crt; Const inp='C9_3.txt'; Type ptr=^rec; rec=record name: string[20]; next: ptr; End; Var f: text; j,k: integer; p,l: ptr; tenj,tenk: string; Procedure Nhap; Begin Assign(f,inp); Reset(f); New(p); l:=p; While not EoF(f) do Begin Readln(f,p^.name); New(p^.next); p:=p^.next; End; p^.next:=nil; Close(f); Clrscr; Write('Nhap vi tri 2 ban ghi can doi cho: '); Readln(j,k); End;
  • 59. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 59 Procedure Doicho; Var i: integer; Begin p:=l; For i:=2 to k do p:=p^.next; tenk:=p^.name; p:=l; For i:=2 to j do p:=p^.next; tenj:=p^.name; p:=l; For i:=2 to k do p:=p^.next; p^.name:=tenj; p:=l; For i:=2 to j do p:=p^.next; p^.name:=tenk; End; Procedure In_kq; Begin While (l^.next<>nil) do Begin Writeln(l^.name); l:=l^.next; End; Readln; End; BEGIN Nhap; Doicho; In_kq; END. BAØI TAÄP CHÖÔNG 10: ÑOÀ HOÏA Baøi 1 : Veõ hình chöõ nhaät coù taâm truøng vôùi taâm maøn hình , caùc caïnh song song vaø tæ leâ vôùi caùc caïnh maøn hình , kích thöôùc lôùn daàn theo thôøi gian . (* Hình chöõ nhaät thay ñoåi kích thöôùc *) Uses Crt,Graph; Var Gd,Gm,x,y: Integer; tl: real; BEGIN Gd:=Detect; InitGraph(Gd,Gm,''); If GraphResult <> GrOk Then Halt ; tl:=GetMaxY/GetMaxX; SetFillStyle(1,4); For x:=1 to GetMaxX do
  • 60. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 60 Begin y:=round(x*tl); Bar((GetMaxX-x) div 2,(GetMaxY-y) div 2, (GetMaxX+x) div 2,(GetMaxY+y) div 2); Delay(10); End; CloseGraph; END. Baøi 2 : Veõ hình chöõ nhaät nhö treân , kích thöôùc ñieàu khieån ñöôïc . Neáu goõ phím + thì hình lôùn leân , goõ phím – thì nhoû ñi , goõ Enter thì döøng chöông trình . (* Hình chöõ nhaät kích thöôùc ñieàu khieån ñöôïc *) Uses Crt, Graph; Var Gd,Gm,x,y: Integer; tl: real; c: char; BEGIN Gd:=Detect; InitGraph(Gd,Gm,''); tl:=GetMaxY/GetMaxX; x:=GetMaxX div 2; y:=round(x*tl); SetFillStyle(1,4); Bar((GetMaxX-x) div 2,(GetMaxY-y) div 2, (GetMaxX+x) div 2,(GetMaxY+y) div 2); Repeat OutTextXY(0,0,'Press Esc to Exit...'); Repeat c:=ReadKey; Until c in [#27,'+','-']; SetFillStyle(1,0); Bar((GetMaxX-x) div 2,(GetMaxY-y) div 2, (GetMaxX+x) div 2,(GetMaxY+y) div 2); If (c='+')and(x<GetMaxX) then Inc(x) Else If (c='-')and(y>0) then Dec(x); y:=round(x*tl); SetFillStyle(1,4); Bar((GetMaxX-x) div 2,(GetMaxY-y) div 2, (GetMaxX+x) div 2,(GetMaxY+y) div 2);
  • 61. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 61 Until c=#27; CloseGraph; END. Baøi 3 : Moät baøn côø vua hieån thò treân maøn hình . Neáu ñaët moät con haäu ( hình troøn maøu ñoû ) vaøo moät oâ baèng caùch nhaäp teân oâ , chaúng haïn a5 , thì caùc oâ bò con haâu khoáng cheá seõ ñöôïc toâ maøu xanh . Baïn haõy laäp chöông trình thöïc hieän caùc yeâu caàu treân . (* Phaïm vi kieåm soaùt cuûa Con haäu *) Uses Crt,Graph; Const N=8; W=40; X=150; Y=400; Var Gd,Gm,i,Hi: Integer; j,Hj,H: char; S: String; Pattern : FillPatternType; BEGIN Gd:=Detect; InitGraph(Gd,Gm,''); OutTextXY(270,430,'Ban co vua'); For i:=1 to N do For j:='a' to chr(Ord('a')+N-1) do Begin If Odd(i+Ord(j)) then SetFillStyle(SolidFill,14) Else SetFillStyle(SolidFill,15); Bar(X+(i-1)*W,Y-(Ord(j)-Ord('a'))*W,X+i*W,Y-(Ord(j)-Ord('a')+1)*W); End; OutTextXY(200,20,'Nhap vi tri con hau:'); Hj:=ReadKey; OutTextXY(370,20,Hj); H:=ReadKey; Hi:=Ord(H)-Ord('0'); OutTextXY(380,20,H); SetColor(4); Circle(X+(Hi-1)*W+W div 2,Y-(Ord(Hj)-Ord('a'))*W-W div 2,W div 2-5); GetFillPattern(Pattern); SetFillPattern(Pattern,4); FloodFill(X+(Hi-1)*W+W div 2,Y-(Ord(Hj)-Ord('a'))*W-W div 2,4); SetFillStyle(SolidFill,13); For i:=1 to N do For j:='a' to chr(Ord('a')+N-1) do If ((i<>Hi)or(j<>Hj)) and((Abs(i-Hi)=Abs(Ord(j)-Ord(Hj)))or(i=Hi)or(j=Hj)) then Bar(X+(i-1)*W,Y-(Ord(j)-Ord('a'))*W,X+i*W,Y-(Ord(j)-Ord('a')+1)*W);
  • 62. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 62 Readln; CloseGraph; END. Baøi 4 : Veõ ñoàng hoà ñieän töû hoaït ñoäng treân maøn hình . (* Ñoàng hoà ñieän töû *) Uses Crt,Dos,Graph; Var h,m,s,hund: Word; GD,GM: Integer; St: String; Function LeadingZero(w: Word): String; Var s: String; Begin Str(w:0,s); if Length(s)=1 then s:='0'+s; LeadingZero:=s; End; BEGIN GD:=Detect; InitGraph(GD,GM,' '); SetTextStyle(DefaultFont,HorizDir,5); Repeat GetTime(h,m,s,hund); St:=LeadingZero(h)+':'+LeadingZero(m)+':'+LeadingZero(s); SetColor(15); OutTextXY(150,200,St); Delay(1000); SetColor(0); OutTextXY(150,200,St); Until KeyPressed; CloseGraph; END. Baøi 5 : Hieån thò moät ñieåm chuyeån ñoäng ñeàu theo chieàu kim ñoàng hoà treân quyõ ñaïo troøn , taâm laø taâm maøn hình , baùn kính r = 150 .
  • 63. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 63 (* Ñieåm chuyeån ñoäng troøn ñeàu *) Uses Crt, Graph; Const r=150; v=5; Var Gd,Gm,x0,y0,x,y: Integer; a: real; (* goùc *) BEGIN Gd:=Detect; InitGraph(Gd,Gm,' '); x0:=GetMaxX div 2; y0:=GetMaxY div 2; PutPixel(x0,y0,4); a:=0; Repeat x:=x0+Round(r*cos(a)); y:=y0+Round(r*sin(a)); PutPixel(x,y,15); Delay(v); PutPixel(x,y,0); a:=a+0.01; Until KeyPressed; CloseGraph; END. Baøi 6 : Hieån thò moät hình chöõ nhaät treân maøn hình , vò trí coù theå ñieàu khieån ñöôïc baèng baøn phím . Goõ caùc phím muõi teân ñeå dòch chuyeån hình ñoù theo caùc höôùng töông öùng . (* dieu khien vi tri cua hinh vuong *) Uses Crt, Graph; Var Gd,Gm,x,y,v: Integer; Pa,Pb: Pointer; Size: Word; c: char; BEGIN Gd:=Detect; InitGraph(Gd,Gm,' '); Size:=ImageSize(0,0,20,20); GetMem(Pb,Size); GetImage(0,0,20,20,Pb^);
  • 64. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 64 GetMem(Pa,Size); Bar(0,0,20,20); GetImage(0,0,20,20,Pa^); ClearDevice; x:=300; y:=200; v:=10; c:=#77; Repeat PutImage(x,y,Pa^,NormalPut); Repeat Until KeyPressed; c:=ReadKey; If c=#0 then c:=ReadKey; PutImage(x,y,Pb^,NormalPut); Case c of #72: Dec(y); #75: Dec(x); #77: Inc(x); #80: Inc(y); End; If x>600 then x:=0; If x<0 then x:=600; If y>440 then y:=0; If y<0 then y:=440; Until (c=#27)or(c=#13); CloseGraph; END. Baøi 7 : Veõ hình sau vôùi caùc phoâng chöõ , caùc maøu khaùc nhau : Size 8 Size 16 Size 24 Size 32 Size 40 (* Caùc daïng phoâng chöõ *)
  • 65. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 65 Uses Graph; Const K=3; Var Gd,Gm,Font,Color,Size,i: Integer; S: String; BEGIN Gd:=Detect; InitGraph(Gd,Gm,' '); Color:=0; For Font:=0 to 11 do Begin ClearDevice; For i:=1 to 4 do Begin Size:=(i-1)*K+1; Inc(Color); Color:=Color mod 15+1; SetColor(Color); SetTextStyle(Font,HorizDir,Size); Str(Size,S); S:='Size '+S; OutTextXY(100,i*80,S) ; End; Readln; End; CloseGraph; END. Baøi 8 : Veõ heä truïc toaï ñoä vaø ñoà thò haøm soá y = x2 vôùi ñaày ñuû chuù thích . (* Ñoà thò cuûa haøm soá y = Sqr(x) *) Uses Graph; Const X0=320;Y0=300;E=50; Var Gd,Gm,i,j,k: Integer; x,y: real; S: String; BEGIN Gd:=Detect; InitGraph(Gd,Gm,' '); Line(100,Y0,550,Y0); {Truc Ox} OutTextXY(540,Y0+10,'x'); For k:=-3 to 3 do
  • 66. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 66 Begin i:=k*E+X0; j:=Y0; Str(k,S); OutTextXY(i-10,j+8,S); Bar(i-1,j-1,i+1,j+1); End; Line(X0,50,X0,370); {Truc Oy} OutTextXY(X0-20,50,'y'); For k:=-1 to 4 do Begin i:=X0; j:=-k*E+Y0; Str(k,S); If k<>0 then OutTextXY(i-20,j,S); Bar(i-1,j-1,i+1,j+1); End; For i:=X0-2*E to X0+2*E do {Do thi} Begin x:=(i-X0)/E; y:=Sqr(x); j:=Round(-y*E+Y0); PutPixel(i,j,10); End; SetTextStyle(1,0,2); OutTextXY(100,400,'Do thi ham so y = Sqr(x):'); Readln; CloseGraph; END. Baøi 9 : Veõ vaø toâ maøu cho ngoâi nhaø sau . Ñaûm baûo khaû naêng baät taét ñieän cho ngoâi nhaø . Neáu goõ phím + thì ñeøn saùng ( cöûa soå coù maøu traéng ) , goõ phím – thì ñeøn taét ( cöûa soá coù maøu ñen ) . (* To mau Ngoi nha *) Uses Crt,Graph; Var Gd,Gm: Integer; Pattern : FillPatternType; c: Char;
  • 67. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 67 BEGIN Gd:=Detect; InitGraph(Gd,Gm,' '); GetFillPattern(Pattern); OutTextXY(120,50,'To mau Ngoi nha:'); Rectangle(220,200,420,330); Rectangle(250,230,300,330); Rectangle(330,230,390,280); MoveTo(220,200); Lineto(180,200); Lineto(220,140); Lineto(420,140); Lineto(460,200); Lineto(420,200); SetFillPattern(Pattern,Blue); Floodfill(0,0,White); SetFillPattern(Pattern,4); Floodfill(320,190,White); SetFillPattern(Pattern,8); Floodfill(320,220,White); Repeat Repeat c:=ReadKey; Until c in [#27,'+','-']; If (c='+') then SetFillPattern(Pattern,14) Else If (c='-') then SetFillPattern(Pattern,0);; Floodfill(270,300,White); Floodfill(370,270,White); Until c=#27; CloseGraph; END. MUÏC LUÏC Chöông 1:IF ……..Then …………Else.
  • 68. Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam Trung-mientrung19@gmail.com) Bài tập Pascal có lời giải 68