bonjour voila je viens poster ici avec l'espoir que quelqu'un m'aide a régler un certain problème dans mon programme .
pour votre compréhension la matrice sous forme de vecteur est une image du ciel étoilé les valeurs sont les pixels , je boucle dessus pour compter toute les étoiles .

alors il n'y a pas d'erreur de compilation , il s'exectute mais pas correctement il y a un problème au niveau du for contenue dans le if qui me sert a initialiser les cases de mon vecteur V a 0

je m'explique a ce niveau la j'ai une matrice écrit sous forme de vecteur V qui contient un certain nombre de valeur , je veux que les coordonne i et j de mes valeur maximum soit stocké dans un vecteur x et y donc je fais un if pour avoir les coordonnees de mon max dans x et y
mais pour trouver le prochain max je dois initialiser la précédente valeurs sinon je trouverais toujours le même point .
je l'initialise donc .

mais le résultat obtenue n'est pas celui que j'aurais du avoir car avant de mettre la boucle while j'avais fait affiché juste le premier x(0) et avec la boucle while le premier x(0) n'est plus du tout le même .
je pense donc a un problème avec la remise a 0 .


voici le code :
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
 
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
 
 
FILE *pf1 ,*pf2 ;
#define D 1447680 
#define  n  1040
#define  m  1392
#define star 3000
 
int i , j , k , d ,c ,b  ,num_star , num_starmaxi ;
 
double x[star],y[star];
float somme ,somme2 ,somme3 , moy ,carre_moy , ecart_type , seuil ,seuil2 ,max ;
 
float V[n*m];
 
int main(){
 
    num_starmaxi=2 ;
    somme3=7671;
    somme=0;
    somme2=0;
    seuil2=7670;
   pf1=fopen("allsky_20150716_232659.txt","r");
  // pf2=fopen("image_ciel.dat","w");
 
   for (i=0;i<n;i++){
  for(j=0;j<m;j++){
 
 
  fscanf(pf1,"%f \n",&V[i*m+j]);
  //fprintf(pf2,"%f \n",V[i*m+j]);
 
   // somme=somme+V[i*m+j];
   //moy=somme/D ;
 
  // printf("%f \n" , moy);
 
 
 
 
  //printf("%f \n",V[i*m+j]);
 
 
  }
   }//
  fclose(pf1);
 // fclose(pf2);
 
//pf1=fopen("image_ciel.dat","r");
//pf2=fopen("seuil_ciel.rtf","w");
 
//somme=0;
 
for(i=0;i<D ;i++){
  //fscanf(pf1,"%f \n ",&V[i]);
 
   somme=somme+V[i];
   somme2=somme2+V[i]*V[i];
 
 
 //printf("%f \n" , V[i]);
 }
  moy= somme/D ;
  carre_moy= somme2/D;
  ecart_type= sqrt(carre_moy-(moy*moy));
  seuil= moy + 4*ecart_type ;
 
  printf("%f %f %f %f \n" , moy , carre_moy , ecart_type , seuil);
    printf("%f\n" , somme);
          for(i=0;i<D;i++){
             if(V[i]< seuil){
                V[i]=0.0 ;
//fprintf(pf2,"%f ∖n ",V[i]);
//printf("%f",V[i] );
                }
               }
//fclose(pf1);
//fclose(pf2);
   num_star=0;
   while(  num_star<num_starmaxi){
       for(i=0;i<n;i++){
           for(j=0;j<m;j++){
               k=i*m+j;
               somme3=somme3+V[k];
               if(max<V[k]){
                   max=V[k];
                   x[num_star]=j;
                   y[num_star]=i;
 
 
 
 
                for(b=i-2;i<=i+2;i++){
                    for(c=j-2;c<=j+2;j++){
                        d=b*m+c;
                        V[d]=0;
                     }}
                num_star=num_star+1;
                }
        }
        }
     printf("%f \n ",somme3);
    }
 
 for(i=0;i<num_starmaxi;i++){
 
    printf("%lf %lf  \n",x[i],y[i]);
    }
  return 0;
  }

Pièce jointe 335312