Esempio n. 1
0
int main(int argc, char **argv) {

    int n, k;
    double pas;
    double *x, *y, *x0, *x1, *tmp;
    struct info_t info;

    const char *donnees = argv[1]; /* le fichier des donnees bruitees */
    n = atoi(argv[2]); /* nombre de donnees bruitees */

    pas = 1./n;

    init_info(n, &info);

    x = (double*)malloc((n+2)*sizeof(double));
    y = (double*)malloc((n+2)*sizeof(double));

    lire_fichier(donnees, x, &info);

    x0 = x;
    x1 = y;
    for( k = 1 ; k <= KMAX ; k++ ) {
	lissage(x0, &info, x1);
	tmp = x0;
	x0 = x1;
	x1 = tmp;
    }

    ecrire_fichier("lissage.txt", x0, &info);

    free(x);
    free(y);

    return 0;
}
Esempio n. 2
0
int main(int argc, char **argv) {

    int Nglob, Nloc;
    double *x, *y;
    double res, err;
    struct info_t info;

    MPI_Init(&argc, &argv);

    Nglob = 100;

    init_info(Nglob, &info);
    Nloc = info.nloc;

    x = (double*)malloc(Nloc*sizeof(double));
    y = (double*)malloc(Nloc*sizeof(double));

    lire_fichier("vec_x", x, &info);
    lire_fichier("vec_y", y, &info);

    res = produit_scalaire(Nloc, x, y);

    printf("Produit scalaire = %.6e\n", res);

    err = fabs(res - Nglob)/(double)Nglob;
    if (err < 1.e-6)
    {
	printf("PASSED\n");
    }
    else
    {
	printf("Solution exacte : %g\n", (double)Nglob);
	printf("FAILED\n");
    }

    free(x);
    free(y);

    MPI_Finalize();

    return 0;
}
main()
{
    FILE *fp_ville;
    Ville *ville;

    //on teste ici seulement la fonction affiche_tableau, tri_ville et x_premieres_villes 
    printf("\n\n==================================testing MODULE_GLOBALE=============================================\n\n");
    printf("on trier les villes, en supposant que le fichier fonctionne bien\n ");

    int nombre_de_ville=0;
    fp_ville=lire_fichier("./villes.csv");
    ville=read_ville(fp_ville,&nombre_de_ville);
    printf("\n\n--------on vas afficher les 50 premieres villes, en utilisant affiche_tableau-------\n");
    affiche_tableau(ville, 50);//on affiche les 50 premieres villes apres tri decrossant
    printf("\n\n------on vas ensuite affichier les 20 premieres villes apres triee, en utilisant x_premieres_villes-----\n\n");
    ville=tri_ville(ville, 1, nombre_de_ville);
    ville=x_premieres_villes(ville, 20);
    affiche_tableau(ville, 20);//afficher les 20 premires villes apres triee

}
Esempio n. 4
0
int main()
{

    char path_fichier[100] ;	// adresse du fichier a lire
    char path_fichier_ville[100];	// adresse du fichier de villes
    FILE *fp_ville;	// fichier de villes
    FILE *fp_origine_html;	// fichier donne map.html
    FILE *fp_new_html;		// fichier cree map.html pour l'option 1
    FILE *fp_new_html_2;	// fichier cree map.html pour l'option 2
    FILE *fp_new_html_3;	// fichier cree map.html pour l'option 3
    int x=0;	//nombre de villes a afficher
    int i=0;	//compteur
    int nombre_de_ville=0;//le nombre de ville du fichier
    int limite=0;	// limite de parcours de l'avion
    int No_de_ville_X;	//Ville_X
    int No_de_ville_Y;	//succeseur de X
    float *table_distance;	//tableau des distances dans DIJKSTRA
    int *table_marque;	//tableau des marques dans DIJKSTRA
    int *table_pere;	//tableau des peres dans DIJKSTRA
    float *table_prim_distance;	//tableau des distances dans Prim
    int *table_prim_marque;	//tableau des marques dans Prim
    int *table_prim_pere;	//tableau des peres dans Prim
    int No_de_depart=0;	//numero de la ville de depart
    int No_de_dest=0;	//numero de la ville de destination
    Ville *ville;	//tableau des villes
    Ville depart;	//ville de depart
    Ville dest;		//ville de destination
    int N;	//le numero demonstre les N plus grandes villes pour afficher aerien couvrant
    Ville *x_plus_grand_villes;	//les x plus grandes villes
    char choix_menu;	// caractere pour choisir dans le menu
    char command1[100];	//commande pour utiliser la commande systeme
    char command2[100];	//commande pour utiliser la commande systeme
    char Continue_encore[100];	//caractere pour continuer le menu
    int trouvee=0;	//valeur pour trouver la ville

do{
    do
    {	
	//menu

    printf("\n\nBIENVENUE DANS LE PROGRAMME D'UTILISATION DES DONNEES GEOLOCALISES DU GROUPE 5: DILI5 (地理)\n\n\n\t\tMENU PRINCIPAL:\n\n\t");
    printf("Veuillez choisir l'option que vous désirez réaliser:\n\n\n");
    printf("1: Afficher les X plus grandes villes sur google map\n\n2: Calculer le plus court chemin entre deux villes\n\n3: Calculer l'arbre aérien recouvrant minimal\n\n");
    scanf("%c",&choix_menu);

    if (choix_menu != '1' && choix_menu != '2' && choix_menu != '3') printf("entrez une option valide ! ");

    }while(choix_menu != '1' && choix_menu != '2' && choix_menu != '3');


    //lire fichier_ville
    printf("saisir le path de ville_fichier:\n");
    scanf("%s", path_fichier_ville);

    switch(choix_menu)
    {
        case '1':
        printf("vous avez choisit d'afficher les X premières villes sur google map\n");

    //*******************************************Questions 1**************************************************

	nombre_de_ville=0; // pour reinitialiser le menu a chaque fois

       if(path_fichier_ville[strlen(path_fichier_ville)-4]=='.' && path_fichier_ville[strlen(path_fichier_ville)-3]=='x' && path_fichier_ville[strlen(path_fichier_ville)-2]=='m' && path_fichier_ville[strlen(path_fichier_ville)-1]=='l')
       {
	// avec un fichier xml
        sprintf(command1, "./parser.out %s > ville_antlr.csv", path_fichier_ville);
        system(command1);	// commande system qui applique la commande1
        fp_ville=lire_fichier("./ville_antlr.csv");	
       }
       else
       {
	// avec un fichier csv
        fp_ville=lire_fichier(path_fichier_ville);
       }

       //lire fichier map.html
        printf("saisir le path_fichier de map.html\n");
        scanf("%s", path_fichier);
        fp_origine_html=lire_fichier(path_fichier);
        
	//lire fichier map_out.html
        printf("saisir le path_fichier de map_out.html:\n");
        scanf("%s", path_fichier);
        fp_new_html=fopen(path_fichier, "w+");


        ville=read_ville(fp_ville, &nombre_de_ville);


    //*******************************************Question 2************************************************
  
        //affiche_tableau(ville, 50);
        printf("saisir X premieres villes:\n");
        scanf("%d", &x);
        while(x>nombre_de_ville||x<=0)
        {
	printf("respectez la regle, try again\n");
        scanf("%d", &x);
        }
        ville=tri_ville(ville, 1, nombre_de_ville);	//tri decroissant
        x_plus_grand_villes=x_premieres_villes(ville, x);	// choix des villes
        ecrire_fichier(x_plus_grand_villes, fp_origine_html, fp_new_html, x);	//ecriture du fichier
        printf("\n\nfichier map_out done =)\n\n");
    //-----------------------------------------------------------------------------------------
	
	// liberation de l'espace memoire du tableau dynamique des villes
	free(ville);
	fclose(fp_origine_html);
        break;

        case '2':

	nombre_de_ville=0;


        printf("vous avez choisit de calculer le plus court chemin entre deux villes\n");

       if(path_fichier_ville[strlen(path_fichier_ville)-4]=='.' && path_fichier_ville[strlen(path_fichier_ville)-3]=='x' && path_fichier_ville[strlen(path_fichier_ville)-2]=='m' && path_fichier_ville[strlen(path_fichier_ville)-1]=='l')
       {
        sprintf(command1, "./parser.out %s > ville.csv", path_fichier_ville);
        system(command1);
        fp_ville=lire_fichier("./ville_antlr.csv");


        //**********************************************Question3+Bonus 1*******************************************
        depart=choisir_ville_depart("./ville_antlr.csv");
        dest=choisir_ville_dest("./ville_antlr.csv");
        while(depart.pop==0 || dest.pop==0)
        {
        printf("\ndesole :( vous devez respectez la facon de saisir, try again:\n\n");
        depart=choisir_ville_depart("./ville_antlr.csv");
        dest=choisir_ville_dest("./ville_antlr.csv");
        }
        printf("le ville depart:%s\n",depart.nom_ville);
        printf("le ville dest:%s\n", dest.nom_ville);
        printf("la distance direct entre ces 2 villes est:%f\n", distance(depart, dest));
        //----------------------------------------------------------------------------------
       }
       else
       {
        fp_ville=lire_fichier(path_fichier_ville);

        //**********************************************Question3+Bonus 1*******************************************
        depart=choisir_ville_depart(path_fichier_ville);
        dest=choisir_ville_dest(path_fichier_ville);
        while(depart.pop==0 || dest.pop==0)
        {
        printf("\ndesole :( vous devez respectez le facon de saisir, try again:\n\n");
        depart=choisir_ville_depart(path_fichier_ville);
        dest=choisir_ville_dest(path_fichier_ville);
        }
        printf("le ville depart:%s\n",depart.nom_ville);
        printf("le ville dest:%s\n", dest.nom_ville);
        printf("la distance direct entre ces 2 villes est:%f\n", distance(depart, dest));
        //--------------------------------------------------------------------------------------
       }

              //lire fichier map.html
        printf("saisir le path_fichier de map.html\n");
        scanf("%s", path_fichier);
        fp_origine_html=lire_fichier(path_fichier);

        //lire fichier map_out.html
        printf("saisir le path_fichier de map_out_2.html:\n");
        scanf("%s", path_fichier);
        fp_new_html_2=fopen(path_fichier, "w+");


        //--------------------------------------------------Question3_Dijkstra----------------------------------------
        //initiation les tableau: distance, marque et pere

        ville=read_ville(fp_ville, &nombre_de_ville);
        table_distance=creer_table_distance(depart, ville, nombre_de_ville);
        table_marque=creer_table_marque(nombre_de_ville);
        table_pere=creer_table_pere(nombre_de_ville);
        printf("saisir la limite de longeur:\n");
        scanf("%d", &limite);


        //----------------------------------------Dijkstra----------------------------------------------------------
        while(!toutes_villes_extraites(table_marque, nombre_de_ville)&&!trouvee)//===>tant que il y a des villes non extraire..
        {
            No_de_ville_X=extraire_min(table_distance, table_marque, nombre_de_ville);
            //printf("ville_X c'est :%s et la distance :%f\n", ville[No_de_ville_X].nom_ville, table_distance[No_de_ville_X]);
            if(ville[No_de_ville_X].latitude==dest.latitude&&ville[No_de_ville_X].longitude==dest.longitude)
            {trouvee=1;}//si on trouve la ville destiaire.
            else{
                table_marque=extraire_update_table_marque(table_distance, table_marque, nombre_de_ville);
                for(No_de_ville_Y=0; No_de_ville_Y<nombre_de_ville; No_de_ville_Y++)
                {
                    if(distance(ville[No_de_ville_X], ville[No_de_ville_Y])<=limite)//pour les successeurs de ville_X
                    {
                        //Attention!! ici l'ordre des fonctions est un peu different de l'algorithme du cours
                        //si on utilise relache table_distance en premier, la fonction relacher_table_pere ne marche bien!!
                        //il faut, premierement, je notes les peres; Ensuite, on applique relacher_table_distance//
                        table_pere=relacher_table_pere(table_distance, table_pere, No_de_ville_X, No_de_ville_Y, ville);
                        table_distance=relacher_table_distance(table_distance, No_de_ville_X, No_de_ville_Y, ville);
                    }
                }
            }
        }
        ////pour le tester
        //for(i=0; i<nombre_de_ville; i++){
        //    printf("%d. %s---%s---> %f, %d\n", i, depart.nom_ville, ville[i].nom_ville, table_distance[i], table_marque[i]);}
        //for(i=0; i<nombre_de_ville; i++){
        //    if(table_pere[i]==-1)
        //    {continue;}
        //    else{printf("%d. %s's father is %s-\n", i, ville[i].nom_ville, ville[table_pere[i]].nom_ville);
        //    }
        //}

        //!!!不建立图很好!!至少不用1000*10000建图  每两城市之间城市数目《1000!! (avec un graphe il faut faire un calcul de 1000*1000 alors qu'ici on utilise 1000)
        //建图与不建图比较!不建图比较好


        for(i=0; i<nombre_de_ville; i++)	
        {
            if(ville[i].latitude==depart.latitude&&ville[i].longitude==depart.longitude)
                No_de_depart=i;
            if(ville[i].latitude==dest.latitude&&ville[i].longitude==dest.longitude)
                No_de_dest=i;
        }


        printf("apres Dijkstra, la distance entre ces 2 villes est: %f\n", table_distance[No_de_dest]);

        if(table_distance[No_de_dest]!=99999.0&&table_distance[No_de_dest]!=0.0)
        {
            ecrire_fichier_chemin(ville, fp_origine_html, fp_new_html_2, table_pere, No_de_depart, No_de_dest);
            printf("ecrire map_chemin_done =) \n\n");
        }
        else
        {
        printf("on ne peut pas y arriver ou alors vous avez saisi deux fois la meme ville\n\n");
        }

	//liberation des espaces memoire des tableaux dynamiques
	free(table_distance);	 
	free(table_marque);
	free(table_pere);
	free(ville);
	fclose(fp_origine_html);


        break;

    //-----------------------------------------------------------------------------------------------------------------------

        case '3':

        printf("vous avez choisit de calculer l'arbre aérien recouvrant minimal\n");

	nombre_de_ville=0;

        if(path_fichier_ville[strlen(path_fichier_ville)-4]=='.' && path_fichier_ville[strlen(path_fichier_ville)-3]=='x' && path_fichier_ville[strlen(path_fichier_ville)-2]=='m' && path_fichier_ville[strlen(path_fichier_ville)-1]=='l')
       {
        sprintf(command1, "./parser.out %s > ville.csv", path_fichier_ville);
        system(command1);
        fp_ville=lire_fichier("./ville_antlr.csv");
       }
        else
       {
        fp_ville=lire_fichier(path_fichier_ville);
       }

              //lire fichier map.html

        printf("saisir le path_fichier de map.html\n");
        scanf("%s", path_fichier);
        fp_origine_html=lire_fichier(path_fichier);

        //lire fichier map_out.html
        printf("saisir le path_fichier de map_out_3.html:\n");
        scanf("%s", path_fichier);
        fp_new_html_3=fopen(path_fichier, "w+");




        //***********************************************Question 4 Prim***********************************************************

        //initiation les tableau: distance, marque et pere
	ville=read_ville(fp_ville, &nombre_de_ville);
        printf("saisir les N plus grand villes pour afficher l'arbre aerien couvrant, au moins 1 villes..!:\n");
        scanf("%d", &N);
        while(N>nombre_de_ville||N<=0)
        {
            printf("Vous ne respectez pas la regle, try again\n");
            scanf("%d", &N);
        }
        ville=tri_ville(ville, 1, nombre_de_ville);
        x_plus_grand_villes=x_premieres_villes(ville, N);
        
	//affiche_tableau(x_plus_grand_villes, N); possibilite d'afficher le tableau

        table_prim_distance=creer_table_prim_distance(x_plus_grand_villes, N);
        table_prim_marque=creer_table_prim_marque(N);
        table_prim_pere=creer_table_prim_pere(N);
        table_prim_pere[0]=0;//!!!

        while(!tous_villes_extraire_prim(table_prim_marque, N))
        {
            No_de_ville_X=extraire_prim_min(table_prim_distance, table_prim_marque, N);
             //printf("ville_X c'est :%s et la distance :%f\n", x_plus_grand_villes[No_de_ville_X].nom_ville, table_prim_distance[No_de_ville_X]);
             table_prim_marque=extraire_update_table_prim_marque(table_prim_distance, table_prim_marque, N);
            for(No_de_ville_Y=0; No_de_ville_Y<N; No_de_ville_Y++)//pour chaque voisin de ville_X. cette fois par rapport au DIJKSTRA, on n'a pas de condition stricte..
            {
                table_prim_pere=relacher_table_prim_pere(table_prim_distance, table_prim_marque, table_prim_pere, No_de_ville_X, No_de_ville_Y, x_plus_grand_villes);
                table_prim_distance=relacher_table_prim_distance(table_prim_distance, table_prim_marque, No_de_ville_X, No_de_ville_Y, x_plus_grand_villes);
            }
        //pour le tester
        //    for(i=0; i<N; i++){
        //    printf("%f  %d\n", table_prim_distance[i], table_prim_marque[i]);
        //    }
        }
        //pour le tester
        //for(i=0; i<N; i++){
        //    printf("%f\n", table_prim_distance[i]);
        //}
        //
        //for(i=0; i<N; i++){
        //    printf("+++%s's pere est %s+++\n", x_plus_grand_villes[i].nom_ville, x_plus_grand_villes[table_prim_pere[i]].nom_ville);
        //}

        ecrire_fichier_couvrant_minimal(fp_origine_html, fp_new_html_3, table_prim_pere, N, x_plus_grand_villes);
        printf("\n\necrire fichier fichier_couvrant_minimal done =)\n\n");
	
	//liberation des espaces memoire des tableaux dynamiques
	fclose(fp_origine_html);
	free(table_prim_distance);
	free(table_prim_marque);
	free(table_prim_pere);
	free(ville);
        break;

        default:

        printf("erreur vous n'avez pas selectionner le bon numéro !!!\n");
        break;
    }


    sprintf(command2, "rm -f ville_antlr.csv");
    system(command2);

    printf("voulez vous continuer ?\n N pour arreter\n");
    scanf("%s",Continue_encore);

    printf("Vous avez taper: %s\n",Continue_encore);

    if (*Continue_encore =='N' || *Continue_encore=='n')
    { 
    	printf("FIN DU PROGRAMME\n");
    }

    printf("\n\n\n");

}while(*Continue_encore!='N' && *Continue_encore!='n');

return 0;
}
Esempio n. 5
0
int main()
{
Personne P;
lire_fichier(P);
return 0;
}
Esempio n. 6
0
void fmserver (void)
{
	struct fmparam param[1];

	// MessageBox (NULL, "Hello", "Message", MB_OK);

	init_param(param);
	
	/* test

	CDatabase db;
	db.OpenEx (_T("DSN=droits"), 0);

	CRecordsetClients rs;

	rs.Open (AFX_DB_USE_DEFAULT_TYPE, "SELECT * FROM clients", 0);
	rs.MoveFirst();
	for (;;)
	{
		if (rs.IsEOF())
			break;
		MessageBox (NULL, rs.m_login, "Login", MB_OK);
		rs.MoveNext();
	}

	rs.Close();

	*/

	WSADATA wsda;
	SOCKET sListen, sClient;
	struct hostent * hp;
	char buf[10000];
	int len;
	SOCKADDR_IN addr, remote_addr;
	int ret;
	int iAddrLen;

	WSAStartup (MAKEWORD(1,1), &wsda);

	hp = gethostbyname ("localhost");

	/*sListen = socket (hp->h_addrtype, SOCK_STREAM, 0);*/

	sListen = socket (AF_INET, SOCK_STREAM, 0 /*IPPROTO_IP*/);
	if (sListen == SOCKET_ERROR)
	{
		MessageBox (NULL, "Error creating socket", "Error", MB_OK);
		exit(0);
	}

	memset (&addr, 0, sizeof(addr));
	addr.sin_family = AF_INET;
	addr.sin_port = htons(6030);
	addr.sin_addr.s_addr = htonl (INADDR_ANY);

	ret = bind (sListen, (struct sockaddr *)&addr, sizeof(addr));
	if (ret == SOCKET_ERROR)
	{
		MessageBox (NULL, "Error bind", "Error", MB_OK);
		exit(0);
	}

	ret = listen (sListen, 10);
	if (ret == SOCKET_ERROR)
	{
		sprintf (buf, "Error listen: %d", WSAGetLastError());		
		MessageBox (NULL, buf, "Error listen", MB_OK);
		exit(0);
	}

	for (;;)
	{

	iAddrLen = sizeof(remote_addr);

	sClient = accept (sListen, (struct sockaddr *) &remote_addr, &iAddrLen);
	if (sClient == SOCKET_ERROR)
	{
		MessageBox (NULL, "Error accept", "Error", MB_OK);
		exit(0);
	}

	// MessageBox (NULL, "Accepted", "server", MB_OK);

	/*
	ret = recv (sClient, buf, sizeof(buf), 0);
	if (ret == SOCKET_ERROR)
	{
		MessageBox (NULL, "Error recv", "Error", MB_OK);
		exit(0);
	}
	buf[ret] = 0;

	MessageBox (NULL, buf, "Received", MB_OK);
	*/

	/*
	input (sClient, buf);
	MessageBox (NULL, buf, "received", MB_OK);
	*/

	char dirfax[100];
	char basedroits[100];
	char basefax[100];
	char faxdir[100];
	char language[100];
	char login[100];
	char pass[100];

	strcpy (basedroits, "droits");
	strcpy (basefax, "AT05");
	strcpy (faxdir, "L:\\AT05");


	for (;;)
	{
		input (sClient, buf);
		if (status == SOCKET_ERROR)
			break;

		// MessageBox (NULL, buf, "commande", MB_OK);
	
		if (!strcmp (buf, "BASEFAX"))
		{
			input (sClient, dirfax);
			input (sClient, language);
			
			if (*dirfax)
			{
				lire_fichier (dirfax, "baserights.txt", basedroits);
				lire_fichier (dirfax, "basefax.txt", basefax);
				lire_fichier (dirfax, "faxdir.txt", faxdir);
			}

			output (sClient, "ID\tIdentifiant\t30\n");
			output (sClient, "CNX\tDate\t20\n");
			output (sClient, "TIME\tDurée\t5\n");
			output (sClient, "PGENB\tPages\t5\n");
			output (sClient, "HGN\tStatus\t5\n");
			output (sClient, "FILE\tFichier\t15\n");
			output (sClient, "\n");
		 
		}
		else if (!strcmp (buf, "USER"))
		{
			input (sClient, login);
		}
		else if (!strcmp (buf, "PASS"))
		{
			input (sClient, pass);
			output (sClient, "LOGIN\n1\n");
		}
		
		else if (!strcmp (buf, "LISTREC"))
		{
			
			char param[100];
			char strsince[100];
			input (sClient, param);
			input (sClient, strsince);

			CDatabase db;
			char dsn[100];
			sprintf (dsn, "DSN=%s", basefax);
			db.OpenEx (_T(dsn), 0);

			CRecordsetRec rs;

			rs.Open (AFX_DB_USE_DEFAULT_TYPE, "SELECT * FROM REC", 0);
			rs.MoveFirst();

			// MessageBox (NULL, "Reading base", "trace", MB_OK);

			for (;;)
			{
				if (rs.IsEOF())
					break;
				/*MessageBox (NULL, rs.m_ID, "id", MB_OK);*/
				sprintf (buf, 
 "<MESSAGE><BASE>FAXBT</BASE><ID>%s</ID><CNX>%s</CNX><TIME>%lf</TIME><PGENB>%lf</PGENB><HGN>%lf</HGN><FILE>%s</FILE></MESSAGE>\n",
								LPCSTR(rs.m_ID), 
								LPCSTR(rs.m_CNX), 
								rs.m_TIME, 
								rs.m_PGENB, 
								rs.m_HGN,
								LPCSTR(rs.m_FILE));
				/*MessageBox (NULL, buf, "Message", MB_OK);*/
				output (sClient, buf);
				rs.MoveNext();
			}
			output (sClient, "\n");

			rs.Close();



		}
		else if (!strcmp (buf, "END"))
		{
			// MessageBox (NULL, buf, "END", MB_OK);
			break;
		}
		else
		{
			// MessageBox (NULL, buf, "autre commande", MB_OK);
		}


	}

	closesocket (sClient);

	}
/*
	for (;;)
	{
		input (commande);
		MessageBox (NULL, commande, "Commande", MB_OK);

	}
*/

}