Algorithmique aplliquée

Potame137 Messages postés 36 Statut Membre -  
Potame137 Messages postés 36 Statut Membre -
Bonjour,

Le but est de créer un programme qui permet de saisir une matrice de valeurs représentant 4 nuances de couleur (blanc, gris clair, gris foncé et noir) et qui affiche l’image correspondante puis qui affiche l’image avec une accentuation du contraste.
Voici précisément ce que doit faire le programme :
•  saisie d’une matrice NxN (on fixera en constante N à 10) avec uniquement des valeurs
entières entre 0 et 3 ;
•  affichage de l’image correspondante (affichage de carrés de nuances (blanc, gris clair, gris
foncé, noir) ;
•  calcul de la luminosité de l’image (moyenne des valeurs contenues dans la matrice) ;
•  modification du contenu de la matrice en accentuant les contrastes ;
•  affichage de la nouvelle image.

j'ai comme élements fourins la déclarions globale :

// constante
N = 10
// variable globale
couleur[0..3] : entier

et le programme principal :

programme image
image[0..N-1,0..N-1] : entier
debut
// codes couleurs : 15(blanc), 7(gris clair), 8(gris foncé), 0(noir)
couleur = {15, 7, 8, 0}
// saisie de la matrice d’origine
saisieMatrice(image)
// affi chage de l’image
affi cheImage(image)
// accentuation du contraste
accentueContraste(image)
// affi chage de l’image accentuée
affi cheImage(image)
fin

je suis perdu, je ne voie pas par ou commance. je ne cherche pas à ce qu'ont me face le travaille mais juste a ce que l'on méguille merci !

3 réponses

  1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Dans ce que tu as copié, il y a des morceaux de code C++ et des morceaux de pseudo-code pour les 2 des 4 parties à faire :
    • pseudo-code et code principal (qui appelle les 3 fonctions);
    • pseudo-code et code de la fonction saisieMatrice();
    • pseudo-code et code d'une fonction utilitaire saisie() qui est utilisée par saisieMatrice().

    Il manque donc :
    • mettre dans un fichier les 3 codes fournis (dans le bon ordre);
    • écrire le code de la fonction afficheImage();
    • écrire code de la fonction accentueContraste().
    1
    1. Zack Qinn
       
      Bonjour, petite question, comment mettre les trois code fournis dans le bon ordre ?

      Cordialement

      Zack
      0
    2. Potame137 Messages postés 36 Statut Membre
       
      Bonjour,
      Merci de ta réponse cela ma becoup aidée !
      0
  2. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Une entité n'est utilisable qu'après avoir été déclarée ou définie. Donc
    #include <conio.h>
    #include <iostream>
    using namespace std;
    
    int saisie( int x , int y ) { 
        int  val;
        do {
            gotoxy( x , y ); cout << "?"; 
            gotoxy( x , y ); val = getche(); 
        } while ( val < '0' ||  val > '3' ); 
        return val - '0'; 
    }
    
    // constante de la taille de la matrice 
    #define N  10
    // valeur des 4 couleurs : blanc, gris clair, gris foncé et noir 
    int  couleur[4] = {15, 7, 8, 0};
    
    void saisieMatrice( int image[][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 );
            }
        }
    }
    
    void afficheImage( int image[][N] , int posY ) {
       // RESTE A REMPLIR
    }
    
    void accentueContraste( int image[][N] ) { 
       // RESTE A REMPLIR
    }
    
    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;
    }
    PS : ce code c'est du C à 99% et du C++ à 1%, en C++ on écrirait ça différemment
    1
    1. Zack Qinn
       
      Puis-je l'avoir en c++? Je comte commencer un bts sio et cela me serait très très utile pour mes débuts

      Cordialement

      Zack
      0
      1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102 > Zack Qinn
         
        C'est ce que ton prof appelle du C++, puisque je n'ai fait que recopier ses exemples.
        0
    2. Gizzblynk
       
      Bonjour,
      Je ne trouve pas la partie du code

      void afficheImage( int image[][N] , int posY )
      et
      void accentueContraste( int image[][N] )

      un petit coup de pouce ??

      Condialement.
      0
  3. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,

    Il faut commencer par essayer de mettre le pseudo-code sous la forme de code C++, attention la syntaxe du C++ doit impérativement être connue.

    codes couleurs : 15(blanc), 7(gris clair), 8(gris foncé), 0(noir) et variable globale couleur[0..3] : entier devient en C++
    const int couleur[4] = { 15, 7, 8, 0 };
    .
    image[0..N-1,0..N-1] : entier devient en C++
    int image[N][N];
    .
    La partie de programme image jusqu'à fin devient en C++
    int main() {
    jusqu'à
    }
    .
    Les autres lignes du pseudo-code devraient être faisables.

    Après il restera à écrire les trois fonctions :
    void saisieMatrice( int image[][N] )
    void afficheImage( int image[][N] ) 
    void accentueContraste( int image[][N] )
    Ces fonctions utilisent toutes une double boucle for pour aller de 0 à N-1.
    0
    1. Potame137 Messages postés 36 Statut Membre
       
      Bonjour, merci de ton aide !

      Je vien de voire que j'ai deux Annexe avec les éléments fournis pour le programme en version algorithmique puis en C++ !

      Éléments algorithmiques fournis
      Déclarations globales :
      // constante
      N = 10
      // variable globale
      couleur[0..3] : entier


      Programme principal :

      programme image
      image[0..N-1,0..N-1] : entier
      debut
      // codes couleurs : 15(blanc), 7(gris clair), 8(gris foncé), 0(noir)
      couleur = {15, 7, 8, 0}
      // saisie de la matrice d’origine
      saisieMatrice(image)
      // affi chage de l’image
      affi cheImage(image)
      // accentuation du contraste
      accentueContraste(image)
      // affi chage de l’image accentuée
      affi cheImage(image)
      fin



      Module permettant de réaliser une saisie contrôlée (pour forcer la saisie d’une valeur entre 0 et 3) :
      fonction saisie() : entier
      val : entier
      debut
      repeter
      saisir val
      jusqu’à val>=0 et val<=3
      retourner val
      fin



      Module permettant d’afficher les points et de saisir la matrice (le positionnement du curseur n’est
      pas géré dans l’algo) :


      procedure saisieMatrice(image[0..N-1,0..N-1]:entier)
      debut
      afficher "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
      pour x de 0 à N-1
      pour y de 0 à N-1
      afficher "."
      finpour
      finpour
      // saisie
      pour x de 0 à N-1
      pour y de 0 à N-1
      image[x,y] ß saisie()
      finpour
      finpour
      fin


      Éléments de code correspondants fournis

      Déclarations globales :
      // constante de la taille de la matrice
      #define N 10
      // valeur des 4 couleurs : blanc, gris clair, gris foncé et noir
      int couleur[4] = {15, 7, 8, 0} ;
      Programme principal :
      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 ;
      }


      Module permettant de réaliser une saisie contrôlée (pour forcer la saisie d’une valeur entre 0 et
      3), avec positionnement du curseur aux coordonnées (x, y) :

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


      Module permettant d’afficher les points et de saisie la matrice (le positionnement du curseur est
      géré) :

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

      Est donc la question est écrire les algoritmes correctement commentés et indentés des trois modules. Cela veux donc dire que je doit mettre tout le pseudo-code en C++ puis tout mettre boue a boue ??
      0