68
Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected]) 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 ;

Bai tap pascal co giai

  • Upload
    trungdha

  • View
    21.488

  • Download
    3

Embed Size (px)

DESCRIPTION

Bai tap Pascal co ban co loi giai (Suu tam tren Internet)

Citation preview

Page 1: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 ;

Page 2: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 ') ;

Page 3: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 ')

Page 4: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 5: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 6: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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/3

2 + … + 1/n

2

b. b. 1 + 1/2! + 1/3! + … + 1/n!

GIAÛI

a)

Var n , i : Word ;

Page 7: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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/2

2 ) … ( 1 + 1/n

2 )

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 ;

Page 8: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 ;

Page 9: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 ;

Page 10: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 ;

Page 11: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 ;

Page 12: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 13: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

(*=================================*)

Page 14: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 ;

Page 15: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

(*================================*)

Page 16: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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.

Page 17: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 :

Page 18: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 :

Page 19: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 20: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 21: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 22: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 .

Page 23: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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]) ;

Page 24: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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] ;

Page 25: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 26: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 .

Page 27: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 28: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 29: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 30: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 31: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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}

Page 32: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 33: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 34: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 35: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 36: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 37: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 ');

Page 38: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 39: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 40: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 41: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 :

Page 42: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 43: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 44: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 45: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 46: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 47: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 48: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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);

Page 49: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 50: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 51: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 *)

Page 52: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 53: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 54: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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);

Page 55: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 56: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 57: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 58: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 59: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 60: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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);

Page 61: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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);

Page 62: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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 .

Page 63: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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^);

Page 64: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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öõ *)

Page 65: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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

Page 66: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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;

Page 67: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

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.

Page 68: Bai tap pascal co giai

Thầy gửi tài liệu này các em xem để học (0946873510-Hoàng Nam [email protected])

Bài tập Pascal có lời giải 68