Exemple #1
0
//Enfin la derniere phase de calcul....et la plus interessante: LE DESSIN DE LA BOULE!
void chaineT(Triangle ancetre,int rang){
    if (rang<0) exit(EXIT_FAILURE);
    Triangle *retour=NULL,*passeur=NULL;
    long nb=nbTriangles(rang);
    retour=(Triangle*)malloc(nb*sizeof(Triangle));
    passeur=(Triangle*)malloc(4*sizeof(Triangle));
    if (retour==NULL||passeur==NULL) exit(EXIT_FAILURE);
    int posAv=1,posAr=1;
    passeur=diviser(ancetre);
    *retour=ancetre;
    rang--;
    if (rang>=0){
    int i;
    for(i=1;i<=4;i++){
        *(retour+i)=*(passeur+(i-posAv));
    }
    rang--;
    posAv+=4;
    }
    int i;
    while (rang>=0){
        passeur=diviser(*(retour+posAr));
        for(i=posAv;(i-posAv)<=4;i++){
            *(retour+i)=*(passeur+(i-posAv));
        }
        posAr++;
        posAv+=4;
        if(powOf4(posAv)) rang--;
    }
    if (nb==1){//s'il n'ya qu'un triangle dans la pile!
        dTriangle(*(retour),NOIR);
        free(retour);
    }
    else{
        int i=0;
        while (i!=nb-1) {
            dTriangle(*(retour+i),NOIR);
            i++;
        }
    }
}
Exemple #2
0
void btn_split_click(Fl_Widget *)
{
    // si il n'as mis aucun fichier
    if(!*I->fichier->value()) {
        fn_alert("Vous devez avant tout sélectionner un fichier...");
        return;
    }
    //**** commence le split
    if(!fl_filename_isdir(I->chemin->value())) {
        fn_alert("Le répertoire \"%s\" est invalide...",I->chemin->value());
        return;
    }

    if(I->rassembler->value())
        rassembler();
    else
        diviser();
}