Exemplo n.º 1
0
void affiche_parcours_largeur(tGraphe graphe, tNumeroSommet num_sommet, int first)
{
	tNumeroSommet current_voisin;
	tTabCouleurs tab_couleurs;
	int i, nb_sommets, voisins;

	char *argv[3];
	argv[0] = "evince";
	argv[1] = output;
	argv[2] = NULL;
/*
	char *argv[3];
	argv[0] = "evince";
	argv[1] = output;
	argv[2] = NULL;
*/
/*
  DFS (graphe G, sommet s)
{
  Marquer(s);
  POUR CHAQUE élément s_fils de Voisins(s) FAIRE
     SI NonMarqué(s_fils) ALORS
       DFS(G,s_fils);
     FIN-SI
  FIN-POUR
}
*/
	graphe2visu(graphe, output, tab_couleurs);
	switch(fork()){
		case 0 :
			if (execvp(argv[0], argv) == -1)
				halt("Error evince");
			exit(EXIT_SUCCESS);
	}
	if(first){
		nb_sommets = grapheNbSommets(graphe);
		if(verbose)
			printf("Nb sommets : %d\n", nb_sommets);
		for(i = 0 ; i < nb_sommets; i++){
			tab_couleurs[i] = BLEU;
		}
	}
	tab_couleurs[num_sommet] = ROUGE;
	if(verbose)
		printf("Sommet %d marqué ROUGE \n", num_sommet);

	voisins = grapheNbVoisinsSommet(graphe, num_sommet);
	if(verbose)
		printf("Nombre de voisins du sommet %d : %d\n", num_sommet, voisins);
	for(i = 0 ; i<voisins ; i++){
		current_voisin = grapheVoisinSommetNumero(graphe, num_sommet, i);
		if(verbose)
			printf("Voisin courant : %d\n", current_voisin);
		sleep(2);
		if(tab_couleurs[current_voisin] == BLEU)
			affiche_parcours_largeur(graphe, current_voisin, 0);
	}
}
Exemplo n.º 2
0
int main(int argc, char *argv[]) {

tGraphe graphe;

  if (argc<3) {
    halt("Usage : %s FichierGraphe %s Outfile\n", argv[0],argv[1]);
  }

  graphe = grapheAlloue();
  grapheChargeFichier(graphe, argv[1]);
  
  graphe2visu(graphe,argv[2]);

  grapheLibere(graphe);

  exit(EXIT_SUCCESS);
}
Exemplo n.º 3
0
int main(int argc, char** argv)
{
	if (argc<2)
    	halt("Usage : %s FichierGraphe\n", argv[0]);

	/* creation du graph et allocation memoire */
	tGraphe graphe = grapheAlloue();
	/* creation du fichier grp (argv[1] ne doi pas contenir l'extention) */
	char grpfile[80] = "";
	strcat(grpfile,argv[1]);
	strcat(grpfile,".grp");
	
	/* on charge dans le graphe le fichier passer en param */
	grapheChargeFichier(graphe,grpfile);
	
	/* on appelle la methode ki creer le .ps apartir du .grp en passant par un .dot */
	graphe2visu(graphe,argv[1]);
	
	/* on free le graphe */
	grapheLibere(graphe);
	return 1;
}
Exemplo n.º 4
0
void affiche_parcours_largeur(tGraphe graphe, tNumeroSommet num_sommet)
{
    tFileSommets file;
    tNomSommet nom_sommet;
    tNumeroSommet current_voisin;
    tTabCouleurs tab_couleurs;
    int i, nb_sommets, voisins;
    char *argv[3];
    argv[0] = "evince";
    argv[1] = output;
    argv[2] = NULL;

    switch(fork()) {
    case -1:
        perror("fork");
        exit(EXIT_FAILURE);
    case 0 :
        execvp(argv[0], argv);
        halt("Error evince");
        exit(EXIT_FAILURE);
    default:
        file = fileSommetsAlloue();
        nb_sommets = grapheNbSommets(graphe);
        if(verbose)
            printf("Nb sommets : %d\n", nb_sommets);
        for(i = 0 ; i < nb_sommets; i++) {
            tab_couleurs[i] = BLEU;
        }

        fileSommetsEnfile(file, num_sommet);
        tab_couleurs[num_sommet] = VERT;
        grapheRecupNomSommet(graphe, num_sommet, nom_sommet);
        printf("Sommet %s empilé\n", nom_sommet);
        graphe2visu(graphe, output, tab_couleurs);

        sleep(2);
        while(!fileSommetsEstVide(file)) {

            voisins = grapheNbVoisinsSommet(graphe, num_sommet);
            if(verbose)
                printf("Nb voisins : %d\n", voisins);

            for(i = 0; i < voisins; i++) {
                current_voisin = grapheVoisinSommetNumero(graphe, num_sommet, i);
                if(tab_couleurs[current_voisin] == BLEU ) {
                    fileSommetsEnfile(file, current_voisin);
                    tab_couleurs[current_voisin] = VERT;
                    grapheRecupNomSommet(graphe, current_voisin, nom_sommet);
                    printf("Sommet %s empilé\n", nom_sommet);
                    graphe2visu(graphe, output, tab_couleurs);
                    sleep(2);
                }
                if(verbose)
                    printf("voisin num %d\n", current_voisin);
            }
            tab_couleurs[num_sommet] = ROUGE;
            num_sommet = fileSommetsDefile(file);
            grapheRecupNomSommet(graphe, num_sommet, nom_sommet);
            if(verbose)
                printf("Sommet %s depilé\n", nom_sommet);
            graphe2visu(graphe, output, tab_couleurs);
            sleep(2);

        }
        fileSommetsLibere(file);


        wait(NULL);
    }



}