[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]
Last modified on December 9th, 2020 at 1:17 am
N.Nguyen99
N.Nguyen99
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 \