Trước đó, mình đã post bài Một số bài tập Pascal cơ bản – Phần 1. Bạn bào chưa xem thì click vào link để xem nhá. Bây giờ mình sẽ post tiếp các bài cơ bản nữa trong phần 2 này.


pascal


Một số bài tập Pascal cơ bản – Phần 2


(Tên bài được đánh tiếp theo phần 1 các bạn nhé!)


Bài 6: Đếm số lần xuất hiện của mỗi chữ cái trong xâu


*Đề: Viết chương trình nhập vào từ bàn phím một xâu kí tự S và thông báo ra màn hình số lần xuất hiện của mổi chứ cái tiếng Anh trong S ( không phân biệt chữ hoa và chữ thường).


*Hướng dẫn:


Uses Crt;
Var St:String;
dem: Array[‘A’..’Z’] Of Byte;
i:Byte;
ch:Char;
Begin
Write(‘Nhap xau St: ‘); Readln(St);
Khởi tạo mảng
For ch:=’A’ To ‘Z’ Do dem[ch]:=0;
Duyệt xâu
For i:=1 To Length(St) Do
If Upcase(St[i]) IN [‘A’..’Z’] Then Inc(dem[Upcase(St[i])]);
Liệt kê các ký tự ra màn hình
For ch:=’A’ To ‘Z’ Do
If dem[ch]>0 Then Writeln(ch,’ : ’,dem[ch]);
Readln;
End.

Bài 7: Tìm bội chung nhỏ nhất của N số (ví dụ: mảng 1 chiều)


*Đề: như trên


*Hướng dẫn:


Như bài UCLN và BCNN đã hướng dẫn ở Phần 1 cách tìm tuy nhiên chỉ áp dụng với trường hợp 2 số. Bài toán ra là tìm BCNN của mảng 1 chiều, vậy sẽ phải viết chương trình như thế nào?

Bội số chung nhỏ nhất (The Least Common Multiple hay Lowest Common Multiple) của một nhóm các số nguyên, gọi tắt là LCM, là số nhỏ nhất mà có thể chia hết cho tất cả các số đó. Có nhiều giải pháp để tìm LCM của hai số nguyên, một trong những giải pháp dễ dàng nhất là dùng thuật giải Euclid. Cho hai số nguyên a và b, chúng ta có công thức LCM(a, b) = (a x b) / GCD(a, b). Như vậy quá trình tính toán sẽ thông qua các bước sau:

  1. Bước 1. Sử dụng thuật toán Euclid để tìm ước chung lớn nhất GCD (a, b)

  2. Bước 2. Tính giá trị a x b.

  3. Bước 3. Chia kết quả bước 2 cho kết quả bước 1 chúng ta được giá trị LCM cần tìm.

Để tìm LCM của n số chúng ta đầu tiên chọn ra 2 số rồi tính LCM của chúng, sau đó lấy thêm số khác để tính LCM của LCM mới tìm được và số mới chọn ra, cứ như thế cho tới khi nào hết n số. Ví dụ tìm LCM của 2, 3 và 5. Đầu tiên ta tính LCM(2, 3) = 6. Sau đó tìm LCM(6, 5) = 30.
uses crt;
var x, y, i, n, ucln, bcnn: longint;
a: array[1..100] of integer;
function h_ucln(x,y:integer):integer;
begin
while x<>y do
if x>y then
x:=x-y
else
y:=y-x;
h_ucln:=x;
end;
begin
clrscr;
repeat
write('Nhap N (N>=2): ');
readln(n);
until(n>=2);
for i:=1 to n do
begin
write('Phan tu thu ',i,' = ');
readln(a[i]);
end;
ucln:=h_ucln(a[1],a[2]);
bcnn:=(a[1]*a[2]) div ucln;
for i:=3 to n do
begin
ucln:=h_ucln(bcnn,a[i]);
bcnn:=(bcnn*a[i]) div ucln;
end;
writeln('bcnn la: ',bcnn);
readln;
end.


Bài 8: Cho biết tháng đó có nhiêu ngày


*Đề: Nhập vào 1 năm, 1 tháng và cho biết tháng đó có bao nhiêu ngày?


*Hướng dẫn:


uses crt;
var a,b:integer;
bo:boolean;
begin
write('Nhap nam :');readln(b);
if (b mod 100=0) then bo:=(b mod 400)=0 else
bo:=(b mod 4 )=0;
if bo then
begin
repeat
clrscr;
write('Nhap thang :');readln(a);
until (a>0) and (a<13);
case a of
2:write('Co 29 ngay');
1,3,5,7,8,10,12:write('Co 31 ngay');
4,6,9,11:write('Co 30 ngay');
end;
end;
if (not bo) then
begin
repeat
clrscr;
write('Nhap thang :');readln(a);
until (a>0) and (a<13);
case a of
2:write('Co 28 ngay');
1,3,5,7,8,10,12:write('Co 31 ngay');
4,6,9,11:write('Co 30 ngay');
end;
end;
readln;
end.

Bài 9: Kiểm tra số chính phương trong mảng 1 chiều


*Đề: như trên


*Hướng dẫn: Trước hết, chúng ta sẽ tìm hiểu khái niệm về số chính phương. Số chính phương là gì? Số chính phương là một số mà tự nó là một căn bậc hai của một số tự nhiên khác, hay nói rõ hơn thì số chính phương là bình phương của một số tự nhiên.


Ví dụ: 289 là một số chính phương vì 289 = 72


Thuật toán Pascal dưới đây sẽ giúp tìm số chính phương trong mảng 1 chiều.
uses crt; 
type ArrInt = array[1..250] of integer;
Var n,i,x : integer;
a: ArrInt;
BEGIN
clrscr;
write('Nhap so phan tu: ');
readln(n);
for i:=1 to n do
begin
write('Phan tu thu ',i,'= ');
readln(a[i]);
end;
writeln('Cac so chinh phuong co trong mang:');
for i:=1 to n do
begin
x:=trunc(sqrt(a[i]));
if sqr(x)=a[i] then
write(a[i]:4);
end;
readln;
END.


Bài 10: Kiểm tra đồng thời tính chẵn lẻ của 2 số


*Đề: Viết chương trình nhập 2 số tự nhiên M, N và thông báo đúng nếu M, N cùng tính chẵn lẻ, trong trường hợp ngược lại thì thông báo sai.


*Hướng dẫn:


uses crt;
var n,m : integer;
begin
clrscr;
write('Nhap 2 so m, n: ') ; readln(m,n) ;
if( (m+n) mod 2=0 ) then writeln('Dung !')
else writeln('Sai !') ;
readln;
end.

Vậy là xong!!!  i12  Hãy cùng Ngọc Khương Blog đón chào phần 3 bạn nhé!  i25



Một số bài tập Pascal cơ bản - Phần 2

0 nhận xét:

Đăng nhận xét

:) :)) ;(( :-) =)) ;( ;-( :d :-d @-) :p :o :>) (o) [-( :-? (p) :-s (m) 8-) :-t :-b b-( :-# =p~ $-) (b) (f) x-) (k) (h) (c) cheer
Click to see the code!
To insert emoticon you must added at least one space before the code.