Chú thích của bạn đây:
Nhưng hình như bài này hơi có vấn đề mình đã sửa lại rồi không biết có đúng với ý tưởng của bạn không?
Code:
Program Tinh_luong;
USES CRT;
TYPE
ConTro = ^Banghi;
BanGhi = RECORD
HoLot : String[17];
Ten : String[7];
Bl,Pc,Tlinh : LongInt;
Next : ConTro;
End;
VAR
First, Newp, Head : ConTro;{Khai báo Last hình như là hơi nhầm}
Ch : Char;
i : Integer;
HeapTop : ^Integer;
Begin
ClrScr;
GotoXY(5,25);
Writeln('Bam <Esc> de thoat, bam<Enter> de tiep tuc nhap');
Window(1,1,80,24);
Writeln('MINH HOA CACH VIET CHUONG TRINH KIEU CON TRO');
Writeln('--------------------------------------------');
First := NIL;
Mark(HeapTop);
i := 0;
Repeat
i := i + 1;
New(Newp);
With Newp^ Do
Begin
Write('-Ho lot cua nguoi thu: ',i:2,' la: ');
Readln(HoLot);
Write('-Ten cua nguoi nay la: ');
Readln(Ten);
Write('-Bac luong cua nguoi nay la: ');
Readln(Bl);
Write('-Phu cap cua nguoi nay la: ');
Readln(Pc);
Tlinh := Trunc(Bl * 102.27) + Pc;
End;
{Đoạn này để kiểm tra nhập cho lần đầu tiên thôi. Nếu là lần đầu thì nhập vào first}
If First = NIL Then
begin
First := Newp;
Head := Newp;
end;
Else
First^.Next := Newp;{Chỗ này phải là First mới đúng}
{Hết đoạn kiểm tra}
First := Newp;{Khởi tạo lại để tiếp tục tạo danh sách liên kết động}
First^.Next := NIL;
Ch := ReadKey;
Until Ch = #27;
Writeln;
ClrScr;
Writeln('DANH SACH LINH LUONG');
Writeln('--------------------');
First := Nil;
First := Head;
While First <> NIL Do
With First^ Do
Begin
Writeln('+Ho ten: ',HoLot,' ',Ten);
Writeln('+Bac luong : ',Bl);
Writeln('+Phu cap : ',Pc);
Writeln('+Duoc linh : ',Tlinh:8,' dong');
First := Next;
Writeln;
End;
Release(HeapTop);
Writeln;
Writeln(' Bam <Enter> de ket thuc');
Readln
End .
Nói thật sao bạn lại học pascal nhỉ!
Mình chúa ghét nó luôn. Đặc biệt là phần con trỏ của nó tối nghĩa kinh không như C++ đâu đọc khó chịu lắm.