IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

problème de condition?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Par défaut problème de condition?
    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;
    }

  2. #2
    Membre éclairé Avatar de GrosLapin
    Homme Profil pro
    Ingénieur et Etudiant
    Inscrit en
    Avril 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur et Etudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 47
    Par défaut
    Salut,

    J'ai pas tout tout suivi, mais es-tu sur de ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    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])--;
    }
    Exemple :
    image[i][j] = 1 , lumix = 2
    Tu rentres dans le if car (image[i][j])<3
    alors que je pense que tu voulais rentrer dans le else :

    Mets des && ( pour ET ) à la place de tes || ( pour OU )

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    image[i][j])<3 || (image[i][j])!=3 est redondant
    si x < 3 alors x != 3
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Par défaut
    Citation Envoyé par GrosLapin Voir le message
    Salut,

    J'ai pas tout tout suivi, mais es-tu sur de ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    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])--;
    }
    Exemple :
    image[i][j] = 1 , lumix = 2
    Tu rentres dans le if car (image[i][j])<3
    alors que je pense que tu voulais rentrer dans le else :

    Mets des && ( pour ET ) à la place de tes || ( pour OU )
    Un grand merci, je pense que l'erreur est l'inversion de et et ou.
    Ne vous marrez pas trop fort, ou plutôt si, les occasions de se marrer sont trop rares.
    Le !=3 était en désespoir de cause. Je ne savais pas pourquoi à 3 il changeait la valeur, là je comprends.
    Encore un grand merci. Je retourne à mes bouquins.

  5. #5
    Membre éclairé Avatar de GrosLapin
    Homme Profil pro
    Ingénieur et Etudiant
    Inscrit en
    Avril 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur et Etudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 47
    Par défaut
    C'est une erreur classique au début, il y a pas de honte (je sais pas pour les autres mais moi je suis aussi passé par la )

    Pense à mettre le post en résolu,

    Bon courage à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [débutant] problème de condition dans une requete
    Par banker dans le forum Access
    Réponses: 5
    Dernier message: 22/03/2006, 13h52
  2. Réponses: 7
    Dernier message: 27/02/2006, 18h04
  3. [Debutant]Problème de condition
    Par ghan77 dans le forum Langage
    Réponses: 9
    Dernier message: 13/12/2005, 15h20
  4. Problème de condition, je flanche..
    Par KibitO dans le forum Langage
    Réponses: 13
    Dernier message: 11/11/2005, 12h57
  5. Réponses: 6
    Dernier message: 17/08/2005, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo