| 12
 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
 
 | #include <iostream>
#include <myconio.h>
#include <windows.h>
#define N 10
int couleur [4] = {15,7,8,0};
using namespace std;
 
void textattr(int _attr) {
  SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), _attr);
}
 
 
void textbackground(int _color) {
  CONSOLE_SCREEN_BUFFER_INFO Info ;
  GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &Info) ;
  textattr((Info.wAttributes & 0x0F) | (_color<<4));
}
 
 
void gotoxy(int x, int y) {
  COORD c ;
  c.X = x - 1;
  c.Y = y - 1;
  SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
 
// fonction calcul luminositÈ
 
int calculLuminosite (int image[N][N]){
   float total=0; float lumi=0;
        for (int i=0 ;i<N ;i++){
            for (int j=0 ;j<N ;j++){
                total=total+image[i][j];
            }
        }
        textbackground(0);
        cout<<total;
        lumi=total/100;
 
        cout<<lumi;
        return lumi;
}
 
//procÈdure affichage image
void afficheImage (int image[N][N], int x){
    for (int i=0 ;i<N ;i++){
        for (int j=0 ;j<N ;j++){
                gotoxy(x+i,j+20);
                textbackground(couleur[image[i][j]]);cout<<" ";
 
        }
    }
 
 }
 
// procÈdure d'accentuation du contraste
void accentueContraste (int image[N][N]){
    float lumix;
    lumix=calculLuminosite(image);
    for (int i=0 ;i<N ;i++){
        for (int j=0 ;j<N ;j++){
            if(image[i][j]>lumix||(image[i][j])<3 || (image[i][j])!=3){
                (image[i][j])++;
                }else {if((image[i][j])>0 || (image[i][j])<lumix|| (image[i][j])!=0){
                         (image[i][j])--;
                        }
                }
            }
    }
 
}
//fonction saisie
int saisie (int x, int y) {
    int val;
    do {
        gotoxy(x, y); cout<<" ";
        gotoxy(x, y); val=getche() ;
        }while(val<48 || val>51) ;
        return (val-48);
}
 
void saisieMatrice (int image[N][N]){
    gotoxy(1,1); cout<< "Saisie de la matrice (valeurs 0 blanc, 1 gris clair, 2 gris foncÈ ou 3 noir) :" ;
    //affichage des points pour montrer o˘ se fait la saisie
    for (int x=0 ;x<N ; x++){
        for(int y=0 ;y<N ; y++) {
            gotoxy(x*3+1, y+2) ; cout<< "." ;
            }
        }
        //saisie
        for (int x=0; x<N; x++){
            for(int y=0 ;y<N ; y++) {
                image[x][y]=saisie(x*3+1, y+2) ;
            }
        }
}
 
 
int main(){
    //dÈclarations
    int image[N][N];
    //saisie de la matrice d'origine
    saisieMatrice(image);
    //Affichage de l'image
    afficheImage(image,1);
    //accentuation du contraste
    accentueContraste(image);
    //affichage de l'image
    afficheImage(image,N+10);
    return 0;
} | 
Partager