IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Erreur programme fractale


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 4
    Par défaut Erreur programme fractale
    Bonjour ! Je viens de faire mon programme qui est censé afficher la fractale de Mandelbrot. Le programme fonctionne mais pas pour des veleurs de t (=taille de l'image [t][t]) au delà de 1000...

    Quelqu'un pourrait-il m'indiquer pourquoi mon programme crash ? J'obtient un segmentation fault..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    int main(){
     
     
    FILE *fp;
     
    fp=fopen("fractals.txt","w");
     
    	int t; ;
    	printf("Entrer la taille d'image t \n");
     
    	scanf("%d",&t);			// t = taille du tableau
     
        int image[t][t];
        /// image de taille t
     
    	float dx; float dy; float xo;	float yo;
     
    	printf("Entrer l'origine xo et yo \n");
     
    	scanf("%f",&xo);
    	scanf("%f",&yo);
     
     
    	printf("Entrer le pas dx et dy \n");
     
    	scanf("%f",&dx);
    	scanf("%f",&dy);
     
     
     
     
     
    	int i;	int j;	int c;	float Re;	float Im;	int zmax; int k;
     
     
    				 	// on déclare les variables
     
     
     
    	printf("Entrer zmax \n");					// on demande la limite de la serie zmax
    	scanf("%d",&zmax);
     
     
     
    		float r[200]; float im[200]; float norme[200];
     
    		for (i=0;i<1000;i++) {
    							// on balaye le tableau en i et en j pour lequel on va siigner un complexe c
     
    			for(j=0;j<1000;j++){
     
     
    				 Re=i*dx+xo;
     
     
    				 Im=j*dy+yo;		// on déclare le réel et imaginaire
     
     
     
    				r[0]=0;		im[0]=0;
    				printf("%f %f \n", Re, Im);
     
    				for (k=1; k<=zmax ; k++){
     
     
     
     
     
     
     
    				/*z[k]= (Re*Re + 2*Re*Im - Im*Im) + Re + Im;*/
     
     
    				r[k]= r[k-1]*r[k-1] -im[k-1]*im[k-1] + Re;
     
    				im[k]= 2*r[k-1]*im[k-1] + Im;
     
    					/*if (r[k]*r[k]+im[k]*im[k]>0 ){*/
     
    				norme[k]=sqrt(r[k]*r[k]+im[k]*im[k]);
    															// on test la norme à chaque k;
     
     
     
     
     
     
    				if ( norme[k] > 2.0 ){
     
     
    					image[i][j]=k;
    					k=zmax+1;
    					}
     
    					else{
     
    					image[i][j]=k;							// on test si la serie diverge ou converge
     
     
    					}
    				}
    			}
     
     
     
    		}
     
     
     
     
     
    /*for (k=0; k<=zmax ; k++){
     
    printf("%f",norme[k]);
     
     
     
    }
    */
     
     
     
     
     
    for (i=0;i<t;i++) {
     
     
    for(j=0;j<t;j++){
     
    fprintf(fp,"%d ",image[i][j]);
     
     
    }
    fprintf(fp,"\n");
    }
     
     
     
    fclose(fp);
     
     
     
     
     
    return 0;
    }





    Merci beaucoup

  2. #2
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 791
    Par défaut
    Hello,

    Je ne suis pas spécialiste des vla (loin de là !) mais 1000 x 1000 x 4 n'est-ce pas un peu trop pour une vla ? Que donnerait ton programme si tu faisais une allocation dynamique ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 4
    Par défaut
    Citation Envoyé par edgarjacobs Voir le message
    Hello,

    Je ne suis pas spécialiste des vla (loin de là !) mais 1000 x 1000 x 4 n'est-ce pas un peu trop pour une vla ? Que donnerait ton programme si tu faisais une allocation dynamique ?
    Justement je ne sais pas trop comment faire. .. Car j'ai essayé avec des long int mais ça ne résout rien ..

  4. #4
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 791
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int **image,t;
     
    scanf("%d",&t);
    image=malloc(t*sizeof(*image));
    for(int i=0;i<t;i++)
        image[i]=malloc(t*sizeof(**image));
    Et dans la suite du programme, tu utilises image comme tu le faisais:
    Ne pas oublier de libérer la mémoire quand le programme n'en a plus besoin.

    EDIT: je sais, il y a plus rapide en linéarisant la chose, mais je vais au plus simple.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 4
    Par défaut
    Citation Envoyé par edgarjacobs Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int **image,t;
     
    scanf("%d",&t);
    image=malloc(t*sizeof(*image));
    for(int i=0;i<t;i++)
        image[i]=malloc(t*sizeof(**image));
    Et dans la suite du programme, tu utilises image comme tu le faisais:
    Ne pas oublier de libérer la mémoire quand le programme n'en a plus besoin.

    EDIT: je sais, il y a plus rapide en linéarisant la chose, mais je vais au plus simple.
    Malheureusement ça ne fonctionne toujours pas ...ça me met toujours segmentation fault..
    Nom : Capture.PNG
Affichages : 245
Taille : 4,4 Ko

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Et si tu utilisais le debugger pour savoir quelles valeurs de i et j déclenchent le crash ?
    i semble valoir 0, mais que vaut j ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Erreur programme en C
    Par Vestigo dans le forum Débuter
    Réponses: 12
    Dernier message: 03/09/2007, 20h52
  2. Erreur programme d'envoi fichier sur serveur ftp
    Par batssa dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2007, 14h30
  3. ERREUR : programme d'installation
    Par shamima-woop dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 05/07/2007, 17h27
  4. Erreur Programmes!!! (ebesoin d'aide)
    Par charfamine dans le forum MFC
    Réponses: 6
    Dernier message: 08/04/2006, 13h16
  5. [MySQL] Erreur programme
    Par Didier100 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/01/2006, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo