[codes=c]#include<stdio.h>
#include<conio.h>
#define MAX 100
#define inputfile "C:/test.txt"
typedef struct GRAPH {
int n;
int a[MAX][MAX];
}DOTHI;
int docmatranke(char tenfile[100], DOTHI &g)
{
FILE *f;
f=fopen(tenfile,"rt");
if(f==NULL)
{
printf("khong mo duoc file\n");
return 0;
}
fscanf(f,"%d",&g.n);
for(int i=0;i<g.n;i++)
{
for(int j=0;j<g.n;j++)
{
fscanf(f,"%d",&g.a[i][j]);
}
}
fclose(f);
return 1;
}
void xuatmatranke(DOTHI g)
{
printf("so dinh cua do thi la %d\n",g.n);
printf("ma tran ke cua do thi la\n");
for(int i=0;i<g.n;i++)
{
printf("\t");
for(int j=0;j<g.n;j++)
{
printf("%d",g.a[i][j]);
}
printf("\n");
}
}
void ditimcacdinhlienthong(DOTHI g,int nhan[MAX],int i){
for(int j=0;j<g.n;j++)
{
if(g.a[i][j]!=0 && g.a[j]!=g.a[i])
{
nhan[j]=nhan[i];
ditimcacdinhlienthong(g,nhan,j);
}
}
}
void xetlienthong(DOTHI g){
int nhan[MAX];
int i;
for(i=0;i<g.n;i++)
nhan[i]=0;
int sothanhphanLT=0;
for(i=0;i<g.n;i++)
{
if(nhan[i]==0)
{
sothanhphanLT++;
nhan[i]=sothanhphanLT;
ditimcacdinhlienthong(g,nhan,i);
}
}
printf("so thanh phan lien thong la %d\n",sothanhphanLT);
for(i=1;i<=sothanhphanLT;i++)
{
printf("thanh phan lien thong thu %d gom cac dinh",i);
for(int j=0;j<g.n;j++)
{
if(nhan[j]==i) printf("%d",j);
printf("\n");
}
}
}
void main()
{
DOTHI g;
clrscr();
if(docmatranke(inputfile, g)==1)
{
printf("da lay thong tin do thi tu file thanh cong.\n\n");
xuatmatranke(g);
printf("bam 1 phim bat ky de bat dau xet tinh lien thong cua dot thi …\n\n");
getch();
xetlienthong(g);
}
getch();
}[/codes]
4 responses to “Ai giúp tớ bài này cái……sao chạy không được vậy à….?:D”
chạy chương trình nó cứ hiện là không mở dược file……mà tui đã có file rồi
ò, theo tui khai báo MAX là 10 thì nó chạy bình thường [emot]stupid[/emot]
Bạn dùng win ji`.nếu win7 thì bạn trong ổ đĩa C ban không luu tên file test.txt mà bạn chỉ lưu là test thui.file win7 tự định dạng cho bạn rồi.
bạn xem lại hàm ditimdinhlienthong, sửa câu lệnh if:
if(g.a[i][j]!=0 && g.a[j]!=g.a[i]) =>>>> if(g.a[i][j]!=0 && nhan[j]!=nhan[i])
Còn nếu bạn đã tạo file rồi mà ko mở đc file, thì bạn xem lại đường dẫn file, xem file của bạn có phải trong ổ đĩa C hay không, lưu ý dấu / và dấu \