Similar topics
bai tap phan 6
Tin k9-NBK Quảng Nam :: Học tập :: Tin :: Kiến Thức
Trang 1 trong tổng số 1 trang
bai tap phan 6
Program Phan_So_1;
Uses PhanSo1;
Var
x : T_PhanSo1;
r : Real;
BEGIN
Writeln('DOI SO THUC RA OHAN SO TOI GIAN');
Writeln('-------------------------------');
Writeln;
Write('-Nhap mot so thuc: ');
Readln(r);
Writeln;
With x Do
Begin
KhoiDong;
Write('+Doi ra dang phan so la= ');
Doi(r);
Xuat;
Writeln;
Write('+Phan so toi gian la = ');
Toigian;
Xuat;
End;
Readln
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Program Phan_So_2;
Uses PhanSo2;
Var
X,Y : T_PhanSo2;
so1,so2 : Real;
Begin
Writeln('SO SANH, CONG 2 SO THUC DUOI DANG PHAN SO');
Writeln('----------------------------------------');
Writeln;
Write('-Nhap so thu nhat: ');
Readln(so1);
Write('-Nhap so thu hai : ');
Readln(so2);
X.KhoiDong;
Y.KhoiDong;
X.Doi(So1);
Y.Doi(So2);
Writeln;
Write('-Doi so thu nhat ra phan so la : ');
X.Xuat;
Writeln;
Write('-Doi so thu hai ra phan so la : ');
Y.Xuat;
Writeln;
Writeln;
If X.LonHon(Y) Then
Writeln('-So thu nhat lon hon so thu hai');
If Y.LonHon(X) Then
Writeln('-So thu hai lon hon so thu nhat');
Writeln;
X.Cong(Y);
Write('-Tong 2 phan so la : ');
X.Xuat;
Writeln;
Write(' Bam <Enter> . . . ');
Readln
End.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Program Phan_So_3;
Uses PhanSo3;
Var
X,Y : T_PhanSo3;
so1,so2 : Real;
Begin
Writeln('SO SANH, CONG 2 SO THUC CHENH LECH LON');
Writeln('--------------------------------------');
Writeln;
Write('-Nhap so thu nhat: ');
Readln(so1);
Write('-Nhap so thu hai : ');
Readln(so2);
X.KhoiDong;
Y.KhoiDong;
X.Doi(So1);
Y.Doi(So2);
Writeln;
If X.LonHon(Y) Then
Writeln('-So thu nhat lon hon so thu hai');
If Y.LonHon(X) Then
Writeln('-So thu hai lon hon so thu nhat');
Writeln;
X.Cong(Y);
Write('-Tong 2 so la : ');
X.Xuat;
Writeln;
Write(' Bam <Enter> . . . ');
Readln
End.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Program ListDemo;
Uses ListUtil;
TYPE
StrObjPtr = ^StrObj;
StrObj = OBJECT(Item)
St : ^String;
Constructor Init(InitStr : String);
Destructor Done; Virtual;
Procedure Print; Virtual;
End;
VAR
ItemList : List;
F : Text; {bien kieu tap tin van ban}
Line : String[80];
{-----------------------------}
Constructor StrObj.Init;
Begin
Item.Init;
GetMem(St,length(InitStr) + 1);
St^ := InitStr;
End;
{-----------------------------}
Destructor Strobj.Done;
Begin
FreeMem(St, Length(St^) + 1);
Item.Done;
End;
{-----------------------------}
Procedure StrObj.Print;
Begin
Item.Print;
Write(St^);
End;
{-----------------------------}
BEGIN
ItemList.Init;
Writeln('-Bo nho truoc khi doc tap tin: ',MemAvail,' bytes');
Writeln;
Write('-Bam <Enter> de doc tap tin BAITHO.TXT tu dia ');
Readln;
Assign(F,'BAITHO.TXT'); {Gan bien tap tin}
Reset(F); {Mo tap tin da co tren dia }
While Not EOF(F) Do
Begin
Readln(F,Line);
ItemList.InsertItem(New(StrObjPtr,Init(Line)))
End;
Writeln;
ItemList.PrintList;
Writeln;
Writeln;
Writeln('-Bo nho sau khi doc tap tin: ',MemAvail,' bytes');
ItemList.DisposeList;
Writeln;
Writeln;
Writeln('-Bo nho sau khi xoa bang Dispose: ',MemAvail,' bytes');
Writeln;
Write(' Bam <Enter>. . . ');
Readln
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Program ListDemo;
Uses ListUtil;
TYPE
IntObjPtr = ^IntObj;
IntObj = OBJECT(Item)
I : Integer;
Constructor Init(InitI : Integer);
Procedure Print; Virtual;
End;
RealObjPtr = ^RealObj;
RealObj = OBJECT(Item)
R : Real;
Constructor init(InitReal : Real);
Procedure Print; Virtual;
End;
StrObjPtr = ^StrObj;
StrObj = OBJECT(Item)
St : ^String;
Constructor Init(InitStr : String);
Destructor Done; Virtual;
Procedure Print; Virtual;
End;
VAR
ItemList : List;
{--------------------------------}
Constructor IntObj.Init;
Begin
Item.Init;
I :=InitI;
End;
{--------------------------------}
Procedure IntObj.Print;
Begin
Item.print;
Write(' +So nguyen = ',i);
End;
{--------------------------------}
Constructor RealObj.Init;
Begin
Item.Init;
R := InitReal
End;
{--------------------------------}
Procedure RealObj.Print;
Begin
Item.Print;
Write(' +So thuc = ',r);
End;
{--------------------------------}
Constructor StrObj.Init;
Begin
Item.Init;
Getmem(St,Length(InitStr) +1);
St^ := InitStr;
End;
{--------------------------------}
Destructor StrObj.Done;
Begin
FreeMem(St,Length(St^) + 1);
Item.Done;
End;
{--------------------------------}
Procedure StrObj.print;
Begin
Item.Print;
Write(' +Chuoi ky tu = ',St^);
End;
{--------------------------------}
BEGIN
ItemList.Init;
Writeln('-Bo nho truoc khi chen du lieu: ',MemAvail,' bytes');
ItemList.InsertItem(New(IntObjPtr,Init(123)));
ItemList.InsertItem(New(RealObjPtr,Init(123.456)));
ItemList.InsertItem(New(StrObjPtr,Init('Turbo Pascal 7.0')));
Itemlist.PrintList;
Writeln;
Writeln;
Writeln('-Bo nho sau khi chen du lieu: ',MemAvail,' bytes');
ItemList.DisposeList;
Writeln;
Writeln;
Writeln('-Bo nho sau khi xoa bang Dispose = ',MemAvail,' bytes');
Writeln;
Write(' Bam <Enter> ... ');
Readln
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Program Ve_hinh;
Uses Crt,Graph,Dos,Vehinh;
TYPE
Arc = OBJECT(Circle)
StartAngle, EndAngle : Integer;
Constructor Init(InitX,InitY,InitRadius, InitS,InitE:Integer);
Procedure Show; Virtual;
Procedure Hide; Virtual;
End;
VAR
GrDriver, GrMode: Integer;
Cung : Arc;
C : Circle;
P : Point;
{-------------------------------------}
Constructor Arc.Init;
Begin
Circle.Init(InitX,InitY,InitRadius);
StartAngle := InitS;
EndAngle := InitE;
End;
{-------------------------------------}
Procedure Arc.Show;
Begin
Visible := True;
Graph.Arc(X,Y,StartAngle,EndAngle,Radius);
End;
{-------------------------------------}
Procedure Arc.Hide;
Var
TempColor : Word;
Begin
TempColor := Graph.GetColor;
Graph.SetColor(GetBkColor);
Visible := False;
Graph.Arc(X,Y,StartAngle,EndAngle,Radius);
SetColor(TempColor);
End;
{-------------------------------------}
BEGIN
GrDriver := CGA;
GrMode := CGAC0;
InitGraph(GrDriver,GrMode,'C:\BP\BGI');
C.Init(151,82,50);
Cung.Init(151,82,25,0,90);
P.Init(151,82);
P.Drag(5);
Cung.Drag(5);
C.Drag(5);
CloseGraph
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Unit ListUtil;
INTERFACE
TYPE
ItemPtr = ^Item;
Item = OBJECT
Next : ItemPtr;
Constructor Init;
Procedure print; Virtual;
Destructor Done; Virtual;
End;
List = OBJECT
Root : ItemPtr;
Constructor Init;
procedure InsertItem(P : ItemPtr);
Procedure DisposeList;
Procedure PrintList;
End;
IMPLEMENTATION
Var
Last : ItemPtr;
{------------------------------}
Constructor Item.Init;
Begin
Next := Nil;
End;
{------------------------------}
Destructor Item.Done;
Begin
End;
{------------------------------}
Procedure Item.Print;
Begin
Writeln;
End;
{------------------------------}
Constructor List.Init;
Begin
Root := Nil;
End;
{------------------------------}
Procedure List.InsertItem;
Begin
If Root = Nil Then
Root := P
Else
Last^.Next := P;
Last := P;
Last^.Next := Nil
End;
{------------------------------}
Procedure List.PrintList;
Var
Ip : ItemPtr;
Begin
Ip := Root;
While ( Ip <> Nil ) Do
Begin
Ip^.print;
Ip := Ip^.Next
End;
End;
{------------------------------}
Procedure List.DisposeList;
Var
Ip : ItemPtr;
Begin
While (Root <> Nil) Do
Begin
Ip := Root;
Root := Ip^.Next;
Dispose(Ip,Done);
End;
End;
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
UNIT PhanSo1;
INTERFACE
TYPE
T_Dau = -1.. 1;
T_PhanSo1 = OBJECT
TuSo, MauSo : LongInt;
Dau : T_Dau;
CONSTRUCTOR KhoiDong;
Procedure Doi(r : Real);
Procedure ToiGian;
Procedure Xuat;
End;
IMPLEMENTATION
CONST
Max = 2147483647;
R_min = 1E-10;
CONSTRUCTOR T_PhanSo1.KhoiDong;
Begin
End;
{--------------------------}
Procedure T_PhanSo1.Doi(r : Real);
Var
PS : T_PhanSo1;
Du : Real;
Begin
If ABS(r) > Max Then
RunError(7);
If r > 0 Then
Dau := 1
Else
Dau := -1;
r := ABS(r);
MauSo := 1;
Du := r - Int(r);
While Du > R_Min Do
Begin
r := 10 * r;
MauSo := 10 * MauSo;
Du := r - Round(r);
End;
TuSo := Round(r);
End;
{--------------------------}
Procedure T_PhanSo1.ToiGian;
Var
u : LongInt;
Function USCLN(x, y : LongInt) : LongInt;
Begin
While NOT (x = y) Do
If x > y Then
x := x - y
Else
y := y -x;
USCLN := x;
End;
Begin
If TuSo = 0 Then
Begin
MauSo := 1;
Dau := 0;
Exit;
End;
u := USCLN(TuSo, MauSo);
TuSo := TuSo Div u;
MauSo := MauSo Div u;
End;
{--------------------------}
Procedure T_PhanSo1.Xuat;
Begin
If MauSo = 1 Then
Begin
If Dau = -1 Then
Write('-',TuSo)
Else
Write(TuSo);
Exit
End;
If Dau = -1 Then
Write('-',TuSo, '/', MauSo)
Else
Write(TuSo,'/',MauSo);
End;
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
UNIT PhanSo2;
INTERFACE
(**************)
USES PhanSo1;
TYPE
T_PhanSo2 = Object(T_PhanSo1)
Procedure Cong(Ps : T_PhanSo2);
Function LonHon(Ps : T_PhanSo2): Boolean;
End;
IMPLEMENTATION
(**************)
Function T_PhanSo2.LonHon(Ps : T_PhanSo2) : Boolean;
Var
x, y : Real;
Begin
x := TuSo;
x := x / MauSo;
y := Ps.TuSo;
y := y / Ps.MauSo;
If x > y Then
LonHon := True
Else
LonHon := False;
End;
(**************)
Procedure T_PhanSo2.Cong(Ps : T_PhanSo2);
Var
x, y, Tong : Real;
Begin
x := TuSo;
x := x / MauSo;
y := Ps.TuSo;
y := y / Ps.MauSo;
Tong := x + y;
Doi(Tong);
x := TuSo;
x := x / MauSo;
ToiGian;
x := TuSo;
x := x / MauSo;
End;
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
UNIT PhanSo3;
INTERFACE
Uses PhanSo2;
TYPE
T_PhanSo3 = Object(T_PhanSo2)
Constructor KhoiDong;
Procedure ToiGian; Virtual;
End;
IMPLEMENTATION
{--------------------------------}
Constructor T_PhanSo3.KhoiDong;
Begin
End;
{--------------------------------}
Procedure T_PhanSo3.ToiGian;
Var
u:LongInt;
Function USCLN(x, y : LongInt): LongInt;
Var
Tam : LongInt;
Begin
Tam :=0;
Repeat
If x >= y Then
If (x Mod y) = 0 Then
Tam :=y
Else
x := x - (x Div y) * y;
If y > x Then
If (y Mod x) = 0 Then
Tam := x
Else
y := y-(y div x) * x;
Until (Tam <> 0);
USCLN := Tam;
End;
Begin
If TuSo = 0 Then
Begin
MauSo := 1;
Dau := 0;
Exit;
End;
u := USCLN(TuSo, MauSo);
TuSo := TuSo Div u;
MauSo := MauSo Div u;
End;
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Unit VeHinh;
INTERFACE
TYPE
Location = OBJECT
X,Y : Integer;
Constructor Init(InitX,InitY : Integer);
Function GetX : Integer;
Function GetY : Integer;
End;
Pointptr = ^Point;
Point = OBJECT(Location)
Visible : Boolean;
Constructor Init(InitX,InitY : Integer);
Destructor Done; Virtual;
Procedure Show; Virtual;
Procedure Hide; Virtual;
Function IsVisible : Boolean;
Procedure MoveTo(NewX,NewY :Integer);
Procedure Drag(DragBy : Integer); Virtual;
End;
CirclePtr =^Circle;
Circle = OBJECT(Point)
Radius : Integer;
Constructor Init(InitX,InitY,InitRadius : Integer);
Procedure Show; Virtual;
Procedure Hide; Virtual;
procedure Expand(ExpandBy : Integer); Virtual;
Procedure ConStract(ConstractBy : Integer); Virtual;
End;
IMPLEMENTATION
Uses Graph, Crt;
{CAI DAT LOCATION}
{-----------------------------------}
Constructor Location.Init;
Begin
X := InitX;
Y := InitY;
End;
{-----------------------------------}
Function Location.GetX;
Begin
GetX := X;
End;
{-----------------------------------}
Function Location.GetY;
Begin
GetY := Y;
End;
{-----------------------------------}
{CAI DAT POINT}
{-----------------------------------}
Constructor Point.Init;
Begin
Location.Init(initX,InitY);
Visible := False;
End;
{-----------------------------------}
Destructor Point.Done;
Begin
Hide;
End;
{-----------------------------------}
Procedure Point.Show;
Begin
Visible := True;
PutPixel(X,Y,GetColor);
End;
{-----------------------------------}
Procedure Point.Hide;
Begin
Visible := False;
PutPixel(X,Y,GetBkColor);
End;
{-----------------------------------}
Function Point.IsVisible;
Begin
IsVisible := Visible;
End;
{-----------------------------------}
Procedure Point.MoveTo;
Begin
Hide;
X := NewX;
Y := NewY;
Show;
End;
{-----------------------------------}
Function GetDelta(Var DeltaX,DeltaY : Integer): Boolean;
Var
KeyChar : Char;
Quit : Boolean;
Result : Boolean;
Begin
DeltaX := 0;
DeltaY := 0;Result := True;
Repeat
KeyChar := ReadKey;
Quit := True;
If KeyChar = #0 then
KeyChar := ReadKey;
Case KeyChar Of
#72 : DeltaY := -1; { Mui ten len}
#80 : DeltaY := 1; { Mui ten xuong }
#75 : DeltaX :=-1; {Mui ten trai }
#77 : DeltaX := 1; { Mui ten phai }
#27 : Result := False {Phim Esc }
Else
Quit := False;
End;
Until Quit;
GetDelta :=Result;
End;
{-----------------------------------}
Procedure Point.Drag;
Var
DeltaX,DeltaY : Integer;
FigureX,FigureY : Integer;
Begin
Show;
FigureX := GetX;
FigureY := GetY;
While GetDelta(DeltaX,DeltaY) Do
Begin
Inc(FigureX,DeltaX*DragBy);
Inc(FigureY,DeltaY*DragBy);
MoveTo(FigureX,FigureY);
End;
End;
{-----------------------------------}
{ CAI DAT CIRCLE}
{-----------------------------------}
Constructor Circle.Init;
Begin
Point.Init(InitX,InitY);
Radius := InitRadius;
End;
{-----------------------------------}
Procedure Circle.Show;
Begin
Visible := True;
Graph.Circle(X,Y,Radius);
End;
{-----------------------------------}
Procedure Circle.Hide;
Var
TempColor : Word;
Begin
TempColor := Graph.GetColor;
Graph.SetColor(GetBkColor);
Visible := False;
Graph.Circle(X,Y,Radius);
Graph.SetColor(TempColor);
End;
{-----------------------------------}
Procedure Circle.Expand;
Begin
Hide;
Inc(Radius, ExpandBy);
If Radius < 0 Then
Radius := 0;
Show;
End;
{-----------------------------------}
Procedure Circle.Constract;
Begin
Expand(-ConstractBy);
End;
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-H?t=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Uses PhanSo1;
Var
x : T_PhanSo1;
r : Real;
BEGIN
Writeln('DOI SO THUC RA OHAN SO TOI GIAN');
Writeln('-------------------------------');
Writeln;
Write('-Nhap mot so thuc: ');
Readln(r);
Writeln;
With x Do
Begin
KhoiDong;
Write('+Doi ra dang phan so la= ');
Doi(r);
Xuat;
Writeln;
Write('+Phan so toi gian la = ');
Toigian;
Xuat;
End;
Readln
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Program Phan_So_2;
Uses PhanSo2;
Var
X,Y : T_PhanSo2;
so1,so2 : Real;
Begin
Writeln('SO SANH, CONG 2 SO THUC DUOI DANG PHAN SO');
Writeln('----------------------------------------');
Writeln;
Write('-Nhap so thu nhat: ');
Readln(so1);
Write('-Nhap so thu hai : ');
Readln(so2);
X.KhoiDong;
Y.KhoiDong;
X.Doi(So1);
Y.Doi(So2);
Writeln;
Write('-Doi so thu nhat ra phan so la : ');
X.Xuat;
Writeln;
Write('-Doi so thu hai ra phan so la : ');
Y.Xuat;
Writeln;
Writeln;
If X.LonHon(Y) Then
Writeln('-So thu nhat lon hon so thu hai');
If Y.LonHon(X) Then
Writeln('-So thu hai lon hon so thu nhat');
Writeln;
X.Cong(Y);
Write('-Tong 2 phan so la : ');
X.Xuat;
Writeln;
Write(' Bam <Enter> . . . ');
Readln
End.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Program Phan_So_3;
Uses PhanSo3;
Var
X,Y : T_PhanSo3;
so1,so2 : Real;
Begin
Writeln('SO SANH, CONG 2 SO THUC CHENH LECH LON');
Writeln('--------------------------------------');
Writeln;
Write('-Nhap so thu nhat: ');
Readln(so1);
Write('-Nhap so thu hai : ');
Readln(so2);
X.KhoiDong;
Y.KhoiDong;
X.Doi(So1);
Y.Doi(So2);
Writeln;
If X.LonHon(Y) Then
Writeln('-So thu nhat lon hon so thu hai');
If Y.LonHon(X) Then
Writeln('-So thu hai lon hon so thu nhat');
Writeln;
X.Cong(Y);
Write('-Tong 2 so la : ');
X.Xuat;
Writeln;
Write(' Bam <Enter> . . . ');
Readln
End.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Program ListDemo;
Uses ListUtil;
TYPE
StrObjPtr = ^StrObj;
StrObj = OBJECT(Item)
St : ^String;
Constructor Init(InitStr : String);
Destructor Done; Virtual;
Procedure Print; Virtual;
End;
VAR
ItemList : List;
F : Text; {bien kieu tap tin van ban}
Line : String[80];
{-----------------------------}
Constructor StrObj.Init;
Begin
Item.Init;
GetMem(St,length(InitStr) + 1);
St^ := InitStr;
End;
{-----------------------------}
Destructor Strobj.Done;
Begin
FreeMem(St, Length(St^) + 1);
Item.Done;
End;
{-----------------------------}
Procedure StrObj.Print;
Begin
Item.Print;
Write(St^);
End;
{-----------------------------}
BEGIN
ItemList.Init;
Writeln('-Bo nho truoc khi doc tap tin: ',MemAvail,' bytes');
Writeln;
Write('-Bam <Enter> de doc tap tin BAITHO.TXT tu dia ');
Readln;
Assign(F,'BAITHO.TXT'); {Gan bien tap tin}
Reset(F); {Mo tap tin da co tren dia }
While Not EOF(F) Do
Begin
Readln(F,Line);
ItemList.InsertItem(New(StrObjPtr,Init(Line)))
End;
Writeln;
ItemList.PrintList;
Writeln;
Writeln;
Writeln('-Bo nho sau khi doc tap tin: ',MemAvail,' bytes');
ItemList.DisposeList;
Writeln;
Writeln;
Writeln('-Bo nho sau khi xoa bang Dispose: ',MemAvail,' bytes');
Writeln;
Write(' Bam <Enter>. . . ');
Readln
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Program ListDemo;
Uses ListUtil;
TYPE
IntObjPtr = ^IntObj;
IntObj = OBJECT(Item)
I : Integer;
Constructor Init(InitI : Integer);
Procedure Print; Virtual;
End;
RealObjPtr = ^RealObj;
RealObj = OBJECT(Item)
R : Real;
Constructor init(InitReal : Real);
Procedure Print; Virtual;
End;
StrObjPtr = ^StrObj;
StrObj = OBJECT(Item)
St : ^String;
Constructor Init(InitStr : String);
Destructor Done; Virtual;
Procedure Print; Virtual;
End;
VAR
ItemList : List;
{--------------------------------}
Constructor IntObj.Init;
Begin
Item.Init;
I :=InitI;
End;
{--------------------------------}
Procedure IntObj.Print;
Begin
Item.print;
Write(' +So nguyen = ',i);
End;
{--------------------------------}
Constructor RealObj.Init;
Begin
Item.Init;
R := InitReal
End;
{--------------------------------}
Procedure RealObj.Print;
Begin
Item.Print;
Write(' +So thuc = ',r);
End;
{--------------------------------}
Constructor StrObj.Init;
Begin
Item.Init;
Getmem(St,Length(InitStr) +1);
St^ := InitStr;
End;
{--------------------------------}
Destructor StrObj.Done;
Begin
FreeMem(St,Length(St^) + 1);
Item.Done;
End;
{--------------------------------}
Procedure StrObj.print;
Begin
Item.Print;
Write(' +Chuoi ky tu = ',St^);
End;
{--------------------------------}
BEGIN
ItemList.Init;
Writeln('-Bo nho truoc khi chen du lieu: ',MemAvail,' bytes');
ItemList.InsertItem(New(IntObjPtr,Init(123)));
ItemList.InsertItem(New(RealObjPtr,Init(123.456)));
ItemList.InsertItem(New(StrObjPtr,Init('Turbo Pascal 7.0')));
Itemlist.PrintList;
Writeln;
Writeln;
Writeln('-Bo nho sau khi chen du lieu: ',MemAvail,' bytes');
ItemList.DisposeList;
Writeln;
Writeln;
Writeln('-Bo nho sau khi xoa bang Dispose = ',MemAvail,' bytes');
Writeln;
Write(' Bam <Enter> ... ');
Readln
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Program Ve_hinh;
Uses Crt,Graph,Dos,Vehinh;
TYPE
Arc = OBJECT(Circle)
StartAngle, EndAngle : Integer;
Constructor Init(InitX,InitY,InitRadius, InitS,InitE:Integer);
Procedure Show; Virtual;
Procedure Hide; Virtual;
End;
VAR
GrDriver, GrMode: Integer;
Cung : Arc;
C : Circle;
P : Point;
{-------------------------------------}
Constructor Arc.Init;
Begin
Circle.Init(InitX,InitY,InitRadius);
StartAngle := InitS;
EndAngle := InitE;
End;
{-------------------------------------}
Procedure Arc.Show;
Begin
Visible := True;
Graph.Arc(X,Y,StartAngle,EndAngle,Radius);
End;
{-------------------------------------}
Procedure Arc.Hide;
Var
TempColor : Word;
Begin
TempColor := Graph.GetColor;
Graph.SetColor(GetBkColor);
Visible := False;
Graph.Arc(X,Y,StartAngle,EndAngle,Radius);
SetColor(TempColor);
End;
{-------------------------------------}
BEGIN
GrDriver := CGA;
GrMode := CGAC0;
InitGraph(GrDriver,GrMode,'C:\BP\BGI');
C.Init(151,82,50);
Cung.Init(151,82,25,0,90);
P.Init(151,82);
P.Drag(5);
Cung.Drag(5);
C.Drag(5);
CloseGraph
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Unit ListUtil;
INTERFACE
TYPE
ItemPtr = ^Item;
Item = OBJECT
Next : ItemPtr;
Constructor Init;
Procedure print; Virtual;
Destructor Done; Virtual;
End;
List = OBJECT
Root : ItemPtr;
Constructor Init;
procedure InsertItem(P : ItemPtr);
Procedure DisposeList;
Procedure PrintList;
End;
IMPLEMENTATION
Var
Last : ItemPtr;
{------------------------------}
Constructor Item.Init;
Begin
Next := Nil;
End;
{------------------------------}
Destructor Item.Done;
Begin
End;
{------------------------------}
Procedure Item.Print;
Begin
Writeln;
End;
{------------------------------}
Constructor List.Init;
Begin
Root := Nil;
End;
{------------------------------}
Procedure List.InsertItem;
Begin
If Root = Nil Then
Root := P
Else
Last^.Next := P;
Last := P;
Last^.Next := Nil
End;
{------------------------------}
Procedure List.PrintList;
Var
Ip : ItemPtr;
Begin
Ip := Root;
While ( Ip <> Nil ) Do
Begin
Ip^.print;
Ip := Ip^.Next
End;
End;
{------------------------------}
Procedure List.DisposeList;
Var
Ip : ItemPtr;
Begin
While (Root <> Nil) Do
Begin
Ip := Root;
Root := Ip^.Next;
Dispose(Ip,Done);
End;
End;
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
UNIT PhanSo1;
INTERFACE
TYPE
T_Dau = -1.. 1;
T_PhanSo1 = OBJECT
TuSo, MauSo : LongInt;
Dau : T_Dau;
CONSTRUCTOR KhoiDong;
Procedure Doi(r : Real);
Procedure ToiGian;
Procedure Xuat;
End;
IMPLEMENTATION
CONST
Max = 2147483647;
R_min = 1E-10;
CONSTRUCTOR T_PhanSo1.KhoiDong;
Begin
End;
{--------------------------}
Procedure T_PhanSo1.Doi(r : Real);
Var
PS : T_PhanSo1;
Du : Real;
Begin
If ABS(r) > Max Then
RunError(7);
If r > 0 Then
Dau := 1
Else
Dau := -1;
r := ABS(r);
MauSo := 1;
Du := r - Int(r);
While Du > R_Min Do
Begin
r := 10 * r;
MauSo := 10 * MauSo;
Du := r - Round(r);
End;
TuSo := Round(r);
End;
{--------------------------}
Procedure T_PhanSo1.ToiGian;
Var
u : LongInt;
Function USCLN(x, y : LongInt) : LongInt;
Begin
While NOT (x = y) Do
If x > y Then
x := x - y
Else
y := y -x;
USCLN := x;
End;
Begin
If TuSo = 0 Then
Begin
MauSo := 1;
Dau := 0;
Exit;
End;
u := USCLN(TuSo, MauSo);
TuSo := TuSo Div u;
MauSo := MauSo Div u;
End;
{--------------------------}
Procedure T_PhanSo1.Xuat;
Begin
If MauSo = 1 Then
Begin
If Dau = -1 Then
Write('-',TuSo)
Else
Write(TuSo);
Exit
End;
If Dau = -1 Then
Write('-',TuSo, '/', MauSo)
Else
Write(TuSo,'/',MauSo);
End;
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
UNIT PhanSo2;
INTERFACE
(**************)
USES PhanSo1;
TYPE
T_PhanSo2 = Object(T_PhanSo1)
Procedure Cong(Ps : T_PhanSo2);
Function LonHon(Ps : T_PhanSo2): Boolean;
End;
IMPLEMENTATION
(**************)
Function T_PhanSo2.LonHon(Ps : T_PhanSo2) : Boolean;
Var
x, y : Real;
Begin
x := TuSo;
x := x / MauSo;
y := Ps.TuSo;
y := y / Ps.MauSo;
If x > y Then
LonHon := True
Else
LonHon := False;
End;
(**************)
Procedure T_PhanSo2.Cong(Ps : T_PhanSo2);
Var
x, y, Tong : Real;
Begin
x := TuSo;
x := x / MauSo;
y := Ps.TuSo;
y := y / Ps.MauSo;
Tong := x + y;
Doi(Tong);
x := TuSo;
x := x / MauSo;
ToiGian;
x := TuSo;
x := x / MauSo;
End;
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
UNIT PhanSo3;
INTERFACE
Uses PhanSo2;
TYPE
T_PhanSo3 = Object(T_PhanSo2)
Constructor KhoiDong;
Procedure ToiGian; Virtual;
End;
IMPLEMENTATION
{--------------------------------}
Constructor T_PhanSo3.KhoiDong;
Begin
End;
{--------------------------------}
Procedure T_PhanSo3.ToiGian;
Var
u:LongInt;
Function USCLN(x, y : LongInt): LongInt;
Var
Tam : LongInt;
Begin
Tam :=0;
Repeat
If x >= y Then
If (x Mod y) = 0 Then
Tam :=y
Else
x := x - (x Div y) * y;
If y > x Then
If (y Mod x) = 0 Then
Tam := x
Else
y := y-(y div x) * x;
Until (Tam <> 0);
USCLN := Tam;
End;
Begin
If TuSo = 0 Then
Begin
MauSo := 1;
Dau := 0;
Exit;
End;
u := USCLN(TuSo, MauSo);
TuSo := TuSo Div u;
MauSo := MauSo Div u;
End;
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Unit VeHinh;
INTERFACE
TYPE
Location = OBJECT
X,Y : Integer;
Constructor Init(InitX,InitY : Integer);
Function GetX : Integer;
Function GetY : Integer;
End;
Pointptr = ^Point;
Point = OBJECT(Location)
Visible : Boolean;
Constructor Init(InitX,InitY : Integer);
Destructor Done; Virtual;
Procedure Show; Virtual;
Procedure Hide; Virtual;
Function IsVisible : Boolean;
Procedure MoveTo(NewX,NewY :Integer);
Procedure Drag(DragBy : Integer); Virtual;
End;
CirclePtr =^Circle;
Circle = OBJECT(Point)
Radius : Integer;
Constructor Init(InitX,InitY,InitRadius : Integer);
Procedure Show; Virtual;
Procedure Hide; Virtual;
procedure Expand(ExpandBy : Integer); Virtual;
Procedure ConStract(ConstractBy : Integer); Virtual;
End;
IMPLEMENTATION
Uses Graph, Crt;
{CAI DAT LOCATION}
{-----------------------------------}
Constructor Location.Init;
Begin
X := InitX;
Y := InitY;
End;
{-----------------------------------}
Function Location.GetX;
Begin
GetX := X;
End;
{-----------------------------------}
Function Location.GetY;
Begin
GetY := Y;
End;
{-----------------------------------}
{CAI DAT POINT}
{-----------------------------------}
Constructor Point.Init;
Begin
Location.Init(initX,InitY);
Visible := False;
End;
{-----------------------------------}
Destructor Point.Done;
Begin
Hide;
End;
{-----------------------------------}
Procedure Point.Show;
Begin
Visible := True;
PutPixel(X,Y,GetColor);
End;
{-----------------------------------}
Procedure Point.Hide;
Begin
Visible := False;
PutPixel(X,Y,GetBkColor);
End;
{-----------------------------------}
Function Point.IsVisible;
Begin
IsVisible := Visible;
End;
{-----------------------------------}
Procedure Point.MoveTo;
Begin
Hide;
X := NewX;
Y := NewY;
Show;
End;
{-----------------------------------}
Function GetDelta(Var DeltaX,DeltaY : Integer): Boolean;
Var
KeyChar : Char;
Quit : Boolean;
Result : Boolean;
Begin
DeltaX := 0;
DeltaY := 0;Result := True;
Repeat
KeyChar := ReadKey;
Quit := True;
If KeyChar = #0 then
KeyChar := ReadKey;
Case KeyChar Of
#72 : DeltaY := -1; { Mui ten len}
#80 : DeltaY := 1; { Mui ten xuong }
#75 : DeltaX :=-1; {Mui ten trai }
#77 : DeltaX := 1; { Mui ten phai }
#27 : Result := False {Phim Esc }
Else
Quit := False;
End;
Until Quit;
GetDelta :=Result;
End;
{-----------------------------------}
Procedure Point.Drag;
Var
DeltaX,DeltaY : Integer;
FigureX,FigureY : Integer;
Begin
Show;
FigureX := GetX;
FigureY := GetY;
While GetDelta(DeltaX,DeltaY) Do
Begin
Inc(FigureX,DeltaX*DragBy);
Inc(FigureY,DeltaY*DragBy);
MoveTo(FigureX,FigureY);
End;
End;
{-----------------------------------}
{ CAI DAT CIRCLE}
{-----------------------------------}
Constructor Circle.Init;
Begin
Point.Init(InitX,InitY);
Radius := InitRadius;
End;
{-----------------------------------}
Procedure Circle.Show;
Begin
Visible := True;
Graph.Circle(X,Y,Radius);
End;
{-----------------------------------}
Procedure Circle.Hide;
Var
TempColor : Word;
Begin
TempColor := Graph.GetColor;
Graph.SetColor(GetBkColor);
Visible := False;
Graph.Circle(X,Y,Radius);
Graph.SetColor(TempColor);
End;
{-----------------------------------}
Procedure Circle.Expand;
Begin
Hide;
Inc(Radius, ExpandBy);
If Radius < 0 Then
Radius := 0;
Show;
End;
{-----------------------------------}
Procedure Circle.Constract;
Begin
Expand(-ConstractBy);
End;
END.
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
(-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-H?t=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-)
Profession_jamy- Ma cấp II
- Tổng số bài gửi : 132
Join date : 25/10/2010
Age : 44
Đến từ : Tamky
Tin k9-NBK Quảng Nam :: Học tập :: Tin :: Kiến Thức
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết