begin process at 2012 02 09 16:17:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > ASCII ART FRACTALE

ASCII ART FRACTALE




 Description

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

  • #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;
  • }
#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;
}



 Sources du même auteur

[C ANSI] TAS (PRIORITY QUEUE)
Source avec Zip INTERPRETEUR BRAINFUCK
Source avec Zip Source avec une capture COMMENTAIRES DOXYGEN VERS VISUAL
Source avec Zip INTERPRETEUR D'UN LANGAGE PROCHE DU RPN
Source avec Zip FONCTIONS USUELLES (TRIGO) EN METAPROGRAMMATION

 Sources de la même categorie

Source avec Zip [C] WD_STRING V2.2 par cyberripper
Source avec Zip LES STRING EN C, AFFECTATION, CONCATÉNATION, SPLIT, ... par appranting
Source avec Zip [C] WD_STRING V1.9 par cyberripper
Source avec Zip LIBRAIRIE LANGUAGES par astro53
FONCTION : CHAR * AJUSTERTAILLECHAINE() par Rockanos

 Sources en rapport avec celle ci

Source avec Zip [C] WD_STRING V2.2 par cyberripper
Source avec Zip [C] WD_STRING V1.9 par cyberripper
AFFICHAGE D'UN TRIANGLE ISOCELE par nabche
Source avec Zip Source avec une capture FRACTALE DE SIERPINSKI par BCedric
Source avec Zip ASCII ART! par zac

Commentaires et avis

Commentaire de Ombitious_Developper le 10/11/2006 20:03:39

Salut:

Ton programme est très gourmand en mémoire. Lorsque j'ai mis 20 comme valeur un message a apparu "Mémoire insuffisante".

Commentaire de rrk275 le 10/11/2006 23:41:31

En même temps, 2^20 c'est pas tout petit .. ^^
Louis

Commentaire de Pole4 le 11/11/2006 08:45:20

A 4 ça déborde de l'écran,alors à 20!
Même sur un fichier,10 devrait suffire.
Pole.

Commentaire de lucgod1 le 11/11/2006 16:54:17

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.
  

Commentaire de coucou747 le 13/11/2006 09:32:21 administrateur CS

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...

Commentaire de jrbleboss le 13/11/2006 20:11:47

Je te propose de tester Xaos qui existe sous Linux. J'en sais rien pour Windows...

Bin les fractales regarde sur wikipedia a Mandelbrot !!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Convertion ASCII??? [ par BlackWizzard ] comment convertir un caractere en ascii et vice versa?pas de chichi dans le code stp!je veux juste la fonction, sans suplement!merci!!! Caractères ASCII sous Dos [ par Lorenzo ] Salut,Je n'arrive pas sous Dos à afficher des accents (é,è,à etc...) avec la fonction printf, celle-ci remplace ces caractères par d'autres.D'où cela ASCII [ par lahou ] Comment faire pour convertir un caractéres en son n° ASCII et vice-versa.Comme la fonction asc en vbMerci Comment convertir un texte en ASCII [ par Arcocide ] Je dois envoyer un texte par l'intermediaire d'un Edit dans C++ builder 5 en ASCII. Je demande donc comment convertir mon texte que j'envois en ASCII. code ascii des signes pique carreau trefle et coeur [ par jimtruand ] salut!je cherche les codes asii des signes pique carreau trefle et coeur j'ai la table des codes ascii mais je ne trouve pas les signes...merci d'avan Code ASCII [ par SuperDoudou ] SuperDoudouJe n'arrive pas trouver les touches dont les codes ascii sont 224 et 13.De +, est-ce que je me trompe si je pense que les codes ascii des recuperer la valeur ascii d'un caractere (SANS PRINTF!!) [ par chmod777 ] hello, j'ai besoin de pouvoir recuperer le code ascii d'un caractere contenu ds un tablo, valeur ascii que j'ai besoin de traiter apres, comment puis- Device context et StretchBlt ? [ par tavernier ] Bonjour, je suis en train de faire un générateur de fractale et j'ai besoin de mettre la fractale de coté pour ne pas avoir à tout recalculer pour la CONVERSION EBCDIC PACKED en ASCII [ par Michel76 ] Bonjour,J'ai trouvé un script C++ sur le site pour convertir de l'EBCDIC en ASCII, mais malheureusement pour moi je dois convertir des fichiers EBCDIC Nom d'une touche à partir du numéro ASCII [ par didrocks ] Ben, presque tout est dans le sujet, comment obtenir le nom d'une touche pour l'afficher à partir de son numéro ASCII?Merci!


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales