Algorithmique aplliquée

Fermé
Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020 - 24 mai 2016 à 14:57
Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020 - 25 mai 2016 à 16:04
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

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
24 mai 2016 à 23:30
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
Bonjour, petite question, comment mettre les trois code fournis dans le bon ordre ?

Cordialement

Zack
0
Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020
25 mai 2016 à 16:04
Bonjour,
Merci de ta réponse cela ma becoup aidée !
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
25 mai 2016 à 01:02
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
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
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101 > Zack Qinn
25 mai 2016 à 08:50
C'est ce que ton prof appelle du C++, puisque je n'ai fait que recopier ses exemples.
0
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
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
24 mai 2016 à 18:37
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
Potame137 Messages postés 32 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 17 août 2020
24 mai 2016 à 21:15
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