You are on page 1of 27

BI TP CU TRC D LIU V GII THUT

tuanduy018@gmail.com http://phantuanduy.blogspot.com

Bi 1 (Chng 2: Cu trc DL mng)


qun l thng tin cc sinh vin mt lp gm n sinh vin ngi ta s dng kiu mng 1 chiu trong thng tin v mt sinh vin gm: h tn, ngy sinh, qu qun, gii tnh, dtb hc tp. Vit chng trnh: a) To lp gi tr cho cc sinh vin. b) In danh sch sinh vin ca lp. c) In danh sch cc sinh vin c hc bng (dtb >=8) d) Nhp vo tn 1 sinh vin, tm xem sinh vin c tn ti khng, nu c th in ra cc thng tin tng ng, ngc li thng bo khng tm thy. e) Sp xp danh sch theo th t gim dn dtb.

Chng trnh:
program qlsv_mang; type sinhvien=record ten:string[30]; ngaysinh:string[10]; quequan:string[30]; gioitinh:string[3]; dtb:real; end; mang=array[1..100] of sinhvien; chuoi=string[30]; var a:mang; p,n,i,j:integer; x:chuoi; procedure Khoitao(var a:mang; n:integer); begin for i:=1 to n do begin writeln(nhap thong tin sinh vien thu ,i); write(' ho ten: '); readln(a[i].ten); write(' ngay sinh: '); readln(a[i].ngaysinh); write(' que quan: '); readln(a[i].quequan); write(' gioi tinh: '); readln(a[i].gioitinh); write(' diem trung binh: '); readln(a[i].dtb); end; end; procedure Xuat(a:mang;n:integer); begin for i:=1 to n do writeln(a[i].ten,' ',a[i].ngaysinh, ,a[i].quequan, ,a[i].gioitinh, ,a[i].dtb:0:2); end; procedure DSHB(a:mang;n:integer); begin for i:=1 to n do if (a[i].dtb>=8) then writeln(a[i].ten,' ',a[i].ngaysinh, ,a[i].quequan, ,a[i].gioitinh, ,a[i].dtb:0:2); http://phantuanduy.blogspot.com Page 1

end; function Timkiem(a:mang;x:chuoi):integer; var p:integer; begin p:=0; for i:=1 to n do if (a[i].ten=x) then begin p:=i; break; end; Timkiem:=p; end; procedure Sapxepgiam(var a:mang;n:integer); var t:sinhvien; begin for i:=1 to n-1 do for j:=i+1 to n do if (a[i].dtb<a[j].dtb) then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end; end; BEGIN Writeln(Nhap so luong sinh vien); readln(n); Khoitao(a,n); Writeln(danh sach sinh vien cua lop); Xuat(a,n); writeln('Danh sach sinh vien co hoc bong:'); DSHB(a,n); write('nhap ho ten sinh vien can tim: '); readln(x); p:=timkiem(a,x); if (p<>0) then begin writeln(Thong tin cua sinh vien tim duoc); writeln(a[p].ten,' ',a[p].ngaysinh, ,a[p].quequan, ,a[p].gioitinh, end else write(' khong tim thay hoc sinh co ten nay'); sapxepgiam(a,n); writeln(danh sach sinh vien sau khi sap xep); xuat(a,n); readln; END.

,a[p].dtb:0:2);

Bi 2: (Chng 3- Danh sch k tip)


qun l thng tin cc sinh vin mt lp ngi ta s dng cu trc d liu danh sch k tip trong thng tin v mt sinh vin gm: h tn, ngy sinh, qu qun, gii tnh, dtb hc tp. Vit chng trnh cho php: a) Nhp vo thng tin cho cc sinh vin. Qu trnh nhp dng li khi nhp vo tn sinh vin bng rng. b) In danh sch cc sinh vin c hc bng (dtb >=8)
http://phantuanduy.blogspot.com Page 2

c) Nhp vo tn 1 sinh vin, tm xem sinh vin c tn ti khng, nu c th lu li v tr p ca sinh vin d trong danh sch, ngc li thng bo khng tm thy. d) Xa sinh vin va tm thy ra khi danh sch.

Chng trnh:
program qlsv_dsketiep; type sinhvien=record ten:string[30]; ngaysinh:string[10]; quequan:string[30]; gioitinh:string[3]; dtb:real; end; mang=array[1..100] of sinhvien; chuoi=string[30]; var L:mang; p,n,i:integer; x:chuoi; procedure Khoitao(var L:mang; var n:integer); var hoten:string[30]; begin n:=0; repeat write('nhap ho ten sv ',n+1,': '); readln(hoten); if (hoten<>'') then begin inc(n); L[n].ten:=hoten; write(' ngay sinh: '); readln(L[n].ngaysinh); write(' que quan: '); readln(L[n].quequan); write(' gioi tinh: '); readln(L[n].gioitinh); write(' diem trung binh: '); readln(L[n].dtb); end; until (hoten=''); end; procedure DSHB(L:mang;n:integer); begin for i:=1 to n do if (L[i].dtb>=8) then writeln(L[i].ten,' ',L[i].ngaysinh, ,L[i].quequan, ,L[i].gioitinh, end; function Timkiem(L:mang;x:chuoi):integer; var p:integer; begin p:=0; for i:=1 to n do if (L[i].ten=x) then begin p:=i; break; end; http://phantuanduy.blogspot.com

,L[i].dtb:0:2);

Page 3

Timkiem:=p; end; procedure Xoa(var L:mang;var n:integer;p:integer); begin for i:=p to n do L[i]:=L[i+1]; dec(n); end; BEGIN Khoitao(L,n); writeln('Danh sach sinh vien co hoc bong:'); DSHB(L,n); write('nhap ho ten sinh vien can tim: '); readln(x); p:=timkiem(L,x); if (p<>0) then begin writeln('Sinh vien can tim co chi so: ',p); Xoa(L,n,p); writeln('danh sach sinh vien moi:'); for i:=1 to n do writeln(' ',L[i].ten); end else write(' khong tim thay hoc sinh co ten nay'); readln; END.

Bi 3: (Chng 3- Danh sch lin kt)


qun l thng tin cc sinh vin mt lp ngi ta s dng cu trc d liu danh sch lin kt trong thng tin v mt sinh vin gm: h tn, ngy sinh, qu qun, gii tnh, dtb hc tp. Vit chng trnh cho php: a) Nhp vo thng tin cho cc sinh vin. Qu trnh nhp dng li khi nhp vo tn sinh vin bng rng. b) In danh sch sinh vin va nhp. c) In danh sch cc sinh vin c hc bng (dtb >=8) d) Nhp vo tn 1 sinh vin, tm xem sinh vin c tn ti khng, nu c th in thng tin ca sinh vin ra, ngc li thng bo khng tm thy. e) Xa sinh vin va tm thy ra khi danh sch(nu tm thy). In danh sch sinh vin sau khi xa. Xy dng chng trnh theo 3 kiu danh sch lin kt n, kp, vng.

Chng trnh theo danh sch lin kt n


program SV_DON; type point=^sinhvien; chuoi=string[30]; sinhvien=record ht:chuoi; ns:string[10]; gt:string[3]; qq:string[20]; dtb:real; next:point; end; http://phantuanduy.blogspot.com Page 4

var p,q,first:point; tensv:chuoi; procedure Khoitao(var first:point); var hoten:chuoi; begin first:=nil; repeat write(' Nhap ho ten: ');readln(hoten); if (hoten<>'') then begin new(p); p^.ht:=hoten; write('Nhap ngay sinh: ');readln(p^.ns); write('Nhap gioi tinh: ');readln(p^.gt); write('Nhap que quan: ');readln(p^.qq); write('Nhap diem trung binh: ');readln(p^.dtb); p^.next:=nil; if (first=nil)then first:=p else begin q:=first; while (q^.next<>nil) do q:=q^.next; q^.next:=p; end; end; until hoten=''; end; procedure Xuat(first:point); begin p:=first; while (p<>nil) do begin writeln(p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.qq:5,' ',p^.dtb:3:1); p:=p^.next; end; end; procedure DSHB(first:point); begin p:=first; while (p<>nil) do begin if (p^.dtb>=8) then writeln(p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.qq:5,' ',p^.dtb:3:1); p:=p^.next; end; end; function Timkiem(first:point;tensv:chuoi):point; var q:point; begin p:=first; q:=nil; while (p<>nil) do http://phantuanduy.blogspot.com Page 5

if (p^.ht=tensv) then begin q:=p; break; end else p:=p^.next; Timkiem:=q; end; procedure Loaibo(var first:point;p:point); begin if first=nil then writeln('Danh sach rong') else begin if(p=first) then begin first:=p^.next; dispose(p); end else begin q:=first; while(q^.next<>p) do q:=q^.next; q^.next:=p^.next; dispose(p); end; end; end; BEGIN Khoitao(first); writeln('Danh sach sinh vien vua nhap: '); xuat(first); writeln('Danh sach hoc bong'); DSHB(first); write('Nhap vao ten sinh vien: '); readln(tensv); p:=Timkiem(first,tensv); if (p<>nil) then begin writeln('Thong tin sinh vien tim thay'); writeln(p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.qq:5,' ',p^.dtb:3:1); Loaibo(first,p); writeln(' Danh sach sinh vien sau khi xoa'); xuat(first); end else writeln('Khong tim thay sinh vien nay'); readln; END.

Chng trnh theo danh sch lin kt kp


program SV_KEP; http://phantuanduy.blogspot.com Page 6

type point=^sinhvien; chuoi=string[30]; sinhvien=record ht:chuoi; ns:string[10]; gt:string[3]; qq:string[20]; dtb:real; next:point; pre:point; end; var p,q,first,last:point; tensv:chuoi; procedure Khoitao(var first,last:point); var hoten:chuoi; begin first:=nil; last:=nil; repeat write(' Nhap ho ten: ');readln(hoten); if (hoten<>'') then begin new(p); p^.ht:=hoten; write('Nhap ngay sinh: ');readln(p^.ns); write('Nhap gioi tinh: ');readln(p^.gt); write('Nhap que quan: ');readln(p^.qq); write('Nhap diem trung binh: ');readln(p^.dtb); p^.next:=nil; if (first=nil)then begin first:=p; last:=p; p^.pre:=nil; end else begin last^.next:=p; p^.pre:=last; last:=p; end; end; until hoten=''; end; procedure Xuat(first,last:point); begin p:=first; while (p<>nil) do begin writeln(p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.qq:5,' ',p^.dtb:3:1); p:=p^.next; end; end; http://phantuanduy.blogspot.com Page 7

procedure DSHB(first,last:point); begin p:=first; while (p<>nil) do begin if (p^.dtb>=8) then writeln(p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' p:=p^.next; end; end; function Timkiem(first,last:point;tensv:chuoi):point; var q:point; begin p:=first; q:=nil; while (p<>nil) do if (p^.ht=tensv) then begin q:=p; break; end else p:=p^.next; Timkiem:=q; end; procedure Loaibo(var first,last:point;p:point); begin if first=nil then writeln('Danh sach rong') else if(first=last) then begin first:=nil; last:=nil; dispose(p); end else if (p=first) then begin first:=first^.next; first^.pre:=nil; dispose(p); end else if (p=last) then begin last:=last^.pre; last^.next:=nil; dispose(p); end else begin (p^.pre)^.next:=p^.next; (p^.next)^.pre:=p^.pre; dispose(p); end; end; http://phantuanduy.blogspot.com

',p^.qq:5,' ',p^.dtb:3:1);

Page 8

BEGIN Khoitao(first,last); writeln('Danh sach sinh vien vua nhap: '); xuat(first,last); writeln('Danh sach hoc bong'); DSHB(first,last); write('Nhap vao ten sinh vien: '); readln(tensv); p:=Timkiem(first,last,tensv); if (p<>nil) then begin writeln('Thong tin sinh vien tim thay'); writeln(p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.qq:5,' ',p^.dtb:3:1); Loaibo(first,last,p); writeln(' Danh sach sinh vien sau khi xoa'); xuat(first,last); end else writeln('Khong tim thay sinh vien nay'); readln; END.

Chng trnh theo danh sch lin kt vng


program SV_V; type point=^sinhvien; chuoi=string[30]; sinhvien=record ht:chuoi; ns:string[10]; gt:string[3]; qq:string[20]; dtb:real; next:point; end; var p,q,head:point; tensv:chuoi; procedure Khoitao(var head:point); var hoten:chuoi; begin new(head); head^.next:=head; repeat write('Nhap ho ten: ');readln(hoten); if (hoten<>'') then begin new(p); p^.ht:=hoten; write('Nhap ngay sinh: ');readln(p^.ns); write('Nhap gioi tinh: ');readln(p^.gt); write('Nhap que quan: ');readln(p^.qq); write('Nhap diem trung binh: ');readln(p^.dtb); p^.next:=head; http://phantuanduy.blogspot.com Page 9

if (head^.next=head)then head^.next:=p else begin q:=head; while (q^.next<>head) do q:=q^.next; q^.next:=p; end; end; until hoten=''; end; procedure Xuat(head:point); begin p:=head^.next; while (p<>head) do begin writeln(p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' p:=p^.next; end; end; procedure DSHB(head:point); begin p:=head^.next; while (p<>head) do begin if (p^.dtb>=8) then writeln(p^.ht:3,' ',p^.ns:3,' p:=p^.next; end; end; function Timkiem(head:point;tensv:chuoi):point; var q:point; begin p:=head^.next; q:=nil; while (p<>head) do if (p^.ht=tensv) then begin q:=p; break; end else p:=p^.next; Timkiem:=q; end; procedure Loaibo(var head:point;p:point); begin if (head^.next=head) then writeln('Danh sach rong') else begin q:=head; while (q^.next<>p) do q:=q^.next; http://phantuanduy.blogspot.com

',p^.qq:5,' ',p^.dtb:3:1);

',p^.gt:3,'

',p^.qq:5,' ',p^.dtb:3:1);

Page 10

q^.next:=p^.next; dispose(p); end; end; BEGIN Khoitao(head); writeln('Danh sach sinh vien vua nhap: '); xuat(head); writeln('Danh sach hoc bong'); DSHB(head); write('Nhap vao ten sinh vien: '); readln(tensv); p:=Timkiem(head,tensv); if (p<>nil) then begin writeln('Thong tin sinh vien tim thay'); writeln(p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.qq:5,' ',p^.dtb:3:1); Loaibo(head,p); writeln(' Danh sach sinh vien sau khi xoa'); xuat(head); end else writeln('Khong tim thay sinh vien nay'); readln; END.

Bi 4 (Chng 4 Cy nh phn tm kim)


qun l ha n tin gi ti mt qu tit kim. ngi ta s dng cu trc d liu cy nh phn tm kim, trong mi ha n bao gm cc thng tin sau: s hiu ha n, tn ngi gi tin, s lng tin gi, ngy gi. Vit chng trnh cho php: 1, Khi to danh sch ha n v chn ha n mi vo tng ng. Qu trnh nhp dng li khi nhp vo s hiu ha n bng 0. 2, In ra danh sch ha n theo th t tng dn s hiu ha n (LNR) 3, In ra danh sch ha n theo th t gim dn s hiu ha n (RNL) Chng trnh:
program caynp; type point=^hoadon; hoadon=record sh:integer; ht:string[30]; st:real; ng:string[10]; left:point; right:point; end; var p,q,r,T:point; procedure Khoitao(var T:point); var sohieu:integer; begin T:=nil;
http://phantuanduy.blogspot.com Page 11

repeat write('Nhap so hieu: ');readln(sohieu); if (sohieu<>0) then begin new(r); r^.sh:=sohieu; write('Nhap ten nguoi gui: ');readln(r^.ht); write('Nhap so tien: ');readln(r^.st); write('Nhap ngay gui: ');readln(r^.ng); r^.left:=nil; r^.right:=nil; p:=T; while (p<>nil) and (p^.sh<>r^.sh) do begin q:=p; if (p^.sh<r^.sh) then p:=p^.right else p:=p^.left; end; if (p<>nil) and (p^.sh=r^.sh) then begin writeln('du lieu vua nhap khong chen duoc'); exit; end; if (T=nil) then T:=r else if (q^.sh>r^.sh) then q^.left:=r else q^.right:=r; end; until sohieu=0; end; procedure Xuattang(T:point); begin if (T<>nil) then begin Xuattang(T^.left); writeln(T^.sh,' ',T^.ht,' ',T^.st:3:3,' ',T^.ng); Xuattang(T^.right); end; end; procedure Xuatgiam(T:point); begin if (T<>nil) then begin Xuatgiam(T^.right); writeln(T^.sh,' ',T^.ht,' ',T^.st:3:3,' ',T^.ng); Xuatgiam(T^.left); end;
http://phantuanduy.blogspot.com Page 12

end; BEGIN Khoitao(T); writeln('Danh sach hoa don tang dan: '); xuattang(T); writeln('Danh sach hoa don giam dan: '); xuatgiam(T); readln; END.

Bi 5 (Chng 3 Danh sch lin kt)


qun l thng tin cc sinh vin mt lp ngi ta s dng cu trc d liu danh sch lin kt (bi ny ch xt DSLK n v kp) trong thng tin v mt sinh vin gm: m sinh vin, h tn, ngy sinh, qu qun, gii tnh, dtb hc tp, xp loi. Vit chng trnh cho php: a) Nhp vo thng tin cho cc sinh vin. Qu trnh nhp dng li khi nhp vo tn sinh vin bng rng. b) In danh sch cc sinh vin. c) In danh sch cc sinh vin n. d) In danh sch cc sinh vin ngoi tnh. e) In danh sch cc sinh vin gii v xut sc. f) Nhp vo tn 1 sinh vin v tn 1 lp, tm xem c sinh vin c tn nhp vo trong lp khng, nu c in ra thng tin sinh vin , ngc li thng bo khng tm thy. g) Nhp vo t bn phm h s 1 sinh vin mi. B sung sinh vin vo sau sinh vin u tin c qu qun l Hu, nu khng c sinh vin no c qu qun l Hu th b sung vo cui danh sch. h) Nhp vo t bn phm tn ca 1 lp, loi b tt c sinh vin ca lp ra khi danh sch. In ra danh sch sinh vin mi. i) Sp xp danh sch sinh vin theo th t gim dn im trung bnh. In ra danh sch sinh vin mi. j) Nhp vo t bn phm h s ca mt sinh vin mi. Chn sinh vin vo danh sch hin ti m khng lm thay i th t sp xp.

Chng trnh vit theo danh sch lin kt n


program QLSV_DON; type point=^sinhvien; chuoi30=string[30]; chuoi10=string[10]; sinhvien=record msv:chuoi10; ht:chuoi30; ns:chuoi10; gt:string[3]; qq:string[20]; sdt:string[11]; lop:chuoi10; dtb:real; xl:chuoi10; next:point; end; var p,q,first:point; tensv:chuoi30; tenlop:chuoi10;

http://phantuanduy.blogspot.com

Page 13

svmoi:sinhvien; procedure Khoitao(var first:point); var hoten:chuoi30; begin first:=nil; repeat write(' Ma sinh vien: ');readln(hoten); if (hoten<>'') then begin new(p); p^.msv:=hoten; write(' Ho ten: ');readln(p^.ht); write(' Ngay sinh: ');readln(p^.ns); write(' Gioi tinh: ');readln(p^.gt); write(' Que quan: ');readln(p^.qq); write(' So dien thoai: ');readln(p^.sdt); write(' Lop: ');readln(p^.lop); write(' Diem trung binh: ');readln(p^.dtb); if (p^.dtb>=9) then p^.xl:='xuat sac' else if (p^.dtb>=8) then p^.xl:='gioi' else if (p^.dtb>=6.5) then p^.xl:='kha' else if (p^.dtb>5) then p^.xl:='trung binh' else if (p^.dtb>3.5) then p^.xl:='yeu' else p^.xl:='kem'; p^.next:=nil; if (first=nil)then first:=p else begin q:=first; while (q^.next<>nil) do q:=q^.next; q^.next:=p; end; end; until hoten=''; end; procedure Xuat(first:point); begin p:=first; while (p<>nil) do begin writeln(p^.msv:3,' ',p^.ht:3,' ',p^.ns:3,' ',p^.xl:3); p:=p^.next; end; end; procedure XuatNu(first:point); begin p:=first; while (p<>nil) do begin if (p^.gt='nu') then

',p^.gt:3,'

',p^.qq:5,'

',p^.sdt:5,'

',p^.lop:3,'

',p^.dtb:3:1,'

http://phantuanduy.blogspot.com

Page 14

writeln(p^.msv:3,' ',p^.xl:3); p:=p^.next; end;

',p^.ht:3,'

',p^.ns:3,'

',p^.gt:3,'

',p^.qq:5,'

',p^.sdt:5,'

',p^.lop:3,'

',p^.dtb:3:1,'

end; procedure Xuatnt(first:point); begin p:=first; while (p<>nil) do begin if (p^.qq<>'hue') then writeln(p^.msv:3,' ',p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.xl:3); p:=p^.next; end; end; procedure Xuatgioi_xs(first:point); begin p:=first; while (p<>nil) do begin if (p^.dtb>=8) then writeln(p^.msv:3,' ',p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.xl:3); p:=p^.next; end; end; function Timkiem(first:point;tensv:chuoi30;tenlop:chuoi10):point; var q:point; begin p:=first; q:=nil; while (p<>nil) do if (p^.ht=tensv) and (p^.lop=tenlop) then begin q:=p; break; end else p:=p^.next; Timkiem:=q; end; procedure Bosung(var first:point;svmoi:sinhvien); begin p:=first; while (p^.next<>nil) do if (p^.qq='hue') then break else p:=p^.next; new(q); q^.msv:=svmoi.msv; q^.ht:=svmoi.ht; q^.ns:=svmoi.ns; q^.gt:=svmoi.gt; q^.qq:=svmoi.qq; q^.sdt:=svmoi.sdt; q^.lop:=svmoi.lop; q^.dtb:=svmoi.dtb; q^.xl:=svmoi.xl; if (first=nil) then begin

',p^.qq:5,'

',p^.sdt:5,'

',p^.lop:3,'

',p^.dtb:3:1,'

',p^.qq:5,'

',p^.sdt:5,'

',p^.lop:3,'

',p^.dtb:3:1,'

http://phantuanduy.blogspot.com

Page 15

q^.next:=nil; first:=q; end else begin q^.next:=p^.next; p^.next:=q; end; end; procedure Loaibo(var first:point;tenlop:chuoi10); begin if first=nil then writeln('Danh sach rong') else begin p:=first; while (p<>nil) do begin if p^.lop=tenlop then begin if(p=first) then begin first:=p^.next; dispose(p); end else begin q:=first; while(q^.next<>p) do q:=q^.next; q^.next:=p^.next; dispose(p); end; end; p:=p^.next; end; end; end; procedure sapxepgiam(var first:point); var t:sinhvien; begin p:=first; while(p^.next<>nil) do begin q:=p^.next; while(q<>nil) do begin if(p^.dtb<q^.dtb) then begin t.msv:=p^.msv; t.ht:=p^.ht; t.ns:=p^.ns; t.gt:=p^.gt; t.qq:=p^.qq; t.sdt:=p^.sdt; t.lop:=p^.lop; t.dtb:=p^.dtb; t.xl:=p^.xl;

http://phantuanduy.blogspot.com

Page 16

p^.msv:=q^.msv; p^.ht:=q^.ht; p^.ns:=q^.ns; p^.gt:=q^.gt; p^.qq:=q^.qq; p^.sdt:=q^.sdt; p^.lop:=q^.lop; p^.dtb:=q^.dtb; p^.xl:=q^.xl; q^.msv:=t.msv; q^.ht:=t.ht; q^.ns:=t.ns; q^.gt:=t.gt; q^.qq:=t.qq; q^.sdt:=t.sdt; q^.lop:=t.lop; q^.dtb:=t.dtb; q^.xl:=t.xl; end; q:=q^.next; end; p:=p^.next; end; end; procedure Chen(var first:point;svmoi:sinhvien); begin p:=first; while p^.next<>nil do if svmoi.dtb<=(p^.next)^.dtb then p:=p^.next else break; new(q); q^.msv:=svmoi.msv; q^.ht:=svmoi.ht; q^.ns:=svmoi.ns; q^.gt:=svmoi.gt; q^.qq:=svmoi.qq; q^.sdt:=svmoi.sdt; q^.lop:=svmoi.lop; q^.dtb:=svmoi.dtb; q^.xl:=svmoi.xl; if (first=nil) then begin q^.next:=nil; first:=q; end else if (p=first) then begin q^.next:=first; first:=q; end else begin q^.next:=p^.next; p^.next:=q; end; end; procedure nhapsv(var svmoi:sinhvien);

http://phantuanduy.blogspot.com

Page 17

begin writeln('Nhap thong tin sinh vien moi:'); write(' Nhap ma sinh vien: ');readln(svmoi.msv); write(' Nhap ho ten: ');readln(svmoi.ht); write(' Nhap ngay sinh: ');readln(svmoi.ns); write(' Nhap gioi tinh: ');readln(svmoi.gt); write(' Nhap que quan: ');readln(svmoi.qq); write(' Nhap so dien thoai: ');readln(svmoi.sdt); write(' Nhap lop: ');readln(svmoi.lop); write(' Nhap diem trung binh: ');readln(svmoi.dtb); if (svmoi.dtb>=9) then svmoi.xl:='xuat sac' else if (svmoi.dtb>=8) then svmoi.xl:='gioi' else if (svmoi.dtb>=6.5) then svmoi.xl:='kha' else if (svmoi.dtb>5) then svmoi.xl:='trung binh' else if (svmoi.dtb>3.5) then svmoi.xl:='yeu' else svmoi.xl:='kem'; end; BEGIN writeln('-------Bat dau nhap du lieu--------'); Khoitao(first); writeln('Ket thuc qua trinh nhap du lieu'); writeln('-----------------------------------'); writeln('Danh sach sinh vien vua nhap: '); xuat(first); writeln('-----------------------------------'); writeln('Danh sach sinh vien nu: '); xuatNu(first); writeln('-----------------------------------'); writeln('Danh sach sinh vien ngoai tinh: '); xuatnt(first); writeln('-----------------------------------'); writeln('Danh sach sinh vien gioi xuat sac: '); xuatgioi_xs(first); writeln('-----------------------------------'); write('Nhap vao ten sinh vien: '); readln(tensv); write('Nhap vao ten lop: '); readln(tenlop); p:=Timkiem(first,tensv,tenlop); if (p<>nil) then begin writeln('Thong tin sinh vien tim thay'); writeln(p^.msv:3,' ',p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.qq:5,' ',p^.sdt:5,' end else writeln('Khong tim thay sinh vien nay'); writeln('-----------------------------------'); nhapsv(svmoi); Bosung(first,svmoi); writeln('-----------------------------------'); writeln('Danh sach sinh vien moi sau khi them:'); xuat(first); writeln('-----------------------------------'); write('Nhap vao ten lop can xoa: '); readln(tenlop); Loaibo(first,tenlop);

',p^.lop:3,' ',p^.dtb:3:1,'

',p^.xl:3);

http://phantuanduy.blogspot.com

Page 18

writeln('-----------------------------------'); writeln('Danh sach sinh vien moi:'); xuat(first); writeln('-----------------------------------'); sapxepgiam(first); writeln('Danh sach sinh vien moi sau khi sap xep:'); xuat(first); writeln('-----------------------------------'); nhapsv(svmoi); Chen(first,svmoi); writeln('-----------------------------------'); writeln('Danh sach sinh vien moi sau khi chen:'); xuat(first); readln; END.

Chng trnh vit theo danh sch lin kt kp


program QLSV_Kep; type point=^sinhvien; chuoi30=string[30]; chuoi10=string[10]; sinhvien=record msv:chuoi10; ht:chuoi30; ns:chuoi10; gt:string[3]; qq:string[20]; sdt:string[11]; lop:chuoi10; dtb:real; xl:chuoi10; next:point; pre:point; end; var p,q,first,last:point; tensv:chuoi30; tenlop:chuoi10; svmoi:sinhvien; procedure Khoitao(var first,last:point); var hoten:chuoi30; i:integer; begin first:=nil; last:=nil; i:=1; repeat writeln('Nhap thong tin sinh vien thu ',i,':'); write(' Ma sinh vien: ');readln(hoten); if (hoten<>'') then begin new(p); p^.msv:=hoten; write(' Ho ten: ');readln(p^.ht); write(' Ngay sinh: ');readln(p^.ns); write(' Gioi tinh: ');readln(p^.gt); write(' Que quan: ');readln(p^.qq); write(' So dien thoai: ');readln(p^.sdt); write(' Lop: ');readln(p^.lop); write(' Diem trung binh: ');readln(p^.dtb); if (p^.dtb>=9) then

http://phantuanduy.blogspot.com

Page 19

p^.xl:='xuat sac' else if (p^.dtb>=8) then p^.xl:='gioi' else if (p^.dtb>=6.5) then p^.xl:='kha' else if (p^.dtb>=5) then p^.xl:='trung binh' else if (p^.dtb>=3.5) then p^.xl:='yeu' else p^.xl:='kem'; p^.next:=nil; if (first=nil)then begin p^.pre:=nil; first:=p; last:=p; end else begin last^.next:=p; p^.pre:=last; last:=p; end; end; i:=i+1; until hoten=''; end; procedure Xuat(first,last:point); begin p:=first; while (p<>nil) do begin writeln(p^.msv:3,' ',p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.xl:3); p:=p^.next; end; end; procedure XuatNu(first,last:point); begin p:=first; while (p<>nil) do begin if (p^.gt='nu') then writeln(p^.msv:3,' ',p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.xl:3); p:=p^.next; end; end; procedure Xuatnt(first,last:point); begin p:=first; while (p<>nil) do begin if (p^.qq<>'hue') then writeln(p^.msv:3,' ',p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.xl:3); p:=p^.next; end;

',p^.qq:5,'

',p^.sdt:5,'

',p^.lop:3,'

',p^.dtb:3:1,'

',p^.qq:5,'

',p^.sdt:5,'

',p^.lop:3,'

',p^.d tb:3:1,'

',p^.qq:5,'

',p^.sdt:5,'

',p^.lop:3,'

',p^.d tb:3:1,'

http://phantuanduy.blogspot.com

Page 20

end; procedure Xuatgioi_xs(first,last:point); begin p:=first; while (p<>nil) do begin if (p^.dtb>=8) then writeln(p^.msv:3,' ',p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.xl:3); p:=p^.next; end; end; function Timkiem(first,last:point;tensv:chuoi30;tenlop:chuoi10):point; var q:point; begin p:=first; q:=nil; while (p<>nil) do if (p^.ht=tensv) and (p^.lop=tenlop) then begin q:=p; break; end else p:=p^.next; Timkiem:=q; end; procedure Bosung(var first,last:point;svmoi:sinhvien); begin p:=first; while (p^.next<>nil) do if (p^.qq='hue') then break else p:=p^.next; new(q); q^.msv:=svmoi.msv; q^.ht:=svmoi.ht; q^.ns:=svmoi.ns; q^.gt:=svmoi.gt; q^.qq:=svmoi.qq; q^.sdt:=svmoi.sdt; q^.lop:=svmoi.lop; q^.dtb:=svmoi.dtb; q^.xl:=svmoi.xl; if (first=nil) then begin q^.next:=nil; q^.pre:=nil; first:=q; last:=q; end else if (p=last) then begin q^.next:=p^.next; q^.pre:=p; p^.next:=q; last:=q; end else begin

',p^.qq:5,'

',p^.sdt:5,'

',p^.lop:3,'

',p^.dtb:3:1,'

http://phantuanduy.blogspot.com

Page 21

q^.next:=p^.next; p^.next:=q; q^.pre:=p; (q^.next)^.pre:=q; end; end; procedure Loaibo(var first,last:point;tenlop:chuoi10); begin if first=nil then writeln('Danh sach rong') else begin p:=first; while (p<>nil) do begin if p^.lop=tenlop then begin if(first=last) then begin first:=nil; last:=nil; dispose(p); end else if (p=first) then begin first:=first^.next; first^.pre:=nil; dispose(p); end else if (p=last) then begin last:=last^.pre; last^.next:=nil; dispose(p); end else begin (p^.pre)^.next:=p^.next; (p^.next)^.pre:=p^.pre; dispose(p); end; end; p:=p^.next; end; end; end; procedure sapxepgiam(first,last:point); var t:sinhvien; begin p:=first; while(p^.next<>nil) do begin q:=p^.next; while(q<>nil) do begin if(p^.dtb<q^.dtb) then begin t.msv:=p^.msv;

http://phantuanduy.blogspot.com

Page 22

t.ht:=p^.ht; t.ns:=p^.ns; t.gt:=p^.gt; t.qq:=p^.qq; t.sdt:=p^.sdt; t.lop:=p^.lop; t.dtb:=p^.dtb; t.xl:=p^.xl; p^.msv:=q^.msv; p^.ht:=q^.ht; p^.ns:=q^.ns; p^.gt:=q^.gt; p^.qq:=q^.qq; p^.sdt:=q^.sdt; p^.lop:=q^.lop; p^.dtb:=q^.dtb; p^.xl:=q^.xl; q^.msv:=t.msv; q^.ht:=t.ht; q^.ns:=t.ns; q^.gt:=t.gt; q^.qq:=t.qq; q^.sdt:=t.sdt; q^.lop:=t.lop; q^.dtb:=t.dtb; q^.xl:=t.xl; end; q:=q^.next; end; p:=p^.next; end; end; procedure Chen(var first,last:point;svmoi:sinhvien); begin p:=first; while p^.next<>nil do if svmoi.dtb<=(p^.next)^.dtb then p:=p^.next else break; new(q); q^.msv:=svmoi.msv; q^.ht:=svmoi.ht; q^.ns:=svmoi.ns; q^.gt:=svmoi.gt; q^.qq:=svmoi.qq; q^.sdt:=svmoi.sdt; q^.lop:=svmoi.lop; q^.dtb:=svmoi.dtb; q^.xl:=svmoi.xl; if (first=nil) then begin q^.next:=nil; q^.pre:=nil; first:=q; last:=q; end else if (p=first) then begin

http://phantuanduy.blogspot.com

Page 23

q^.next:=first; first^.pre:=q; first:=q; end else begin q^.next:=p^.next; q^.pre:=p; p^.next:=q; end; end; procedure nhapsv(var svmoi:sinhvien); begin writeln('Nhap thong tin sinh vien moi:'); write(' Nhap ma sinh vien: ');readln(svmoi.msv); write(' Nhap ho ten: ');readln(svmoi.ht); write(' Nhap ngay sinh: ');readln(svmoi.ns); write(' Nhap gioi tinh: ');readln(svmoi.gt); write(' Nhap que quan: ');readln(svmoi.qq); write(' Nhap so dien thoai: ');readln(svmoi.sdt); write(' Nhap lop: ');readln(svmoi.lop); write(' Nhap diem trung binh: ');readln(svmoi.dtb); if (svmoi.dtb>=9) then svmoi.xl:='xuat sac' else if (svmoi.dtb>=8) then svmoi.xl:='gioi' else if (svmoi.dtb>=6.5) then svmoi.xl:='kha' else if (svmoi.dtb>5) then svmoi.xl:='trung binh' else if (svmoi.dtb>3.5) then svmoi.xl:='yeu' else svmoi.xl:='kem'; end; BEGIN writeln('-------Bat dau nhap du lieu--------'); Khoitao(first,last); writeln('Ket thuc qua trinh nhap du lieu'); writeln('-----------------------------------'); writeln('Danh sach sinh vien vua nhap: '); xuat(first,last); writeln('-----------------------------------'); writeln('Danh sach sinh vien nu: '); xuatNu(first,last); writeln('-----------------------------------'); writeln('Danh sach sinh vien ngoai tinh: '); xuatnt(first,last); writeln('-----------------------------------'); writeln('Danh sach sinh vien gioi xuat sac: '); xuatgioi_xs(first,last); writeln('-----------------------------------'); write('Nhap vao ten sinh vien: '); readln(tensv); write('Nhap vao ten lop: '); readln(tenlop); p:=Timkiem(first,last,tensv,tenlop); if (p<>nil) then begin writeln('Thong tin sinh vien tim thay'); writeln(p^.msv:3,' ',p^.ht:3,' ',p^.ns:3,' ',p^.gt:3,' ',p^.qq:5,' ',p^.sdt:5,'

',p^.lop:3,' ',p^.dtb:3:1,'

',p^.xl:3);

http://phantuanduy.blogspot.com

Page 24

end else writeln('Khong tim thay sinh vien nay'); writeln('-----------------------------------'); nhapsv(svmoi); Bosung(first,last,svmoi); writeln('-----------------------------------'); writeln('Danh sach sinh vien moi sau khi them:'); xuat(first,last); writeln('-----------------------------------'); write('Nhap vao ten lop can xoa: '); readln(tenlop); Loaibo(first,last,tenlop); writeln('-----------------------------------'); writeln('Danh sach sinh vien moi:'); xuat(first,last); writeln('-----------------------------------'); sapxepgiam(first,last); writeln('Danh sach sinh vien moi sau khi sap xep:'); xuat(first,last); writeln('-----------------------------------'); nhapsv(svmoi); Chen(first,last,svmoi); writeln('-----------------------------------'); writeln('Danh sach sinh vien moi sau khi chen:'); xuat(first,last); readln; END.

Bi tp nh u t(gio trnh)
program nhadautu; type p_nhadautu=^dt; chuoi=string[30]; dt=record sohieu:chuoi; ten:chuoi; sotien:real; ngay:string[10]; next:p_nhadautu; end; var first,p,q:p_nhadautu; hoten:chuoi; ndt:dt; procedure Khoitao(var first:p_nhadautu); var sh:string[30]; begin first:=nil; repeat write('nhap so hieu nha dau tu: ');readln(sh); if (sh<>'') then begin new(p); p^.sohieu:=sh; write('nhap ten: ');readln(p^.ten); write('nhap so luong tien dau tu: ');readln(p^.sotien); write('nhap ngay tham gia: ');readln(p^.ngay); p^.next:=nil; if first=nil then first:=p else

http://phantuanduy.blogspot.com

Page 25

begin q:=first; while q^.next<>nil do q:=q^.next; q^.next:=p; end; end; until sh=''; end; function Timkiem(first:p_nhadautu;x:chuoi):p_nhadautu; begin p:=first; q:=nil; while p<>nil do if p^.ten=x then begin q:=p; break; end else p:=p^.next; timkiem:=q; end; procedure sapxep(var first:p_nhadautu); var t:dt; begin p:=first; while p^.next<>nil do begin q:=p^.next; while q<>nil do begin if p^.sotien<q^.sotien then begin t.sohieu:=p^.sohieu; t.ten:=p^.ten; t.sotien:=p^.sotien; t.ngay:=p^.ngay; p^.sohieu:=q^.sohieu; p^.ten:=q^.ten; p^.sotien:=q^.sotien; p^.ngay:=q^.ngay; q^.sohieu:=t.sohieu; q^.ten:=t.ten; q^.sotien:=t.sotien; q^.ngay:=t.ngay; end; q:=q^.next; end; p:=p^.next; end; writeln(' danh sach sap xep giam theo so tien'); p:=first; while p<>nil do begin writeln(p^.sohieu,' ',p^.ten,' ',p^.ngay,' ',p^.sotien:0:2); p:=p^.next; end;

http://phantuanduy.blogspot.com

Page 26

end; procedure Chen(var first:p_nhadautu;ndt:dt); begin p:=first; while p<>nil do if ndt.sotien<=p^.sotien then break else p:=p^.next; new(q); q^.sohieu:=ndt.sohieu; q^.ten:=ndt.ten; q^.sotien:=ndt.sotien; q^.ngay:=ndt.ngay; if (first=nil) then begin q^.next:=nil; first:=q; end else begin q^.next:=p^.next; p^.next:=q; end; end; BEGIN Khoitao(first); write('nhap ho ten nha dau tu can tim: ');readln(hoten); p:= timkiem(first,hoten) if p<>nil then begin writeln('thong tin nha dau tu tim duoc'); writeln(p^.sohieu,' ',p^.ten,' ',p^.sotien:0:2,' ',p^.ngay) end else writeln('khong tim thay'); sapxep(first); writeln('nhap ho so nha dau tu moi'); write('nhap so hieu: ');readln(ndt.ten); write('nhap ten: ');readln(ndt.ten); write('nhap so luong tien dau tu: ');readln(ndt.sotien); write('nhap ngay tham gia: ');readln(ndt.ngay); Chen(first,ndt); writeln(' danh sach moi cap nhat'); p:=first; while p<>nil do begin writeln(p^.sohieu,' ',p^.ten,' ',p^.ngay,' ',p^.sotien:0:2); p:=p^.next; end; readln; END.

http://www.tuanduy.co.cc/

http://phantuanduy.blogspot.com

Page 27

You might also like