MISSION1- PROJECT1 CHNG TRNH C GHI FILE BIU DIN TH .DOT
Ging vin hng dn : TS. Nguyn c Minh Nhm thc hin : Nguyn Vn Lm 20111714 Nguyn Vn Mnh 20111835 L Vn Phong 20112645 Phng Tn Cng 20111233 Ng Trung Kin 20111719 H Ni, 4/2014
1 Mc lc:
1. Gii thiu chng trnh..2 a) Tng quan...2 b) Nghin cu cc phng php c..2 2. Ci t h thng.4 a) H iu hnh Ubuntu OS (suse).4 b) Ci dt gcc, g++5 c) Ci t emacs6 3. L thuyt.7 a) n li lp trnh hng i tng c++7 b) Makefile..7 4. Thit k9 a) Xy dng cu trc d liu...9 i. Lp lu node ii. Lp lu cnh iii. D liu cnh ni b) Thut ton ghi file c) Thut ton c file 5. Thut ton BFS v DFS..15
2 1. Gii thiu chng trnh a) Tng quan: Chng trnh c ghi file biu din th .dot
Kch bn s dng: - Ghi file: nhp thng tin th, s node, thuc tnh node, s cnh, thuc tnh cnh..., chng trnh x l lu vo cu trc d liu sau xut ra file .dot. - c file: vi u vo file .dot, chng trnh x l file v xut ra file nh. b) Cc chng trnh c: GVEdit
3
Kgraphviewer:
Xdot
4 2. Ci t h thng a) H iu hnh Ubuntu( hoc suse) Ci t ubuntu bng wubi l n gin v thun tin cho vic s dng nht do c th dng song song vi h iu hnh khc. Truy nhp http://www.ubuntu.com/download/desktop Chn bn ph hp vi cu hnh:
Sau khi ti v v bt u ci t
Chn install inside windows, tip tc ci thit t thng s ri ci bnh thng.
5
b) Ci t gcc g++ Gcc l GNU C Compiler( trnh dch C ca GNU) l 1 tp hp cc trnh dch c thit k cho nhiu ngn ng lp trnh khc nhau. Gcc l trnh dch chnh thc ca h thng GNU v c hu ht h iu hnh ging Unix, bao gm Linux, dng h iu hnh BSD v Mac os x chn lm trnh dch tiu chun. Gcc tng thch vi nhiu nn tng kin trc my tnh a dng, c s dng rng ri nh 1 coongn c lm mi trng pht trin cc phn mm thng mi. Kim tra phin bn gcc: m terminal bng t hp Ctrl+ Alt+ t, g gcc -v
Tip tc kim tra g++: g g++ -v
6
c) Ci t emacs Emacs l trnh son tho vn bn a chc nng. y l phn mm m ngun m( phn mm t do), chy c trn nhiu h iu hnh v c th m rng thm vo chc nng mi. Emacs ph bin trong gii lp trnh my tnh v ngi dng my tnh thng tho k thut.
7 3. L thuyt. a) n li lp trnh hng i tng c++.
C++ l 1 loi ngn ng lp trnh. y l 1 dng ngn ng a mu hnh t do c kiu tnh v h tr lp trnh th tc, d liu tru tng, lp trnh hng i tng, v lp trnh a hnh. C 3 c trng:
1. S ng Gi L s lien kt cc hm (phng thc ) trong c s lien kt cu trc d liu thao tc d liu. S ng gi ny trong C++ cng nh mt s ngn ng lp trnh hng i tng khc c thc hin bng kiu d liu mi. l kiu lp.
2. S Tha K Cho php chng ta c tha hng nhng lp c, ging nh chng ta c th tha hng nhng g cha m li, chng ta cng c th to them nhng tnh cht mi cho cc lp c s dng. Trong C++ nhng lp c trc c gi l lp c s, nhng lp m rng c gi l lp dn xut.
3. S a Hnh C th hiu l chng ta c th gn mt tn hoc mt k hiu cho mt hm ( phng thc ) v tn ny c th dng cho ton th h nu nh hm ( phng thc ) ny c th p dng c.
b) Makefile 1. Gii thiu v Makefile Tin ch make xem xt mt cch t ng nhng phn trong mt chng trnh ln cn c bin dich, v a ra nhng command tin hnh bin dch li chng. y, chng ta ni n GNU make, m c thc hin
8 bi Richard Stallman v Roland MccGrath. S pht trin k t version 3.76 c thc hin bi Paul D. Smith. V d ca chng ta ch ra mt chng trnh C, bi l chng l ph bin, nhng bn c th s dng make bt k ngn ng no m compiler c th chy vi shell command. Thc vy, make khng gii hn ti cc ngn ng, Bn c th s dng n miu t bt k cng vic no ni m mt s file phi c cp nht t ng t bt k s thay i no. chun b cho vic s dng make, bn phi vit mt file gi l makefile m miu t mi quan h gia cc files trong chng trnh v cung cp cc command (lnh) cho vic cp nht mi file. Trong mt chng trnh, thng thng , file c th chy c c cp nht t cc object files, m c to ra bi bin dch cc files chng trnh ngun.
2. Khi nim Makefile l mt file c nh ng c bit s dng to ra mt kch bn bin i chng trnh m ngun thnh cc chng trnh chy c (executable program). Kt hp vi tin ch make ca GNU gip chng ta qun l project mt cch d dng.
3. Cch chy Makefile - c th chy makefile s dng command sau trong Ternimal Make - Chng trnh s tm kim trong th mc hin ti mt file c tn t ng l makefile or Makefile. Trong trng hp bn mun ch r s gi mt file vi tn khc v d my_makefile, s dng ty chn f make f my_makefile Kt qu chy makefile s tr v 1 trong 3 gi tr 0 nu nh thnh cng 2 nu nh c li 1 nu nh bn s dng ty chn q thng bo l file cha c cp nht
9 4. Thit k a) Cu trc d liu
Code chng trnh ghi file dot
#include<iostream> using namespace std; #include<string.h> #include<stdio.h> #include<fstream> const int SIZE=15;
// thuat toan ghi file int thuat_toan_ghi_file(char ten[30],NODE N[SIZE],CANH M[200],int _n,int _m){ //trong do N la mang chua cac NODE, M la mang chua cac canh //_n so node, _m so canh ofstream file(ten,ios::out); int i; char digraph[10]; cout<<"nhap ten digraph: "; cin>>digraph; file<<"digraph "<<digraph<<"{"<<endl; for(i=1;i<=_n;i++){ file<<N[i].name<<" ["; if(N[i].style!="null") file<<",style="<<N[i].style;
// ham main int main(){ NODE N[SIZE]; // list luu node int n,i,m; cout<<"Nhap vao so node: "; cin>>n;
13 for(i=1;i<=n;i++) nhap_node(N[i],i);
CANH M[200]; //mang cau truc, moi phan tu la thong tin ve canh cout<<"Nhap so luong canh: "; cin>>m; cout<<"Nhap thong tin canh:\n "; for(i=1;i<=m;i++){ cout<<"canh "<<i<<":\n"; nhap_canh(M[i]); }
//ok. let do it char file[30]; cout<<"Nhap file .dot muon ghi: "; cin>>file; thuat_toan_ghi_file(file,N,M,n,m); cin.get(); return 0; }
14 Chy th
Sau khi chy chng trnh, ghi ra c file dot
15
Hnh m bng xdot
16 5) THUT TON DFS V BFS a) TM KIM THEO CHIU SU (Depth First Search-DFS) 1. THUT TON B1: Xut pht t 1 nh cho trc no B2: X l nh ny v nh du khng x l li B3: a tt c cc nh k vi n vo danh sch x l v chn 1 nh x l k tip B4: Quay li bc 2 n khi khng cn nh no cha c x l th dng .. Phn tch S dng cu trc Stack, mng 1 chiu: Int danh_dau[maxV] Quy c: int danh_dau[i]=0 nh i cha c x l Int danh_dau[i]=1 inh i c x l 2. HM Void DFS(DOTHI g, int s) // s la dinh xuat phat { Int danh_dau[maxV]; Stack st; For(i=1;i<=g.nV;i++) danh_dau[i]=0; // khoi tao, chua dinh nao duoc xet Khoitao(st); // khoi tao stack Push(st,s); // dua s vao stack While(!isEmpty(st)) // khi stack chua rong { Int v=pop(st); //lay v ra khoi stack If(danh_dau[i]!=1) { Cout<<v<< ; Danh_dau[v]=1 ; For(i=g.nV ;i>=1 ;i--) If(!danh_dau[i]&&g.mtke[v][i])!=0) Push(st,v)
17 } } }
b)TM KIM THEO CHIU RNG(Breadth First Search - BFS) 1.THUT TON B1. Xut pht t 1 nh cho trc no . B2. X l nh ny v nh du khng x l ln sau. B3. a tt c cc nh k vi n vo danh sch x l v ln lt x l cc nh k vi nh ang xt B4. Quay li B2 cho n khi khng cn nh trong danh sch.
Phn tch: Dng cu trc Queue S dng mng nh du l mng 1 chiu: int danhdau[maxV]; Quy c: danhdau[i] = 0; nh i cha c xt danhdau[i] = 1; nh I c xt
2.HM void BFS(DOTHI g, int s) // s la dinh xuat phat { int danhdau[maxV]; Queue q; //Khoi tao for (int i = 1; i<=g.nV; i++) danhdau[i] = 0; // chua co dinh nao duoc xet Khoitao(q); // Khoi tao Queue // Bat dau Push(q,s); // Dua s vao Queue while (!isEmpty(q)) //Trong khi Queue chua rong
18 { int v = Pop (q); // Lay v ra khoi Queue if (danhdau[v] != 1) // Neu v chua xet { cout<<v<< ; danhdau[v] = 1; for (i=1; i<=g.nV; i++) if (!danhdau[v] && g.mtke[v][i] != 0) Push(q,v); }}}