示例#1
0
文件: tp2.c 项目: KaneRoot/public
// Pas fini
void crible_eratosthene(int n)
{
	int t[2], tprec[2],i,pid;
	for(i = 0 ; i < n ; i++)
	{
		pipe(t);
		if((pid =fork()))
		{
			if(i == 0)
			{
				close(1); close(t[0]);
				copie(0,t[1]);
				close(0); close(t[1]);
				exit(EXIT_SUCCESS);
			}
			else
			{
				close(t[0]); close(tprec[1]);
				copie(tprec[0],t[1]);
				close(tprec[0]); close(t[1]);
				exit(EXIT_SUCCESS);
			}
		}
		else
		{
			close(t[1]);
			tprec[0] = t[0];
		}
	}
	copie(t[0],1);
	close(t[0]);
	close(1);
	for(i = 0 ; i < n ; i++)
		wait(NULL);
}
示例#2
0
Rationnel::Rationnel(const QString& s) {
    QString copie(s);
    num=(copie.section('/', 0,0)).toInt();
    denom=(copie.section('/', 1,1)).toInt();
    if (denom==0) throw ExceptionCooCoo("Division par 0");
    simplifier();
}
示例#3
0
//copie de 2 listes
ListeCouple *copie(ListeCouple *tete1) {
        ListeCouple *courant = tete1 ;
        ListeCouple *Copie = NULL ;
        if(courant != NULL) {
                Copie = newList(copieArbre(courant->noeud)) ;
                Copie->suivant = copie(courant->suivant) ;
                return Copie ;
        }
        else return NULL ;
}
示例#4
0
文件: main.c 项目: TolotraSmile/c
int main()
{
    int tableau1[3]={1,2,3};
    int tableau2[3];
    copie(tableau1,tableau2,3);
    int i;
    for (i=0;i<3;i++)
    {
        printf("%d\n",tableau2[i]);
    }
    return 0;
}
示例#5
0
文件: reversi.c 项目: tcoutant/licpro
int passerTour(int table[8][8], int couleur) {
int i, j;
int copieTable[8][8];
	for ( i=0; i<8; i++ ) {
		for ( j=0; j<8; j++ ) {
			copie(table, copieTable);
			if ( positionnement(copieTable, couleur, i, j)==kcorrect )
			return 0;
		}
	}
return 1;
}
示例#6
0
文件: reversi.c 项目: tcoutant/licpro
	void ordinateur(int table[8][8]) {
int arbre(int table[8][8], int couleur, int x);
int i, j, n, m, x=0;
int copieTable[8][8], tableDefinitive[8][8];
	for ( i=0; i<8; i++ ) {
		for ( j=0; j<8; j++ ) {
			copie(table, copieTable);
			if ( positionnement(copieTable, knoire, i, j)==kcorrect ) {
				x++;
				n=arbre(copieTable, knoire, 0);
				if ( x==1 || n>m ) {
				m=n;
				copie(copieTable, tableDefinitive);
			}
		}
	}
}



copie(tableDefinitive, table);
return;
}
示例#7
0
Structure Structure::cloner(Structure const& modele, TechnologieStructure techS) {
    Structure copie(modele.getVieMax() + (modele.getVieMax() * 0.5 * techS.getNiveauVie()),
                    modele.getBouclierMax() + (modele.getBouclierMax() * 0.5 * techS.getNiveauBouclier()),
                    modele.getBouclierTaux() + (0.05 * techS.getNiveauBouclier()),
                    modele.getVisibilite() + (modele.getVisibilite() * 0.5 * techS.getNiveauVisibilite()),
                    modele.getAttaque() + (modele.getAttaque() * 0.5 * techS.getNiveauAttaque()),
                    modele.getRayonAttaque(),
                    modele.getPrixEnergie() - (modele.getPrixEnergie() * 0.5 * techS.getNiveauMateriaux()),
                    modele.getPrixMateriaux() - (modele.getPrixMateriaux() * 0.5 * techS.getNiveauMateriaux())
                   );

    return copie;

}
示例#8
0
int main(int argc, char *argv[])
{
    int tableau[4] = {150, 5, 55, 7};
    int tableauoriginal[4];
    int i;
    for (i = 0 ; i < 4 ; i++)
    {
        tableauoriginal[i] = tableau[i];
    }

    affiche(tableau, 4);
    sommeTableau(tableau, 4);
    moyenneTableau(tableau, 4);
    ordonnerTableau(tableau, 4);
    copie(tableau, tableau, 4); //does not work right now
    return 0;
}
示例#9
0
文件: reversi.c 项目: tcoutant/licpro
int arbre(int table[8][8], int couleur, int x) {
int total(int table[8][8]);
int i, j, n=0;
int copieTable[8][8];
	if ( x<4 ) {
		x++;
		for ( i=0; i<8; i++ ) {
			for ( j=0; j<8; j++ ) {
				copie(table, copieTable);
				if ( positionnement(copieTable, couleur, i, j)==kcorrect )
				n+=arbre(copieTable, !couleur, x);
			}
		}
	}
else
return total(table);
return n/4;
}
示例#10
0
文件: main.c 项目: Pilzy/Math316
/* Fais appel à toutes les fonctions de base contenues dans gestionImg.c, dans affichage.c et dans lecture.c */
void testFonctionsDeBase()
{
	image img1 = NULL, img2 = NULL, img3 = NULL, img4 = NULL, img5 = NULL;
	
	/* L'image 1 est lue au clavier */
	img1 = lireClavier();
	printf("\n");
	
	/* L'image 2 est copiée est mis en négatif */
	img2 = copie(img1);
	negatif(&img2);
	
	/* L'image 3 est un négatif de la 2 est doit donc être identique à la 1*/
	img3 = copie(img2);
	negatif(&img3);
	
	/* On regarde la différence entre la 1 et la 2 */
	img4 = difference(img1 , img2);
	
	/* On regarde la différence entre la 1 et la 3 */
	img5 = difference(img1 , img3);
	
	/* Affichage des résultats */
	printf("Voici votre image 1 :\n");
	affichageNormal(img1); printf("\n");
	affichageProfondeur(img1); printf("\n");
	printf("Voici votre image 2 (negatif de la 1) :\n");
	affichageNormal(img2); printf("\n");
	affichageProfondeur(img2); printf("\n");
	printf("Voici votre image 3 (negatif de la 2) :\n");
	affichageNormal(img3); printf("\n");
	affichageProfondeur(img3); printf("\n");
	printf("Voici votre image 4 (différence entre 1 et 2) :\n");
	affichageNormal(img4); printf("\n");
	affichageProfondeur(img4); printf("\n");
	printf("Voici votre image 5 (différence entre 1 et 3) :\n");
	affichageNormal(img5); printf("\n");
	affichageProfondeur(img5); printf("\n");
	printf("\n");
	
	/* Test memeImage() */
	memeImage(img1, img3) ? printf("La 1 et la 3 sont identiques.\n") : printf("ERREUR : La 1 et la 3 sont differentes.\n");
	(!memeImage(img1, img2)) ? printf("La 1 et la 2 sont differentes.\n") : printf("ERREUR : La 1 et la 2 sont identiques.\n");
	printf("\n");
	
	/* Test memeDessin() */
	memeDessin(img1, img3) ? printf("La 1 et la 3 ont le meme dessin.\n") : printf("ERREUR : La 1 et la 3 n'ont pas le meme dessin.\n");
	memeDessin(img1, img2) ? printf("La 1 et la 2 ont le meme dessin.\n") : printf("ERREUR : La 1 et la 2 n'ont pas le meme dessin.\n");
	(!memeDessin(img1, img4)) ? printf("La 1 et la 4 n'ont pas le meme dessin.\n") : printf("WARNING : La 1 et la 4 ont le meme dessin.\n");
	printf("\n");
	
	/* Test estBlanche() et estNoire() */
	(estNoire(img4) == true) ? printf("La 4 est noire.\n") : printf("ERREUR : La 4 n'est pas noire.\n");
	(estBlanche(img5) == true) ? printf("La 5 est blanche.\n") : printf("ERREUR : La 5 n'est pas blanche.\n");
	printf("\n");
	
	/* Test aireNoire() */
	printf("Aire en noire image 1 : %f\n", aireNoire(img1));
	printf("Aire en noire image 2 : %f\n", aireNoire(img2));
	printf("Aire en noire image 3 : %f\n", aireNoire(img3));
	printf("Aire en noire image 4 : %f\n", aireNoire(img4));
	printf("Aire en noire image 5 : %f\n", aireNoire(img5));
	printf("\n");
	
	/*Affichage en mode 2k*/
	printf("Affichage en mode 2k\n");
	printf("Voici votre image 1 (Profondeur : 0) :\n");
	affichage2k(img1, 0); printf("\n");
	printf("Voici votre image 1 (Profondeur : 1) :\n");
	affichage2k(img1, 1); printf("\n");
	printf("Voici votre image 1 (Profondeur : 2) :\n");
	affichage2k(img1, 2); printf("\n");
	printf("Voici votre image 1 (Profondeur : 3) :\n");
	affichage2k(img1, 3); printf("\n");
	printf("Voici votre image 1 (Profondeur : 4) :\n");
	affichage2k(img1, 4); printf("\n");
	printf("Voici votre image 1 (Profondeur : 5) :\n");
	affichage2k(img1, 5); printf("\n");
	printf("Voici votre image 1 (Profondeur : 6) :\n");
	affichage2k(img1, 6); printf("\n");
	
	if(img1 != NULL)
		rendMemoire(img1);
	if(img2 != NULL)
		rendMemoire(img2);
	if(img3 != NULL)
		rendMemoire(img3);
	if(img4 != NULL)
		rendMemoire(img4);
	if(img5 != NULL)
		rendMemoire(img5);
	
}
//cree une table de longueur pachageMerge a partir d'une liste chainee
unsigned char *creeTableLongueurMerge(ListeCouple *tete,int longMax){
        ListeCouple *Ajouts = NULL ;
//liste des symboles + regroupements
        ListeCouple *Liste ;
        ListeCouple *Copie ;//copie de la Liste pour pouvoir supprimer des elts
        
        int nombreSymboles = taille(tete) ;
        int iteration = 2 ;

//variable pour la recherche dans Ajouts
        ListeCouple *Symbolecourant = tete ; 
        ListeCouple *AjoutCourant ;
        unsigned char *tableLongueur = initialiserTableauChar(TAILLE) ;
        unsigned char charCourant ;
        //int inferieurNMoins2 ;


        while(/*taille(Ajouts)*/ iteration <= longMax){
//tant qu'il que l'on a pas fait N-2 regroupements

                Liste = copie(tete) ;

                //Ajout des regroupements dans la liste et supprimer ceux ci de Ajouts
                while(Ajouts!=NULL) {
                        ajout(Ajouts->noeud,&Liste) ;
                        supprimeTete(&Ajouts) ;
                }
                                
                Copie = copie(Liste) ;
//calcul de tous le Ajouts possibles
                while(Copie != NULL) {
                        //au moins 2 elts dans dans Copie -> on ne groupe pas quand 1 seul elt
                        regroupement(&Copie,&Ajouts);
                }
                iteration++ ;
        }   


//on a suffisament de regroupement il faut donc compter pour chaque caracteres,
//le nombre d'apparission dans Ajouts
        AjoutCourant = Ajouts ;
       // printf("nb symbole = %d\nnb elt dans Ajouts = %d\n",taille(tete),taille(Ajouts)) ;
        
        //inferieurNMoins2 = 1 ;
	while(/*inferieurNMoins2 <= nombreSymboles &&*/ Symbolecourant != NULL) {
//courant contient toujours des feuilles
//on ne prend que les N-2 premiers elts de Ajouts

                charCourant = Symbolecourant->noeud->value ; 
                tableLongueur[(int)charCourant] = 
                        1 + nbOccurences(charCourant,
                                         Ajouts,
                                         nombreSymboles-2) ; 

             //   printf("long(%c) = %d\n",charCourant,tableLongueur[(int)charCourant]) ;

                Symbolecourant = Symbolecourant->suivant ;
                //inferieurNMoins2++ ;
        }
        return tableLongueur ;
}
示例#12
0
void RT_secondOrder(Pnum* m,Pnum* velocity,unsigned nb_row, unsigned nb_col, unsigned* f, unsigned nb_points_front){

    printf("Algorithm Rouy-Tourin : problem %d x %d with finite difference second order\n",nb_row,nb_col);
    FILE *ft = gnudata_open("time_so");
    FILE *fiter = gnudata_open("iter_so");
    double time_start = give_time(), time_end = 0;
    Pnum* m_0 = (Pnum*) malloc(nb_col*nb_row*sizeof(Pnum));
    
    //Initialisation des noeuds
    int i,j;
    for (i = 0; i<nb_row; i++) {
        for (j = 0; j<nb_col; j++) {
            m_0[ind(nb_col,i,j)] = INF;
            
        }
    }
    //Initialisation des noeuds sources
    for (i = 0; i<2*nb_points_front; i+=2) {
        m_0[ind(nb_col,f[i], f[i+1])] = 0.0;
    }
    
    int s = 0, fi = 0, nb_iter = 0, convergence = 1;
    do{
        convergence = 1;
        copie(m_0, m, nb_row, nb_col);
        for (i = 0; i<nb_row; i++) {
            for (j = 0; j<nb_col; j++) {
                if (isInObstacle(velocity, nb_col, i,j)){
                    m_0[ind(nb_col, i, j)] = INF;
                    continue;
                }
                Pnum x_m1 = (i-1 >= 0)       ? m[ind(nb_col, i-1, j)] : INF;
                Pnum x_m2 = (i-2 >= 0)       ? m[ind(nb_col, i-2, j)] : INF;
                Pnum x_p1 = (i+1 < nb_col)  ? m[ind(nb_col, i+1, j)] : INF;
                Pnum x_p2 = (i+2 < nb_col)  ? m[ind(nb_col, i+2, j)] : INF;
                Pnum y_m1 = (j-1 >= 0)       ? m[ind(nb_col, i, j-1)] : INF;
                Pnum y_m2 = (j-2 >= 0)       ? m[ind(nb_col, i, j-2)] : INF;
                Pnum y_p1 = (j+1 < nb_row)  ? m[ind(nb_col, i, j+1)] : INF;
                Pnum y_p2 = (j+2 < nb_row)  ? m[ind(nb_col, i, j+2)] : INF;
                Pnum sol, Tx, Ty, Tx_m , Tx_p, Ty_m, Ty_p, f;
                f = velocity[ind(nb_col, i, j)];
                if (x_p2 < INF && x_m2 < INF && y_m2 < INF && y_p2 < INF ){
                    s++;
                    Tx_m = fmaxf((4*x_m1-x_m2)/3.0, 0); Tx_p = fminf((4*x_p1-x_p2)/3.0, 0);
                    Ty_m = fmaxf((4*y_m1-y_m2)/3.0, 0); Ty_p = fminf((4*y_p1-y_p2)/3.0, 0);
                    sol = solveEquation_2(Tx_m,Tx_p, Ty_m, Ty_p, h, f);
                }else{
                    fi++;
                    Tx = fminf(x_m1, x_p1);
                    Ty = fminf(y_m1, y_p1);
                    sol = solveEquation_1(Tx,Ty,h,f);
                }
                Pnum sol_min = fminf(m[ind(nb_col, i, j)],sol);
                m_0[ind(nb_col, i, j)] = sol_min;
                
                convergence = convergence && (fabsf( m[ind(nb_col,i, j)] - m_0[ind(nb_col, i, j)] ) <= epsilon);
            }
        }
        nb_iter++;
        
    } while (!convergence);
    
    time_end = give_time();
    dput_xy(ft, nb_row, time_end-time_start);
    dput_xy(fiter, nb_row, nb_iter);
    calculDistance(2,m, nb_col/2, nb_row/2, nb_row, nb_col);
    free(m_0);
    printf("%d itérations\n",nb_iter);
    printf("TIME : %f sec\n\n",time_end-time_start);
}
示例#13
0
void RT_firstOrder(Pnum* m,Pnum* velocity,unsigned nb_row, unsigned nb_col, unsigned* f, unsigned nb_points_front){

    printf("Algorithm Rouy-Tourin : problem %d x %d with finite difference fisrt order\n",nb_row,nb_col);
    FILE *ft = gnudata_open("time_fo");
    FILE *fiter = gnudata_open("iter_fo");
    double time_start = give_time(), time_end = 0;
    Pnum* m_0 = (Pnum*) malloc(nb_col*nb_row*sizeof(Pnum));

    
    //Initialisation des noeuds
    int i,j,nb_iter = 0,convergence = 1;
    for (i = 0; i<nb_row; i++) {
        for (j = 0; j<nb_col; j++) {
            m_0[ind(nb_col,i,j)] = INF;
        }
    }
    
    //Initialisation des noeuds sources
    for (i = 0; i<2*nb_points_front; i+=2) {
        m_0[ind(nb_col,f[i], f[i+1])] = 0.0;
    }
    
    do{
        convergence = 1;
        copie(m_0, m, nb_row, nb_col);
        for (i = 0; i<nb_row; i++) {
            for (j = 0; j<nb_col; j++) {
                if (isInObstacle(velocity, nb_col, i,j)){
                    m_0[ind(nb_col, i, j)] = INF;
                    continue;
                }
                Pnum x_m1 = (i-1 >= 0)       ? m[ind(nb_col, i-1, j)] : INF;
                Pnum x_p1 = (i+1 < nb_col)  ? m[ind(nb_col, i+1, j)] : INF;
                Pnum y_m1 = (j-1 >= 0)       ? m[ind(nb_col, i, j-1)] : INF;
                Pnum y_p1 = (j+1 < nb_row)  ? m[ind(nb_col, i, j+1)] : INF;
                Pnum Tx = fminf(x_m1, x_p1);
                Pnum Ty = fminf(y_m1, y_p1);
                Pnum f = velocity[ind(nb_col, i, j)];
                Pnum sol = solveEquation_1(Tx,Ty,h,f);
                Pnum sol_min = fminf(m[ind(nb_col, i, j)],sol);
                m_0[ind(nb_col, i, j)] = sol_min;
                
                convergence = convergence && (fabsf( m[ind(nb_col,i, j)] - m_0[ind(nb_col, i, j)] ) <= epsilon);
            }
        }
        if (PRINT) {
            printf("\n----\n");
            print_matrice(m, nb_row, nb_col);
        }

        nb_iter++;
        
    } while (!convergence);
    
    time_end = give_time();
    dput_xy(ft, nb_row, time_end-time_start);
    dput_xy(fiter, nb_row, nb_iter);
    calculDistance(1,m, nb_col/2, nb_row/2, nb_row, nb_col);
    free(m_0);
    printf("%d itérations\n",nb_iter);
    printf("TIME : %f sec\n\n",time_end-time_start);
}