• Aucun résultat trouvé

Bien regarder les indices lorsqu'on "lisse" une ligne ou une colonne : pour une ligne, par exemple

N/A
N/A
Protected

Academic year: 2022

Partager "Bien regarder les indices lorsqu'on "lisse" une ligne ou une colonne : pour une ligne, par exemple"

Copied!
3
0
0

Texte intégral

(1)

//--- TP 5 Corrigé ---

#pragma hdrstop

#include <time>

#include <iostream>

#include <iomanip>

using namespace std;

//--- variables --- int M [20][20], P[20][20];

int n,p;

//---- fonctions --- void saisir();

void remplirmatrice();

void affichermatrice(int m[][20]);

void lisserlignes(int m[][20]);

void lissercolonnes(int m[][20]);

//---- corps du programme ---

#pragma argsused

int main(int argc, char* argv[]) {

srand(time(NULL));

saisir();

remplirmatrice();

cout << "Matrice originale :" << endl;

affichermatrice(M);

lisserlignes(M);

cout << endl << "Matrice lissee par lignes :" << endl;

affichermatrice(M);

lissercolonnes(M);

cout << endl << "Matrice lissee par colonnes :" << endl;

affichermatrice(M);

cout << endl << "Changement d'ordre des lissages, matrice originale :" << endl;

affichermatrice(P);

lissercolonnes(P);

cout << endl << "Matrice lissee par colonnes :" << endl;

affichermatrice(P);

lisserlignes(P);

cout << endl << "Matrice lissee par lignes :" << endl;

affichermatrice(P);

cin.sync();

cin.get();

return 0;

}

// dans tout ce qui suit dans les répétitives for et les éléments // de matrices i est un numéro de ligne et j un numéro de colonne // m[i][j] : élément de la ième ligne et de la jème colonne

// --- description des fonctions --- void saisir()

{

cout << "Saisir n (5<=n<=20) :";

cin >> n;

(2)

cout << "Saisir p (1<=p<=" << (int)n/2 << ") :";

cin >> p;

}

void remplirmatrice() {

for (int i=1 ; i<=n ; i++)// pour toutes les lignes {

for (int j=1 ; j<=n ; j++)// pour toutes les colonnes { m[i][j]=rand()%256;

// %256 est un "modulo" 256 donc un entier de 0 à 255 p[i][j]=m[i][j];

} }

}

void affichermatrice(int m[][20]) {

for (int i=1 ; i<=n ; i++)// pour toutes les lignes {

for (int j=1 ; j<=n ; j++)// pour toutes les colonnes cout << setw(4) << (int)m[i][j];

cout << endl;

}

cout << endl;

}

void lisserlignes(int m[][20]) {

for (int i=1 ; i<=n ; i++)// pour toutes les lignes // pour les colonnes possibles

for (int j=p+1 ; j<=n-p ; j++) {

int s=0;

for (int k=j-p ; k<=j+p ; k++) s+=m[i][k];

m[i][j]=(int)s/(2*p+1) ; }

}

void lissercolonnes(int m[][20]) {

for (int j=1 ; j<=n ; j++)// pour toutes les colonnes // pour les lignes possibles

for (int i=p+1 ; i<=n-p ; i++) {

int s=0;

for (int k=j-p ; k<=j+p ; k++) s+=m[k][j];

m[i][j]=s/(2*p+1);

} }

//--- FIN SOURCE ---

--->

(3)

Bien regarder les indices lorsqu'on "lisse" une ligne ou une colonne : pour une ligne, par exemple

colonnes :

j – p...j – 1 j j + 1...j

+ p ligne i

la moyenne :

(m[i] [j-p]+ m[i] [j-p+1]+ … + m[i] [j-1]+ m[i]

[j]+ m[i]

[j+1]+ … + m[i] [j+p-1] + m[i] [j+p]) / (2p+1)

remplace m[i]

[j]

et on a à additionner les

m[i

][

k] pour z=j–p à j+p.

Pour le lissage de chaque colonne j, le problème est analogue pour les limites des indices i de lignes.

Faire les répétitives imbriquées dans l'ordre normal.

élément m[i][j] à transformer

Références

Documents relatifs

La vérification aléatoire des étiquettes hors ligne peut garantir la qualité d'une nouvelle étiquette et peut évaluer la qualité de production des étiquettes sur une

[r]

Au delà de cette évidence, l'utilisation de la presse sur l'internet peut s'avérer une des activités linguistiques les plus adaptées au dévelop- pement de la compréhension orale

Consigne : Découpe et colle les lettres à la bonne place.. Compétence : être capable de reconstituer un titre

Il y a donc une forte corr´ elation lin´ eaire entre x et y, ou de mani` ere ´ equivalente un lien de d´ ependance lin´ eaire tr` es significatif entre ces deux variables.. On

Dans cette dernière partie, on va chercher à déterminer le nombre d’élements de F à coefficients entiers positifs (carrés magiques).. Déterminer des conditions nécessaires

Assurer que les responsables de l’école ont une compréhension adéquate de la problématique de la protection des enfants en ligne Organiser des rencontres d’information

Pour déterminer une base orthonormée d’un sous-espace vectoriel muni du produit scalaire euclidien il suffit d’utiliser la fonction QR , accessible dans le sous-menu Avancé du