Bonjour,
Je débute en programmation en général et en c++ en particulier.
Je dois, dans le cadre d.un devoir, coder un programme qui doit permettre "d'accentuer le contraste " d'un groupe de points affichés à l'aide d'une matrice. Certains modules sont donnés et l'utilisation de gotoxy est imposée.
Le principe est de calculer la luminosité moyenne de la matrice après avoir entré les valeurs de chaque terme dans la matrice, ou 0 représenté du blanc, 1 du gris clair, 2 du gris foncé et 3 du noir.
Puis, tous les points au dessus de la luminosité moyenne et en dessous de noir sont foncés, ceux en dessous de la luminosité moyenne et au dessus de blanc sont éclaircis.
Merci à ceux qui ont suivi jusque-là, c'est déjà beaucoup...
J'arrive à gérer la saisie de la matrice et l'affichage, mais le changement de couleur ne marche pas comme attendu et je ne vois pas pourquoi.
Je joins le code complet, si une bonne âme pouvait critiquer, soyez sans crainte, je serais fort...

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
#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;
}