You are on page 1of 5

LAB 01: MT S THAO TC TRN TH

MC TIU
Hon tt bi thc hnh ny, sinh vin c th: Biu din th bng ma trn k. Kim tra tnh hp l ca ma trn, Kim tra th v hng Thc hin 1 s thao tc n gin trn th.

Thi gian thc hnh: t 120 pht n 400 pht

TM TT
Ma trn k l cu trc d liu thng c s dng trong mn l thuyt th biu din mt n th. Mt gi tr a[i,j] trong ma trn (dng i ct j ca ma trn A) ng trng s ca cung a(i, j) trong th. Mt gi tr c bit c s dng cho phn t a[i, j] (thng l 0) cho bit khng c cung a(i, j) trong th.
1 1 2 2 1 -3 4 3 thi c hng 4 2 2 5 thi v hng 2 2 1 -3 2 2 4

Theo nh ngha trn th th c i vi th v hng, ta s c gi tr a[i, j] = a[j, i] (xem nh c hai hng trn s c ma trn k l cung c hng u(i, j) v u(j, j) trong thj). Ma trn k ca th v hng trn l: 1 2 3 4 1 2 3 4 5 1 0 0 1 2 1 0 2 0 4 0 2 2 0 -3 0 2 2 0 -3 1 2 3 0 0 0 4 3 0 -3 0 2 2 4 0 0 0 0 4 4 1 2 0 0 5 0 2 2 0 0

Nhn xt: ng cho chnh trong th c g tr 0 (do trong th khng c khuyn) Trong mt s bi ton ta khng quan tm n trng s ca th m ch quan tm l c tn ti mt cung u(i, j) trong th hay khng. i vi trng hp ny, ta s dng gi tr 1 cho a[i, j] ch ra s tn ti ca cung a(i, j). Trang
Ti liu hng dn thc hnh mn L thuyt th HCMUS 2010

NI DUNG THC HNH C bn


Sinh vin c k pht biu bi tp v thc hin theo hng dn: Cho mt file text c cu trc nh sau: Dng u tin cha s nguyn n, cho bit s nh ca th n dng tip theo, mi dng cha n s nguyn ng vi cc phn t trong ma trn k.

Xy dng lp GRAPH cho i tng th. Vit hm khi to t 1 file text cha ma trn k ca th. Kim tra tnh hp l ca do th va khi to. Kim tra xem th c v hng hay khng? Phn tch - biu din ma trn k, ta dng mt mng (kiu nguyn hay thc ty vo yu cu bi). Nh vy lp GRAPH c t nht 2 thuc tnh nh sau
#define MAX 100 class GRAPH { public: GRAPH(char* fname); ~GRAPH(void); }

Thao tc cn thc hin: Khi to ma trn t file, Kim tra tnh hp l ca ma trn, Kim tra th v hng.

Chng trnh mu dothi.txt


4 0 2 0 0 0 0 0 0 1 -3 0 0 2 0 4 0

GRAPH.h
#include "stdio.h" #pragma once #define MAX 100

GRAPH.cpp
Ti liu hng dn thc hnh mn L thuyt th HCMUS 2010

Trang

class GRAPH { public: GRAPH(char* fname); ~GRAPH(void); private: int n;// so dinh cua do thi int a[MAX][MAX];// ma tran ke public: void XuatDoThi(void); bool KiemTraDoThiHopLe(void); bool KiemTraDoThiVoHuong(void); };

#include "GRAPH.h" GRAPH::GRAPH(char* filename) { FILE* f; f = fopen(filename, "rt"); if (f == NULL){ //Cch x l nu m file b li y l g? n=0; return; } fscanf(f, "%d", &n); int i, j; for (i=0; i<n; i++){ for (j=0; j<n; j++){ fscanf(f, "%d", &a[i][j]); //Nu trng s l s thc th sao? } } fclose(f); } GRAPH::~GRAPH(void) { } void GRAPH::XuatDoThi(void) { printf("%d\n", n); int i, j; for (i=0; i<n; i++){ for (j=0; j<n; j++){ printf( "%d\t", a[i][j]); } printf( "\n", a[i][j]); } } bool GRAPH::KiemTraDoThiHopLe(void) { //Cho bit ngha thao tc sau if(n<=0){ //iu kin ny c chnh xc cha? return false; } //iu kin ma trn hp l l g? int i; for (i=0; i<n; i++){ if (a[i][i] != 0){ return false; } } return true; } bool GRAPH::KiemTraDoThiVoHuong(void) { int i, j; for (i=0; i<n; i++){ // Cho bit ngha 2 vng for ny. for (j=0; j<n; j++){ Ti liu hng dn thc hnh mn L thuyt th HCMUS 2010

Trang

if (a[i][j] != a[j][i]){ return false; } } } return true; }

LTDT.cpp
#include "GRAPH.h" void main() { GRAPH g("dothi.txt"); if(g.KiemTraDoThiHopLe()){ g.XuatDoThi(); } else{ printf("Do thi khng hop le"); } if(g.KiemTraDoThiVoHuong()){ printf("Do thi vo huong.\n"); } else{ printf("Do thi co huong.\n"); } }

Yu cu 1. Bin dch on chng trnh nu trn. 2. Cho khi to th t tp tin dothi1.txt c ni dung m t th th 2 phn tm tt l thuyt. Cho bit kt qu xut ra mn hnh. 3. Gii thch ngha cc hm trong chng trnh mu v chi tit tng dng lnh.

p dng Nng cao


1. Thm phng thc m s lng cnh ca th. H.D: Phn bit 2 trng hp th c hng v v hng. 2. Thm phng thc in ra bc ca tng nh. H.D: Bc ca 1 nh trong th v hng l tng s cc cnh k vi nh . Khuyn c tnh 2 ln. Bc na ngoi/trong ca 1 nh trong trong th hu hng l s cnh i ra/vo nh . Tng na bc ngoi v trong ca nh l bc ca nh. 3. Thm phng thc m s lng nh bc chn. 4. Thm phng thc m s lng nh bc l. 5. Thm phng thc m s lng nh treo. H.D: nh treo l nh c bc bng 1. H.D: nh c lp l nh c bc bng 0.
Ti liu hng dn thc hnh mn L thuyt th HCMUS 2010

Trang

6. Thm phng thc m s lng nh c lp.

BI TP THM
1. Ci tin hm bool KiemTraDoThiVoHuong(void) 2. Vit li chng trnh cho php kim tra tnh hp l ca ma trn trc khi khi to. Nu phng n x l cho trng hp file nhp liu khng hp l. 3. Biu din th bng ma trn lin thuc. Vit hm chuyn i gia 2 loi ma trn (cc trng hp thng thng). Vit cc thao tc x l tng ng. Nhn xt u v khuyt im ca 2 cch biu din. 4. Mt cch biu din th khc l biu din bng danh sch nh k, thng c dng cho trng hp th t cnh. Mi nh s c 1 danh sch cc nh k ca n. V d:

Ci t cch biu din trn. Vit hm khi to t ma trn k. Vit cc thao tc x l tng ng. Nhn xt u v khuyt im ca cc ny so vi 2 cch biu din bng ma trn.

Ti liu hng dn thc hnh mn L thuyt th HCMUS 2010

Trang

You might also like