Bài tập Pascal - Nguyễn Thị Huê _ THPT Tân Yên II – Bắc Giang

Bài tập Pascal - Nguyễn Thị Huê _ THPT Tân Yên II – Bắc Giang

1. Một số đoạn lệnh cần nhớ

1.1. Cấu trúc một chương trình Pascal

{ Phần khai báo}

- Khai báo tên chương trình: program ;

- Khai báo thư viên: uses ;

- Khai báo hằng: const : ;

- Khai báo biến: var : ;

- Khai báo chương trình con:

 . Thủ tục: procedure [ (danh sách các tham số) ]

 ;

 Begin

 

 End;

 

doc 28 trang Người đăng quocviet Lượt xem 2443Lượt tải 0 Download
Bạn đang xem 20 trang mẫu của tài liệu "Bài tập Pascal - Nguyễn Thị Huê _ THPT Tân Yên II – Bắc Giang", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Bài tập Pascal
1. Một số đoạn lệnh cần nhớ
1.1. Cấu trúc một chương trình Pascal
{ Phần khai báo}
- Khai báo tên chương trình:	program ;
- Khai báo thư viên: 	uses ;
- Khai báo hằng: 	const : ;
- Khai báo biến: 	var : ;
- Khai báo chương trình con:
	. Thủ tục: 	procedure [ (danh sách các tham số) ]
	;
	Begin
	End;
	. Hàm	: function [(danh sách tham số)] : 
	 ;
	 Begin
	 : : { trả lại giá trị cho hàm}
	 End;
{Phần thân chương trình}
Begin
;
End.
1.2. Một số kiểu dữ liệu hay dùng
- Kiểu nguyên:
Byte: Từ 0 đến 255.
Integer: Từ -215 đến 215 -1.
Word: Từ 0 đến 216 -1.
Longint: Từ -231 đến 231 - 1.
- Kiểu thực:
 Real: 0 hoặc có giá trị tuyệt đối nằm trong phạm vi từ 10-38 đến 1038
- Kiểu kí tự:
Char: 256 kí tự trong bộ mã ASCII.
- Kiểu logic:
Boolean: có giá trị True hoặc False.
1.3. Thủ tục chuẩn vào/ ra đơn giản
- Nhập dữ liệu từ bàn phím:
Read ();
Hoặc Readln ();
- Xuất dữ liệu ra màn hình:
Write ();
Hoặc Writeln ();
1.4. Câu lệnh rẽ nhánh
- If - then:	
. Dạng thiếu:	If then ;
. Dạng đủ:	If then else ;
- Case - of:
Case of
 : ;
 : ;
 : ;
Else 
 : ;
End;
1.5. Câu lệnh lặp
- Lặp với số lần biết trước:	
. Dạng tiến: For := to do ;
. Dạng lùi: For := downto do ;
- Lặp với số lần chưa biết trước:
. While do ;
. Repeat 
	;
Until ;	 
1.6. Mảng 1 chiều
- Khai báo
. Trực tiếp:
Var : array [ kiểu chỉ số ] of ;
. Gián tiếp:
Type = array [ kiểu chỉ số ] of ;
Var : ;
- Nhập mảng
For i:= 1 to n do 
Begin
Write (‘ nhap A[‘,i,’] = ’);
Readln (a[i]);
End;
- In mảng
For i:= 1 to n do Write (A[i] : 5);
1.7. Mảng 2 chiều
- Khai báo
. Trực tiếp:
Var : array [ kiểu chỉ số hàng, kiểu chỉ số cột] of ;
. Gián tiếp:
Type = array [ kiểu chỉ số hàng, kiểu chỉ số cột] of ;
Var : ;
- Nhập mảng
For i:= 1 to n do 
For j:=1 to m do
Begin
Write (‘ nhap A[’,i,’,’,j,’] = ’);
Readln (a[i,j]);
End;
- In mảng
For i:= 1 to n do 
Begin
For j:=1 to m do Write (A[i,j]:5 );
Readln;
End;
1.8. Xâu
- Khai báo
Var : String [ ];
- Nhập xâu
	Write (‘ nhap vao xau: ‘); readln ( );
- In xâu
	Write (‘xau: ‘, );
2. Một số thuật toán cơ bản
Kiểm tra N có là số chẵn (tương tự số lẻ)
If N mod 2=0 then write (‘N la so chan’);
Kiểm tra N có phải là số chính phương (số chính phương là số bằng bình phương của một số nguyên dương)
If Sqr(Round(Sqrt(N)))= N then write(‘N la so chinh phuong’);
Kiểm tra N có là số nguyên tố (số nguyên tố là số nguyên dương chỉ có 2 ước nguyên dương là 1 và chính nó)
i := 2;
m := Round ( Sqrt (N)); { i và m khai báo kiểu nguyên}
While (i 0) do i := i + 1;
If i>m then Write (‘ N la so nguyen to’);
Kiểm tra N có là số hoàn hảo (số hoàn hảo là số nguyên dương có tổng các ước trừ nó bằng chính nó)
S := 0; { S khai báo cùng kiểu với N}
For i := 1 to N - 1 do 
If N mod i = 0 then S := S + i ;
If S = N do write (‘ N la so hoan hao’); 
Kiểm tra N có là số đẹp (số hoàn hảo là số nguyên dương, đọc từ trái sang phải nó, chữ số đứng trước <= chữ số đướng sau)
{Biến kt khai báo kiểu logic}
Str (N, S); { S khai báo kiểu xâu}
Kt := True; i := 1;
While (kt = true) and (i < length(S)) do 
Begin
	If S[i+1] < S[i] then kt := False;
	I := i+1;
End;
If kt do write (‘ N la so dep’);
3. Bài tập
3.1. Bài tập hình học
Bài 1: Cho tam giác có độ dài 3 cạnh là a, b, c. Tính chu vi, diện tích, độ dài 3 đường cao. Kiểm tra xem tam giác đó là vuông, đều hay cân?
uses crt;
var a,b,c, cv:integer;
 p, dt: real;
begin
 clrscr;
 write(' nhap do dai 3 canh:'); readln(a,b,c);
 if (a+b<c) or (a+c<b) or (b+c<a) then
 write(' nhap kich thuoc 3 canh sai')
 else
 begin
 cv := a+b+c;
 writeln(' chu vi tam giac: ',cv);
 p:=cv/2;
 dt:= sqrt(p*(p-a)*(p-b)*(p-c));
 writeln('dien tich tam giac: ',dt:6:2);
 if (a*a+b*b=c*c) or (b*b+c*c=a*a) or (c*c+a*a=b*b) then
 begin
 writeln(' day la tam giac vuong');
 if (a>b) and (a>c) then
begin writeln('do dai duong cao thu nhat: ',b);
 	 writeln('do dai duong cao thu hai: ',c);
 writeln('do dai duong cao thu ba: ',dt/a:6:2);
 end;
 if (b>a) and (b>c) then
 begin 
writeln('do dai duong cao thu nhat: ',a);
writeln('do dai duong cao thu hai: ',c);
writeln('do dai duong cao thu ba: ',dt/b:6:2);
 end;
 if (c>b) and (c>a) then
 begin
writeln('do dai duong cao thu nhat: ',a);
writeln('do dai duong cao thu hai: ',b);
writeln('do dai duong cao thu ba: ',dt/c:6:2);
 end;
 end
 else
 begin
 if (a=b) and (b=c) and (a=c) then
writeln('day la tam giac deu')
 	else
 if (a=b) or (b=c) or (a=c) then
writeln('day la tam giac can');
writeln('do dai duong cao thu nhat: ',dt/b:6:2);
writeln('do dai duong cao thu hai: ',dt/c:6:2);
writeln('do dai duong cao thu ba: ',dt/a:6:2);
 end;
 end;
 readln;
end.
Bài 2: Cho 4 điểm A(xa,ya), B(xb,yb), C(xc,yc), D(xd,yd). Cho biết vị trí tương đối của D đối với tam giác ABC.
var ax, bx, cx, dx, ay, by, cy, dy:real;
 a,b,c:real;
 p, p1, p2, p3:real;
 s, s1, s2, s3: real;
 d1, d2, d3: real;
begin
 writeln('nhap toa do cho cac diem:');
 write('diem A:'); readln(ax,ay);
 write('diem B:'); readln(bx,by);
 write('diem C:'); readln(cx,cy);
 write('diem D:'); readln(dx,dy);
 	a:=sqrt(sqr(bx-ax)+sqr(by-ay));	{AB}
 	b:=sqrt(sqr(bx-cx)+sqr(by-cy));	{BC}
 	c:=sqrt(sqr(ax-cx)+sqr(ay-cy));	{CA}
 p:=(a+b+c)/2;
 	s:=sqrt(p*(p-a)*(p-b)*(p-c));
 	d1:=sqrt(sqr(ax-dx)+sqr(ay-dy)); {AD}
 	d2:= sqrt(sqr(bx-dx)+sqr(by-dy)); {BD}
 	d3:= sqrt(sqr(cx-dx)+sqr(cy-dy)); {CD}
 p1:=(c+d1+d3)/2; { ACD }
 p2:=(a+d1+d2)/2; { ABD }
 p3:=(b+d2+d3)/2; { BCD }
 s1:= sqrt(p1*(p1-d1)*(p1-d3)*(p1-c));
 s2:= sqrt(p2*(p2-d1)*(p2-d2)*(p2-a));
 s3:= sqrt(p3*(p3-d2)*(p3-d3)*(p3-b));
 if abs(s-s1-s2-s3)<0.001 then write('D thuoc tgiac ABC')
 else if abs(s1)<0.001 then write('D nam tren AC')
 else if abs(s2)<0.001 then write('D nam tren AB')
 else if abs(s3)<0.001 then write('D nam tren BC')
 else write('D nam ngoai tgiac ABC');
 readln;
end.
Bài 3:
Bài tập về số nguyên
Bài 1: Nhập vào 2 số nguyên dương a và b. Tính và in ra màn hình: tổng, hiệu, tích, thương a/b và UCLN(a,b).
Uses crt;
Var a,b, tong, hieu, tich, ucln: integer;
	 Thuong: real;
Begin
 Clrscr;
 Write (‘nhap a va b: ‘); readln (a,b);
 Writeln (‘Tong‘,a,‘+’,b,’=’,a + b);
 Writeln (‘Hieu‘,a,‘-’,b,’=’,a - b);
 Writeln (‘Tich‘, a,‘*’,b ,’=’,a * b);
 Writeln (‘Thuong‘,a,‘/’,b ,’=’, a/b:5:2);
 While ab do 
If a>b then a := a-b Else b:=b-a;
 Writeln (‘UCLN(‘,a,‘va’,b,’)=’, a );
 Readln;
End.
Bài 2: Giải phương trình trùng phương: ax4 + bx2+c = 0.
uses crt;
var a,b,c:integer;
 d,t,t1,t2:real;
begin
 clrscr;
 writeln('he so a,b,c:');
 readln(a,b,c);
 if (a=0) then writeln('nhap lai')
 else
 begin
 	{dat t=x*x}
 d:=b*b-4*a*c;
 if d<0 then write('PT vo ng')
 else
 if d=0 then
 begin
 t:=-b/(2*a);
 if t>0 then
 begin
 	writeln('PT co 2ng:');
 	writeln('x1=',-sqrt(t):6:2);
 	writeln('x2=',sqrt(t):6:2);
 end
 else
 	if t=0 then writeln('PT co ng duy nhat x=0')
 	else writeln('Pt vo ng');
 	 end
 else 	{d>0}
 begin
 	t1:=(-b-sqrt(d))/(2*a);
 	t2:=(-b+sqrt(d))/(2*a);
 	if (t1<0) and (t2<0) then write('Pt vo ng');
 	if (t1=0) and (t2=0) then write('Pt co ng x=0');
 	if (t1>0) and (t2>0) then
 	begin
 	writeln('PT co 4 ngh:');
 	 write('x1=',-sqrt(t1):6:2,'x2=',sqrt(t1):6:2);
 	 write('x3=',-sqrt(t2):6:2,'x2=',sqrt(t2):6:2);
 	end;
 	if (t1>0) and (t2<0) then
 	begin
 	writeln('PT co 2 ng:');
 write('x1=',-sqrt(t1):6:2,'x2=',sqrt(t1):6:2);
 	end;
 	if (t10) then
 	begin
 	writeln('PT co 2 ng:');
 	write('x1=',sqrt(t2):6:2,'x2=',sqrt(t2):6:2);
 	end;
 	 end;
 end;
 readln;
end.
Bài 3: Giải hệ phương trình: 
uses crt;
var a1, b1, c1, a2, b2, c2:integer;
 d, dx, dy:real;
begin
 clrscr;
 writeln('nhap cac he so a1,b1,c1:');
 readln(a1,b1,c1);
 writeln('nhap cac he so a2,b2,c2:');
 readln(a2,b2,c2);
 d:=a1*b2-a2*b1;
 dx:=c1*b2-c2*b1;
 dy:=a1*c2-a2*c1;
 if (d=0) and ((dx0) or (dy0)) then writeln('HPT vo ng')
 else
 if (d=0) and (dx=0) and (dy=0) then writeln('HPT co vo so ng')
 else
 begin
 writeln('HPT co ng:');
 writeln('x=',dx/d:3:2,'y=',dy/d:3:2);
 end;
 readln;
end.
Bài 4: Nhập vào số nguyên. Kiểm tra:
+ N chia hết cho 3 không?
+ N bao nhiêu chữ số?
+ Tổng các chữ số của N?
+ Số đảo ngược của N?
uses crt;
var n,m,t:word;
 s,s1:string;
 i:byte;
begin
 clrscr;
 write(' N=');readln(n);
 if n mod 3=0 then writeln(n,' chia het cho 3')
 else writeln(n,' khong chia het cho 3');
 m:=n; i:=0; t:=0;
 while m>0 do
 begin
 i:=i+1;
 t:=t+m mod 10;
 m:=m div 10;
 end;
 writeln('so cac chu so cua ',n,':',i);
 writeln('tong cac chu so cua ',n,':',t);
 str(n,s);
 for i:=length(s) downto 1 do s1:=s1+s[i];
 writeln(' so dao nguoc cua ',n,':',s1);
 readln;
end.
Bài 5: tính tổng của N nghìn VND từ 3 loại tiền: 1000 VND, 2000 VND, 5000 VND. Lập trình ra tất cả các phương án.
uses crt;
var i,j,k,n,d: integer;
begin
 clrscr;
 write('so tien (don vi la nghin VND): ');
 readln(n);
 d:=0;
 for i:=1 to n do
 for j:=1 to n div 2 do
 for k:=0 to n div 5 do
 if n=i+j*2+k*5 then
 begin
 d:=d+1;
 writeln('phuong an thu ',d,' :');
 write(n,'000 VND = ',i,'*1000 + ',j,'*2000 +',k,'*5000');
 writeln;
 end;
 readln;
end.
Bài 6: Tính giá trị của đa thức f(x) = anxn+ an-1xn-1+ a1x1+a0
var x,n,i:integer;
 f:real;
 a:array [0..100] of integer;
begin
 write('x=');readln(x);
 write('n=');readln(n);
 writeln('nhap cac he so:');
 for i:=0 to n do
 begin
 write('A[',i,']=');readln(a[i]);
 end;
 f:=a[n];
 for i:=n downto 1 do
 f:=f*x +a[i-1];
 f:=f+a[0];
 writeln('KQ: ',f:7:2);
 readln;
end.
Bài tập về mảng
Bài 1: Thực hiện các phép tính cộng, trừ, nhân 2 ma trận vuông.
(Chú ý: cộng và trừ chỉ thực hiện được với 2 ma trận cùng cỡ n x m. Nhân 2 ma trận thực hiện với 2 ma trận có dang: Anxm x Bmxl)
uses crt;
var a,b,c,d: array[1..10,1..10] of integer;
 m,n,l,i,j,k:byte;
begin
 clrscr;
 write('n=');readln(n);
 for i:=1 to n do
 for j:=1 to n do
 begin
 write('A[',i,',',j,']=');
 readln(a[i,j]);
 end;
 for i:=1 to n do
 for j:=1 to n do
 begin
 write('B[',i,',',j,']=');
 readln(b[i,j]);
 end;
 for i:=1 to n do
 for j:=1 to n do
 begin
 c[i,j]:=a[i,j]+b[i,j];
 d[i,j]:=a[i,j]-b[i,j];
 end;
 writeln('ma tran tong:');
 for i:=1 to n do
 begin
 for j:=1 to n do write(c[i,j]:5);
 writeln;writeln;
 end;
 writeln('ma tran hieu:');
 for i:=1 to n do
 begin
 for j:=1 to n do write(d[i,j]:5);
 writeln;writeln;
 end;
 for i:=1 to n do
 for k:=1 to n do
 begin
 c[i,k]:=0;
 for j:=1 to n do c[i,k]:=c[i,k]+a[i,j]*b[j,k];
 end;
 writeln('ma tran tich:');
 for i:=1 to n do
 begin
 for j:=1 to n do write(c[i,j]:6);
 writeln;writeln;
 end;
 readln;
end.
Bài 2: Nhập mảng 2 chiều cấp nxn. 
+ Kiểm tra xem mảng có đối xứng qua đường chéo chính không.
+ Đưa ra phần tử lớn nhất, nhỏ nhất của mảng.
+ Có số nào là ước của mọi số không? Có số nào là bội của mọi số không?
uses crt;
var a: array[1..10,1..10] of integer;
 n,i,j,max,min:byte;
 kt:boolean;
begin
 clrscr;
 write('n=');readln(n);
 for i:=1 to n do
 for j:=1 to n do
 begin
 write('A[',i,',',j,']=');
 readln(a[i,j]);
 end;
 for i:=1 to n do
 begin
 for j:= 1 to n do write(a[i,j]:5);
 writeln;
 end;
 kt:=true; i:=1; j:=1;
 while (i<=n) and (j<=n) and (kt=true) do
 begin
 if a[i,j]a[j,i] then kt:=false;
 i:=i+1;
 j:=j+1;
 end;
 if kt=true then writeln('MT doi xung qua duong cheo chinh')
 else writeln('Mt ko doi xung qua duong cheo chinh');
 max:=a[1,1]; min:=a[1,1];
 for i:=1 to n do
 for j:=1 to n do
 begin
 if a[i,j]>max then max:=a[i,j];
 if a[i,j]<min then min:=a[i,j];
 end;
 writeln('GTLN cua mang:', max,' GTNN cua mang:',min);
	kt:=true;
	for i:=1 to n do
	if a[i] mod min 0 then kt:=false;
	if kt=true then writeln(a[i],'la uoc cua moi so') 
else writeln('ko co so nao la uoc cua moi so');	
	kt:=true;
	for i:=1 to n do 
	if max mod a[i] 0 then kt:=false;
	if kt=true then write(max,'la boi cua moi so') 
else writeln('ko co so nao la boi cua moi so');	
 readln;
end.
Bài 3: Nhập ma trận vuông nxn.
+ Tính tổng các phần tử ở dòng 2 và cột 2.
+ Tính tổng các phần tử trên đường chéo chính và đường chéo phụ.
uses crt;
var a: array[1..10,1..10] of integer;
 n,i,j,t1,t2:byte;
begin
 clrscr;
 write('n=');readln(n);
 for i:=1 to n do
 for j:=1 to n do
 begin
 write('A[',i,',',j,']=');
 readln(a[i,j]);
 end;
 for i:=1 to n do
 begin
 for j:=1 to n do write(a[i,j]:5);
 writeln; writeln;
 end;
 t1:=0;
 for i:=1 to n do t1:=t1+a[2,i]+a[i,2];
 t1:=t1-a[2,2];
 writeln('tong cac phan tu o dong 2 cot 2: ',t1);
 t2:=0;
 for i:=1 to n do t2:= t2 + a[i,i] + a[i,n-i+1];
 if n mod 2 0 then t2:=t2-a[(n div 2)+1,(n div 2)+1];
 writeln('tong cac phan tu tren duong cheo chinh va duong cheo phu: ',t2);
 readln;
end.
Bài 4: Nhập vào dãy số nguyên. Sắp xếp lại thành dãy không giảm.
uses crt;
type mt=array[1..100] of integer;
var a:mt;
 n,i,j,t,cv:byte;
procedure hoan_vi(var x,y:integer);
var tg:integer;
begin
 tg:=x;
 x:=y;
 y:=tg;
end;
procedure nhap_day(var a:mt;n:integer);
begin
 for i:=1 to n do
 begin
 write('A[',i,']=');readln(a[i]);
 end;
end;
procedure in_day(var a:mt;n:integer);
begin
 writeln;
 for i:=1 to n do write(a[i]:7);
end;
procedure sx_lua_chon(var a:mt;n:integer);
var m:integer;
begin
 for i:=1 to n do
 begin
 m:=1;
 for j:=1 to i+1 do
 if a[j]>a[m] then m:=j;
 if mi then hoan_vi(a[i],a[m]);
 end;
end;
procedure sx_chen(var a:mt;n:integer);
var x:integer;
begin
 for i:=2 to n do
 begin
 x:=a[i];
 j:=i-1;
 while x<a[j] do
 begin
 a[j+1]:=a[j];
 j:=j-1;
 end;
 a[j+1]:=x;
 end;
end;
procedure sx_trao_doi(var a:mt;n:integer);
begin
 for i:=n downto 2 do
 for j:=1 to i-1 do
 if a[j]>a[j+1] then hoan_vi(a[j],a[j+1]);
end;
begin
 clrscr;
 write('n=');readln(n);
 nhap_day(a,n);
 writeln;
 writeln('day ban dau:');
 in_day(a,n);
 writeln('ban chon kieu sap xep nao:');
 writeln('1. sap xep lua chon');
 writeln('2. sap xep chen');
 writeln('3. sap xep trao doi');
 writeln('4. thoat');
 write('chon: ');readln(cv);
 case cv of
 1: sx_lua_chon(a,n);
 2: sx_chen(a,n);
 3: sx_trao_doi(a,n);
 4: exit;
 end;
 writeln('day sau khi sap xep:');
 in_day(a,n);
 readln;
end.
Bài 5: Nhập vào dãy số nguyên, sắp xếp theo thứ tự không giảm, đọc thêm 1 số từ bàn phím và chèn vào dãy sao cho thứ tự không đổi.
uses crt;
var a:array[1..100] of integer;
 i,j,tg,m,n:integer;
begin
 clrscr;
 write('n=');readln(n);
 for i:=1 to n do
 begin
 write('A[',i,']=');readln(a[i]);
 end;
 writeln('day ban dau:');
 for i:=1 to n do write(a[i]:7); writeln;
 for i:=n downto 2 do
 for j:=1 to i-1 do
 if a[j]>a[j+1] then
 begin
 tg:=a[j];
 a[j]:=a[j+1];
 a[j+1]:=tg;
 end;
 writeln('day sau khi sap xep:');
 for i:=1 to n do write(a[i]:7); writeln;
 write('chen vao so:');readln(m);
 i:=1;
 while (m>a[i]) and (i<n) do i:=i+1;
 writeln('vi tri chen: ',i);
 if i>n then a[i]:=m
 else
 begin
 for j:=n downto i do a[j+1]:=a[j];
 a[i]:=m;
 end;
 writeln('day sau khi chen:');
 for i:=1 to n+1 do write(a[i]:6);
 readln;
end.
Bài 6: Nhập vào dãy số nguyên, đưa ra những phần tử trong dãy là số đẹp. (Tương tự với số chẵn, số lẻ, số nguyên tố, số chính phương, số hoàn hảo. Tương tự với ma trận)
uses crt;
var a:array[1..100] of integer;
 n,i:integer;
function sd(var x:integer):boolean;
var s:string; kt:boolean;
begin
 str(x,s);
 kt:=true;
 for i:=1 to length(s)-1 do
 if s[i]>s[i+1] then kt:=false;
 sd:=kt;
end;
begin
 clrscr;
 write('n=');readln(n);
 for i:=1 to n do
 begin
 write('A[',i,']=');readln(a[i]);
 end;
 writeln('nhung so hoan hao trong day:');
 for i:=1 to n do
 if sd(a[i])=true then writeln(a[i],' la so hoan hao');
 readln;
end.
Bài 7: Phần tử của ma trận được gọi là phần tử yên ngựa nếu như nó là bé nhất hàng và lớn nhất cột, hoặc nó là lớn nhất hàng và bé nhất cột.
Nhập vào 1 ma trận và cho biết có bao nhiêu phàn tử là phần tử yên ngựa, ơe vị trí nào?
uses crt;
var a: array[1..10,1..10] of integer;
 d,n,m,i,j:byte;
 maxd,maxc,mind,minc:array[1..10] of integer;
begin
 clrscr;
 write('n=');readln(n);
 write('m=');readln(m);
 for i:=1 to n do
 for j:=1 to m do
 begin
 write('A[',i,',',j,']=');
 readln(a[i,j]);
 end;
 for i:=1 to n do
 begin
 for j:=1 to m do write(a[i,j]:7);
 writeln; writeln;
 end;
 for i:=1 to n do
 begin {lon nhat tren dong}
 maxd[i]:=a[i,1];
 for j:=2 to m do
 if maxd[i]<a[i,j] then maxd[i]:=a[i,j];
 end;
 for i:=1 to n do write(maxd[i]:6); writeln;
 for i:=1 to n do
 begin {nho nhat tren dong}
 mind[i]:=a[i,1];
 for j:=2 to m do
 if mind[i]>a[i,j] then mind[i]:=a[i,j];
 end;
 for i:=1 to n do write(mind[i]:6); writeln;
 for j:=1 to m do
 begin {lon nhat tren cot}
 maxc[j]:=a[1,j];
 for i:=2 to n do
 if maxc[j]<a[i,j] then maxc[j]:=a[i,j];
 end;
 for j:=1 to m do write(maxc[j]:6);writeln;
 for j:=1 to m do
 begin {nho nhat tren cot}
 minc[j]:=a[1,j];
 for i:=2 to n do
 if minc[j]>a[i,j] then minc[j]:=a[i,j];
 end;
 for j:=1 to m do write(minc[j]:6); writeln;
 d:=0;
 for i:=1 to n do
 for j:=1 to m do
 if ((a[i,j]=maxd[i]) and (a[i,j]=minc[j])) or
 ((a[i,j]=mind[i]) and (a[i,j]=maxc[j])) then
 begin
 d:=d+1;
 writeln(a[i,j],' o dong ',i,' cot ',j,' la PT yen ngua');
 end;
 if d=0 then write('ko co PT yen ngua nao')
 else write('co ',d,' PT yen ngua');
 readln;
end.
Bài 8: Hai số được gọi là sinh đôi nếu nó là các số nguyên tố và có hiệu bằng 2. Nhập dãy số nguyên và cho biết cso bao nhiêu cặp số sinh đôi.
uses crt;
var a:array[1..20] of byte;
 i,j,n,d:byte;
function nt(var x:byte):boolean;
var k,m:byte; kt:boolean;
begin
 kt:=false;
 k:=2;
 m:=trunc(sqrt(x));
 while (k0) do k:=k+1;
 if (x>1) and (k>m) then kt:=true;
 nt:=kt;
end;
begin
 clrscr;
 write('n=');readln(n);
 for i:=1 to n do
 begin
 write('A[',i,']=');readln(a[i]);
 end;
 for i:=1 to n do write(a[i]:7);
 writeln;
 for i:=1 to n do
 d:=0;
 for i:=1 to n-1 do
 for j:=i+1 to n do
 if ((nt(a[i])=true) and (nt(a[j])=true)) and (abs(a[i]-a[j])=2) then
 begin
 writeln(a[i],' va ',a[j],' la 2 so sinh doi');
 d:=d+1;
 end;
 if d=0 then write('ko co cap so sinh doi nao')
 else write('co ',d,' cap so sinh doi');
 readln;
end.
Bài 8: Viết hàm tính ƯCLN(a,b). Nhập vào ma trận A, đưa ra dãy B có các phần tử là ƯCLN của từng dòng. (tương tự từng cột)
uses crt;
var a:array [1..10,1..10] of longint;
 b:array [1..10] of longint;
 i,j,m,n,d,k:longint;
function ucln(var x,y:longint):longint;
begin
 while xy do
 if x>y then x:=x-y else y:=y-x;
 ucln:=x;
end;
begin
 clrscr;
 write('n=');readln(n);
 write('m=');readln(m);
 for i:=1 to n do
 for j:=1 to m do
 begin
 write('A[',i,',',j,']=');
 readln(a[i,j]);
 end;
 for i:=1 to n do
 begin
 for j:=1 to m do write(a[i,j]:6);
 writeln;writeln;
 end;
 for i:=1 to n do
 begin
 d:=ucln(a[i,1],a[i,2]);
 for j:=3 to m do d:=ucln(d,a[i,j]);
 writeln('ucln cua dong ',i,' la ',d);
 b[i]:=d;
 end;
 writeln('day ucln cua tung dong:');
 for i:=1 to n do write(b[i]:7);
 readln;
end.
Bài 9: Nhập vào ma trận A cỡ nxm. In ra dãy B có các phần tử là tổng của từng cột. (tương tự với dãy B là tổng các phần tử trên từng hàng)
Bài 10: Nhập vào dãy rồi cho biết có bao nhiêu số chỉ xuất hiện một lần, là những số nào. T51-55.
Bài tập về xâu kí tự
Bài tập về file
Bài tập kết hợp

Tài liệu đính kèm:

  • docbai tap Pascal.doc