Đề tài Giải và sưu tầm các bài toán Pascal ở Trung học cơ sở

Nhập 3 số a , b , c bất kì . Hãy kiểm tra xem ba số đó có thể là độ dài ba cạnh của một tam giác hay không ? Thông báo lên màn hình ‘ Thỏa mãn ‘, ‘ Không thỏa mãn trong từng trường hợp tương ứng .

 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 .

 

doc52 trang | Chuyên mục: Pascal | Chia sẻ: dkS00TYs | Lượt xem: 6997 | Lượt tải: 1download
Tóm tắt nội dung Đề tài Giải và sưu tầm các bài toán Pascal ở Trung học cơ sở, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ite(' So tu co trong file hoten.txt la: ',dem);
 Readln;
 END.
	Bài 7 :
Cho một file text . Viết chương trình loại bỏ các khoảng trống thừa bên trong file text nà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.
 IV CẤU TRÚC DỮ LIỆU KIỂU CON TRỎ
	Bài 1 :
Bạn hãy lập chương trình cho phép ta nhập từ bàn phím một danh sách được ghép nối . Sau đó gỡ bỏ một record khỏi danh sá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
 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 ṿ trí cuoái *)
 q:=p;
 p:=l; For i:=3 to k do p:=p^.next; (* T́m ṿ trí ñaàu *)
 If k=1 then l:=q Else p^.next:=q;
 End;
 Procedure In_kq;
 Begin
 While (l^.nextnil) do
 Begin
 Writeln(l^.name);
 l:=l^.next;
 End;
 Readln;
 End;
 BEGIN
 Nhap;
 Gobo;
 In_kq;
 END.
	Bài 2 :
Bạn hãy lập chương trình cho phép nhập một danh sách được ghép nối . Sau đó chèn thêm một record vào danh sách .
 (* Cheøn theâm baûn ghi vaøo danh saùch *)
 Uses Crt;
 Const inp='C9_2.inp';
 Type ptr=^rec;
 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^.nextnil) do
 Begin
 Writeln(l^.name);
 l:=l^.next;
 End;
 Readln;
 End;
 BEGIN
 Nhap;
 Chen_rec;
 In_kq;
 END.
	Bài 3 :
Bạn hãy lập chương trình cho phép nhập một danh sách được ghép nối . Sau đó đổi chỗ hai record trong danh sá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;
 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^.nextnil) do
 Begin
 Writeln(l^.name);
 l:=l^.next;
 End;
 Readln;
 End;
 BEGIN
 Nhap;
 Doicho;
 In_kq;
 END.
V CẤU TRÚC DỮ LỆU KIỂU ĐỒ HOẠ 
	Bài 1 :
Vẽ hình chữ nhật có tâm trùng với tâm màn hình , các cạnh song song và tỉ lê với các cạnh màn hình , kích thước lớn dầ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
 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.
	Bài 2 :
Vẽ hình chữ nhật như trên , kích thước điều khiển được . Nếu gõ phím + thì hình lớn lên , gõ phím – thì nhỏ đi , gõ 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);
 Until c=#27;
 CloseGraph;
 END.
	 Bài 3 :
Một bàn cờ vua hiển thị trên màn hình . Nếu đặt một con hậu ( hình tròn màu đỏ ) vào một ô bằng cách nhập tên ô , chẳng hạn a5 , thì các ô bị con hâu khống chế sẽ được tô màu xanh . Bạn hãy lập chương trình thực hiện các yêu cầu trê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 ((iHi)or(jHj))
 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);
 Readln;
 CloseGraph;
 END.
	Bài 4 :
Vẽ đồng hồ điện tử hoạt động trên mà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.
Bài 5 :
Hiển thị một điểm chuyển động đều theo chiều kim đồng hồ trên quỹ đạo tròn , tâm là tâm màn hình , bán kính r = 150 . 
 (* Ñ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.
Bài 6 :
Hiển thị một hình chữ nhật trên màn hình , vị trí có thể điều khiển được bằng bàn phím . Gõ các phím mũi tên để dịch chuyển hình đó theo cá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^);
 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.
	Bài 7 :
Vẽ hình sau với các phông chữ , các màu khác nhau :
	Size 8
	Size 16
	Size 24
	Size 32
	Size 40
 (* Caùc daïng phoâng chöơ *)
 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.
	Bài 8 :
Vẽ hệ trục toạ độ và đồ thị hàm số y = x2 với đầy đủ chú thích .
 (* Ñoà tḥ 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
 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 k0 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.

File đính kèm:

  • docĐề tài Giải và sưu tầm các bài toán Pascal ở Trung học cơ sở.doc
Tài liệu liên quan