Chào bạn! Rất vui vì bạn đã vào thăm blog của tôi: -)

Danh sách bài đã đăng

Sửa Đóng
program TuDienNhoAnhViet; {Bui The Tam}
uses crt;
type str20=string[20];
     str60=string[60];
     str80=string[80];
     kieuConTro=^kieuTuMoRong;
     kieuTuMoRong=record
                    Tu        : str20;
                    Nghia     : str60;
                    Trai,Phai : kieuConTro;
                  end;
var  NewWord : str20;
     Mean    : str60;
     Goc     : kieuConTro;
     TuDien  : Text;
     dong    : str80;
     ch      : char;
(*------------------------------------------------------------------------*)
procedure DungCay(var ConTro:kieuConTro);
begin
  if ConTro=Nil then
    begin
      New(ConTro); ConTro^.Tu:=NewWord; ConTro^.Nghia:=Mean;
      ConTro^.Trai:=Nil; ConTro^.Phai:=Nil;
    end
  else {ConTro da dang chi vao mot o nho co du lieu}
    if NewWord
    else
      if NewWord>ConTro^.Tu then DungCay(ConTro^.Phai)
end;
(*------------------------------------------------------------------------*)
procedure DuyetNutGiua(ConTro:kieuConTro);
  procedure XuLy(ConTro:kieuConTro);
  begin
    textColor(14); write(ConTro^.Tu,'':21-length(ConTro^.Tu));
    textColor(15); writeln(ConTro^.nghia);
  end;
begin
  if ConTro<>Nil then
    begin
      DuyetNutGiua(ConTro^.Trai);
      XuLy(ConTro);
      DuyetNutGiua(ConTro^.Phai);
    end;
end;
(*------------------------------------------------------------------------*)
procedure Load;
var ok : boolean;
    i,L : byte;
begin
  assign(TuDien,'TUDIEN.DOC');
  {$I-} reset(TuDien);
  if IOResult=0 then
    begin
      repeat
        readln(TuDien,dong);
        i:=pos(':',dong); L:=length(dong);
        NewWord:=copy(dong,1,i-1);
        Mean:=copy(dong,i+1,L-i);
        DungCay(Goc);
      until eof(TuDien);
      close(TuDien);
    end
  else
    writeln('TuDien TuDien.Doc chua ton tai... Ban phai Nhap vai tu da!');
  {$I+}
end;
procedure Save;
var ok : boolean;
    procedure DuyetChep(ConTro:kieuConTro);
    begin
      if ConTro<>Nil then
        begin
          DuyetChep(ConTro^.Trai);
          writeln(TuDien,ConTro^.Tu,':',ConTro^.nghia);
          DuyetChep(ConTro^.Phai);
        end;
    end;
begin
  if (Goc^.Tu='') or (Goc=Nil) then writeln('Khong co gi ma luu ca!')
  else
    begin
      assign(TuDien,'TUDIEN.DOC');
      rewrite(TuDien);
      DuyetChep(Goc);
      close(TuDien);
      writeln('TuDien.doc da duoc cap nhat!');
    end;
  writeln('Go Esc de thoat!');
  repeat until readkey=#27
end;
(*------------------------------------------------------------------------*)
procedure Nhap;
var stt:word;
begin
  stt:=0;
  writeln('Ban nhap tu va nghia. Tu nghia bo trong de thoat!');
  repeat
    write('Ten moi  = '); readln(NewWord);
    while (NewWord[1]=' ') and (length(NewWord)>0) do delete(NewWord,1,1);
    if NewWord='' then break;
    write('Nghia la = '); readln(Mean);
    while (Mean[1]=' ') and (length(Mean)>0) do delete(Mean,1,1);
    if Mean='' then break;
    DungCay(Goc);
    stt:=stt+1;
  until false;
  writeln('Da them ',stt,' tu moi vao tu dien... Go Esc de thoat!');
  repeat until readkey=#27;
end;
(*------------------------------------------------------------------------*)
procedure Xuat;
begin
  window(1,1,80,1); textAttr:=31; ClrScr;
  write('':30,'TU DIEN ANH - VIET');
  window(1,25,80,25); textAttr:=7*16; ClrScr;
  write('Theo su chi dan cua chuong trinh.');
  window(1,2,80,24); textAttr:=15; ClrScr;
  if (Goc^.Tu='') or (Goc=Nil) then writeln('Khong co gi ma xuat ca!')
  else DuyetNutGiua(Goc);
  writeln('Go Esc de thoat!');
  repeat until readkey=#27;
end;
(*------------------------------------------------------------------------*)
BEGIN
  textmode(c80);
  textAttr:=31;
  ClrScr;
  writeln('VI DU VE DU LIEU HINH CAY - TU DIEN,...');
  Goc:=Nil;
  Load;
  write('Chon cong viec: Nhap du lieu, Xuat du lieu hay Thoat?-(N,X,T) ');
  repeat ch:=upcase(readkey) until ch in ['N','X','T',#27];
  gotoxy(1,wherey); ClrEol;
  case ch of
    'N':Nhap;
    'X':Xuat;
  end;
  Save;
END.
 

R H
G S
B V

#