[C++]Problème de boucle

Fermé
Loana - 17 mars 2007 à 17:03
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 19 mars 2007 à 00:21
Bonjour,

j'aurai besoin d'aide sur l'écriture des boucles et les incrémentations pour aboutir au résultat demandé.
Ecrire une méthode qui prend en paramètre un nombre entier N et qui transforme l'image de départ en formant des "agglomérats" de taille NxN. La couleur du "pavé" correspondant est déterminé par la moyenne arithmétique des couleurs présentes dans les N*N pixels

Pour le reste, je saurai me débrouiller.

Merci

1 réponse

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
19 mars 2007 à 00:21
La première étape c'est d'isoler un carré de taille N à partir d'un pixel (i,j). Ca consiste donc à isoler le carré lignes i à N+i et colonnes j à N+j;
void extract(unsigned int N,unsigned int i,unsigned int j,int **matrix, int **agg){
  unsigned int x,y;
  for(y=i;y<i+N;++y){
    for(x=j;x<j+N;++x){
      // agg doit être alloué sinon segmentation fault
      // matrix[x][y] doit exister sinon segmentation fault
      agg[i][j] = matrix[x][y]; 
    }
  }
}

Ensuite étant donné un carré de taille N, faire la moyenne arithmétique revient à sommer les termes du carré et les diviser par N² :
int arith_mean(unsigned int N,int **matrix){
  unsigned int x,y,sum=0;
  for(y=0;y<N;++y){
    for(x=0;x<N;++x){
      // matrix[x][y] doit exister sinon segmentation fault
      sum += matrix[x][y]; 
    }
  }
  return sum / (N * N);
}

Bonne chance
0