Commit cfb678d9 authored by Valentin MEUNIER's avatar Valentin MEUNIER
Browse files

representation graphviz

parent fcf931fd
......@@ -49,6 +49,39 @@ void affiche_graph(int ** mat, int n)
}
fprintf(fichier, "}");
fclose(fichier);
system("dot -Tpng graph1.dot -o graph1.png");
system("display graph1.png &");
}
void affiche_graph2(int **mat,int * tab, int n)
{
FILE *fichier;
fichier=fopen("graph_co.dot","w");
if (fichier==NULL)
printf("echec de louverture du fichier\n");
else
fprintf(fichier,"graph Nom{\n");
for (int i=0; i<n ;i++)
{
fprintf(fichier,"%d",tab[i]);
fprintf(fichier,";");
for (int j=0; j<i; j++)
{
if (mat[tab[i]][tab[j]]==1)
{
fprintf(fichier,"%d",tab[i]);
fprintf(fichier,"--");
fprintf(fichier,"%d",tab[j]);
fprintf(fichier,";");
}
}
}
fprintf(fichier, "}");
fclose(fichier);
system("dot -Tpng graph_co.dot -o graph_co.png");
system("display graph_co.png");
}
void partition_connexe(partition_t* part, int ** mat,int n)
......@@ -66,6 +99,10 @@ int main()
mat= creer_mat(10);
remplir_mat(mat,10);
partition_t * part=creer(10);
int liste_classe[10];
int liste_part[10];
int nbpart;
int nbel;
/* for (int i=0; i<10 ;i++)
{
for (int j=0; j<i; j++)
......@@ -77,9 +114,21 @@ int main()
partition_connexe(part,mat,10);
affiche_part(part, 10);
system("dot -Tpng graph1.dot -o graph1.png");
system("dot -Tpng graph_part.dot -o graph_part.png");
system("display graph1.png &");
system("display graph_part.png &");
nbpart=system("display graph_part.png &");
nbpart=lister_partition(part,10,liste_part);
for (int i=0;i<nbpart;i++)
{
nbel=lister_classe_naif(part,liste_part[i],10,liste_classe);
for (int j=0; j<nbel; j++)
{
printf("%d ",liste_classe[j]);
}
printf("\n");
affiche_graph2(mat,liste_classe,nbel);
}
return 0;
}
......@@ -15,5 +15,7 @@ void affiche_graph(int ** mat, int n);
void partition_connexe(partition_t *,int **,int);
void affiche_graph2(int ** mat, int *,int n);
int main();
#endif
......@@ -40,14 +40,19 @@ void fusion(int indice1, int indice2, partition_t * part)
}
}
void lister_classe_naif(partition_t * part, int etiquette, int n)
int lister_classe_naif(partition_t * part, int etiquette, int n, int * tab)
{
int j=0;
for (int i=0; i<n; i++)
if (recuperer_classe(i,part)==etiquette)
printf("%d ",i);
{
tab[j]=i;
j+=1;
}
return j;
}
void lister_partition(partition_t * part,int n, int * nbclasse,int * tab)
int lister_partition(partition_t * part,int n,int * tab)
{
int j=0;
for (int i=0; i<n; i++)
......@@ -58,7 +63,7 @@ void lister_partition(partition_t * part,int n, int * nbclasse,int * tab)
j+=1;
}
}
*nbclasse=j;
return j;
}
void affiche_part(partition_t * part, int n)
......
......@@ -17,8 +17,8 @@ typedef struct partition
partition_t * creer(int n);
int recuperer_classe(int indice, partition_t * part);
void fusion(int indice1, int indice2, partition_t * part);
void lister_classe_naif(partition_t * part, int etiquette, int n);
void lister_partition(partition_t * part,int n,int *,int *);
int lister_classe_naif(partition_t * part, int etiquette, int n,int *);
int lister_partition(partition_t * part,int n,int *);
void affiche_part(partition_t * part, int);
#endif
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment