Ascii art fractale

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 259 fois - Téléchargée 27 fois

Contenu du snippet

Ce code affiche la fractale triangulaire en mode console (ça rend spécial...)

principe : normalement, on découpe le triangle, mais moi, je ne pouvais pas le découper facilement, je suis alors parti d'un petit triangle pour le recopier à coté et en haut, pour former un plus grand triangle, et rappeller la fonction sur ce plus grand triangle...

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>

typedef struct {
	int x, y;
} dim;

void afficher(char **a, dim d){
	int i, j;
	for (j=0;j<d.x;j++){
		printf("_");
	}
	printf("\n");
	for (i=0;i<d.y;i++){
		for (j=0;j<d.x;j++){
			printf("%c", a[i][j]);
		}
		printf("\n");
	}
}

int puissance(int a, int b){
	if (b==0) return 1;
	return a*(puissance(a, b-1));
}

void affichertriangle(char **a, int now, int but, dim d1, dim d){
	if (now!=but){
		int i, j;
		for (i=d.y-d1.y;i<d.y;i++){
			for (j=0;j<d1.x;j++){
				a[i-d1.y][j+d1.x/2]=a[i][j];
				a[i][j+d1.x]=a[i][j];
			}
		}
		d1.x*=2;
		d1.y*=2;
		affichertriangle(a, now+1, but, d1, d);
	}
}

int main(){
	int s;
	scanf("%d", &s);
	char **a;
	int i, j;
	dim d, d1;

	

	d.x=puissance(2, s)*6;
	d.y=puissance(2, s)*3;

	a=(char **)malloc(sizeof(char *)*d.y);
	for (i=0;i<d.y;i++)
		a[i]=(char *)malloc(d.x);

	//remise à 0

	for (i=0;i<d.y;i++){
		for (j=0;j<d.x;j++){
			a[i][j]=' ';
		}
	}

	//triangle de départ

	a[d.y-3][0]=' ';a[d.y-3][1]=' ';a[d.y-3][2]='*';a[d.y-3][3]=' ';a[d.y-3][4]=' ';
	a[d.y-2][0]=' ';a[d.y-2][1]='*';a[d.y-2][2]='*';a[d.y-2][3]='*';a[d.y-2][4]=' ';
	a[d.y-1][0]='*';a[d.y-1][1]='*';a[d.y-1][2]='*';a[d.y-1][3]='*';a[d.y-1][4]='*';

	//des dimentions arbitraires du petit triangle

	d1.x=6;
	d1.y=3;

	affichertriangle(a, 0, s, d1, d);

	afficher(a, d);

	return 1;
}

A voir également

Ajouter un commentaire Commentaires
Messages postés
480
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
3 septembre 2007
1
Je te propose de tester Xaos qui existe sous Linux. J'en sais rien pour Windows...

Bin les fractales regarde sur wikipedia a Mandelbrot !!
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
celle là c'est pas grand chose...
tu commence avec un triangle petit, genre :
*
***
*****

et tu le répètes en haut et à coté comme ça :
*
***
*****
* *
*** ***
***** *****

un truc qui ressemblerait à ça...

ensuite, on réappelle la fonction pour copier le nouveauu triangle de la même manière...

On répète cette opération n fois...
Messages postés
10
Date d'inscription
dimanche 17 septembre 2006
Statut
Membre
Dernière intervention
24 janvier 2007

Quand je lis FRACTALE, je jette un oeil, mais les fractales sont difficiles à comprendre !!! (Je ne suis pas un étudiant en math, toutefois je m'y interresse)... en dehors de ta source pourrais-tu me renseigner (en dehors de ce que je tape sur GOOGLE... Il y a bien longtemps que j'ai tapé FRACTACLE sur GOOGLE).
Enfin, ce n'est rien... continue... C'est sympa ton travai.
Bye bye from LIEFE-BELGIUM.
Messages postés
20
Date d'inscription
mardi 11 octobre 2005
Statut
Membre
Dernière intervention
13 mars 2007

A 4 ça déborde de l'écran,alors à 20!
Même sur un fichier,10 devrait suffire.
Pole.
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
En même temps, 2^20 c'est pas tout petit .. ^^
Louis
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.