예제 #1
0
int main (int argc, char *argv[]) {
  if(!argv[1]) {
    fprintf(stderr,"Parametre manquant\n\t1 : Fichier lut .cha\n");
    return 1;
  }


  FILE *f=fopen(argv[1],"r");

  if(!f) {
    fprintf(stderr,"Erreur ouverture fichier");
    return 1;
  }
  
  ListeChaine l;
  lecture_chaine(f,&l);

  Reseau r;
  r.nbNoeuds=0; r.LNoeuds=NULL;  r.LCommodites=NULL;
  recree_reseau(&l,&r);

  printf("Debut\n");
  printf("Long totale (avant) : %f\n", longueurTotale(&l));
  dijkListeGamma(&l, &r);
  printf("Long totale (après) : %f\n", longueurTotale(&l));

  fclose(f);
  return 0;
}
예제 #2
0
int main (int argc, char *argv[]) {
  if(!argv[1]) {
    fprintf(stderr,"Parametre manquant\n\t1 : Fichier lut .cha\n\t(opt)2 : Fichier de sauvegarde xfig\n\t(opt)3 : Fichier de sauvegarde xfig_dijkstra\n");
    return 1;
  }


   FILE *f=fopen(argv[1],"r");

  if(!f) {
    fprintf(stderr,"Erreur ouverture fichier");
    return 1;
  }
  
  ListeChaine l;
  lecture_chaine(f,&l);

  Reseau r;
  r.nbNoeuds=0; r.LNoeuds=NULL;  r.LCommodites=NULL;
  recree_reseau(&l,&r);


  double dist[r.nbNoeuds], etats[r.nbNoeuds];
  int pere[r.nbNoeuds], arrivee=r.nbNoeuds-1;
  printf("Debut\n");
  dijkstra(0, arrivee, dist, etats, pere, &r); 

  int i;
  for(i=0;i<r.nbNoeuds;i++)
    printf("%.2f\t", dist[i]);

  if(argv[2] && argv[3]) {
    FILE 
      *fig=fopen(argv[2],"w"), 
      *figdijk=fopen(argv[3],"w");
    ecrit_reseau_xfig(&r, fig, 5, 2);

    ecrit_reseau_xfig(&r, figdijk, 5, 2);
    dijkstra_xfig(figdijk, &r, 5, 2, arrivee, pere);
  }

  printf("\n%.2f\nFini\n", dist[arrivee]);


  fclose(f);
  return 0;
}
예제 #3
0
int main (int argc, char *argv[]) {
  if(!argv[1] || !argv[2]) {
    fprintf(stderr,"Parametre manquant\n\t1 : Fichier lut .cha\n\t2 : Fichier de sauvegarde .res\n\t3 : Facultatif : emplacement de sauvegarde xfig si voulu\n");
    return 1;
  }

  FILE 
    *f=fopen(argv[1],"r"),
    *svr=fopen(argv[2],"w");
  
  if(!f || !svr) {
    fprintf(stderr,"Erreur ouverture fichier");
    return 1;
  }

  ListeChaine l;
  lecture_chaine(f,&l);
  //afficher_liste(&l);



  Reseau r;
  r.nbNoeuds=0; r.LNoeuds=NULL;  r.LCommodites=NULL;
  recree_reseau(&l,&r);
  //lecture_reseau(&r);
  ecrit_reseau_disque(&r,svr);

  if(argv[3]) {
    FILE *xfig=fopen(argv[3],"w");
    ecrit_reseau_xfig(&r,xfig,500,2);
    fclose(xfig);
    printf("Fichier rendu : %s\t %s\n", argv[2], argv[3]);
  }
  else
    printf("Fichier rendu : %s\n", argv[2]);
  

  printf("Fini\n");


  fclose(f);
  fclose(svr);
  return 0;
}
예제 #4
0
int main(int argc, char **argv)
{
    FILE *f = NULL;
    FILE *output = NULL;
    Reseau *R = NULL;
    ListeChaine *L = NULL;
    char *filename = NULL;
    int i;
    if (argc < 2) {
	leverErreur("Usage : ./convertres *.cha");
	return 1;
    }
    for (i = 1; i < argc; i++) {
	f = ouvrirFichier(argv[i]);
	if (f == NULL) {
	    continue;
	}
	R = creerReseau();
	L = creerListeChaine();
	lecture_chaine(f, L);
	recree_reseau(L, R);
	filename = basename(argv[i]);
	fprintf(stderr, "Conversion en réseau du fichier %s...\n",
		argv[i]);
	filename = strtok(filename, ".");
	filename = strcat(filename, ".res");
	output = fopen(filename, "w");
	if (!output) {
	    leverErreur("Erreur création fichier de sortie");
	    freeReseau(R);
	    freeListeChaine(L);
	    fermerFichier(f);
	    return 1;
	}
	ecrit_reseau_disque(R, output);
	fermerFichier(output);
	fermerFichier(f);
	freeReseau(R);
	freeListeChaine(L);
    }
    return 0;
}