Probleme langage c
Résolu
kekedu38
-
Raymond PENTIER Messages postés 58989 Date d'inscription Statut Contributeur Dernière intervention -
Raymond PENTIER Messages postés 58989 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir,
je suis un étudiant en GEII 1ére année et j'ai un exercice de programmation en c a faire pour mardi.
La consigne de l'exercice :
Écrire un programme qui demande les valeurs des 3 composantes de couleurs (rouge, vert et bleu), chacune étant codée sur 8 bits, pour constituer une valeur de pixel sur 24 bits de la manière suivante : rrrrrrrrvvvvvvvvbbbbbbbb.
Votre programme devra faire appel à une fonction de saisie (à écrire) qui devra s’assurer que la valeur de chacune des composantes est bien comprise entre 0 et 255 inclus.
Le problème :
il faut que j'arrive a isolé 4 bit du Tpixel pour les envoyer dans la fonction : void fonction_switch_hexa(short int mot4bit), et ainsi pouvoir les convertir en hexadecimal.
void fonction_saisie(unsigned *pVAL1,unsigned *pVAL2,unsigned *pVAL3);
void fonction_conversion_decimal_binaire(short int tab[max],short int rou,short int ver,short int ble);
void fonction_switch_hexa(short int mot4bit);
int main(void)
{
short int i;
short int Tpixel[max];
unsigned r,v,b;
fonction_saisie(&r,&v,&b);
fonction_conversion_decimal_binaire(Tpixel,r,v,b);
printf("\nValeur du pixels sur 24 bits en binaire : ");
for(i=0;i<24;i++)
{
printf("%hd",Tpixel[i]);
}
printf("\n");
return(0);
}
void fonction_saisie(unsigned *pVAL1,unsigned *pVAL2,unsigned *pVAL3)
{
long int rouge,vert,bleu;
//rouge
do
{
printf("\ndonnez la composante rouge en decimal : ");
scanf("%ld",pVAL1);
}while(*pVAL1<0||*pVAL1>255);
//vert
do
{
printf("\ndonnez la composante vert en decimal : ");
scanf("%ld",pVAL2);
}while(*pVAL2<0||*pVAL2>255);
//bleu
do
{
printf("\ndonnez la composante bleu en decimal : ");
scanf("%ld",pVAL3);
}while(*pVAL3<0||*pVAL3>255);
}
void fonction_conversion_decimal_binaire(short int tab[max],short int rou,short int ver,short int ble)
{
short int i;
float result;
// rouge
for(i=0;i<8;i++)
{
result=rou%2;
rou=rou/2;
if(result==0)
{
tab[7-i]=0;
}
if(result==1)
{
tab[7-i]=1;
}
}
printf("\nLe resultat de la conversion en binaire de la composante rouge : ");
for(i=0;i<8;i++)
{
printf("%hd",tab[i]);
}
//vert
for(i=0;i<8;i++)
{
result=ver%2;
ver=ver/2;
if(result==0)
{
tab[15-i]=0;
}
if(result==1)
{
tab[15-i]=1;
}
}
printf("\nLe resultat de la conversion en binaire de la composante vert : ");
//bleu
for(i=8;i<16;i++)
{
printf("%hd",tab[i]);
}
for(i=0;i<8;i++)
{
result=ble%2;
ble=ble/2;
if(result==0)
{
tab[23-i]=0;
}
if(result==1)
{
tab[23-i]=1;
}
}
printf("\nLe resultat de la conversion en binaire de la composante bleu : ");
for(i=16;i<24;i++)
{
printf("%hd",tab[i]);
}
printf("\n");
}
void fonction_switch_hexa(short int mot4bit)
{
switch(mot4bit)
{
case 0000 : printf("0");
break;
case 0001 : printf("1");
break;
case 0010 : printf("2");
break;
case 0011 : printf("3");
break;
case 0100 : printf("4");
break;
case 0101 : printf("5");
break;
case 0110 : printf("6");
break;
case 0111 : printf("7");
break;
case 1000 : printf("8");
break;
case 1001 : printf("9");
break;
case 1010 : printf("A");
break;
case 1011 : printf("B");
break;
case 1100 : printf("C");
break;
case 1101 : printf("D");
break;
case 1110 : printf("E");
break;
case 1111 : printf("F");
break;
default : printf("ERREUR");
}
}
Quelqu'un pourrait m'aider ?
je suis un étudiant en GEII 1ére année et j'ai un exercice de programmation en c a faire pour mardi.
La consigne de l'exercice :
Écrire un programme qui demande les valeurs des 3 composantes de couleurs (rouge, vert et bleu), chacune étant codée sur 8 bits, pour constituer une valeur de pixel sur 24 bits de la manière suivante : rrrrrrrrvvvvvvvvbbbbbbbb.
Votre programme devra faire appel à une fonction de saisie (à écrire) qui devra s’assurer que la valeur de chacune des composantes est bien comprise entre 0 et 255 inclus.
Le problème :
il faut que j'arrive a isolé 4 bit du Tpixel pour les envoyer dans la fonction : void fonction_switch_hexa(short int mot4bit), et ainsi pouvoir les convertir en hexadecimal.
void fonction_saisie(unsigned *pVAL1,unsigned *pVAL2,unsigned *pVAL3);
void fonction_conversion_decimal_binaire(short int tab[max],short int rou,short int ver,short int ble);
void fonction_switch_hexa(short int mot4bit);
int main(void)
{
short int i;
short int Tpixel[max];
unsigned r,v,b;
fonction_saisie(&r,&v,&b);
fonction_conversion_decimal_binaire(Tpixel,r,v,b);
printf("\nValeur du pixels sur 24 bits en binaire : ");
for(i=0;i<24;i++)
{
printf("%hd",Tpixel[i]);
}
printf("\n");
return(0);
}
void fonction_saisie(unsigned *pVAL1,unsigned *pVAL2,unsigned *pVAL3)
{
long int rouge,vert,bleu;
//rouge
do
{
printf("\ndonnez la composante rouge en decimal : ");
scanf("%ld",pVAL1);
}while(*pVAL1<0||*pVAL1>255);
//vert
do
{
printf("\ndonnez la composante vert en decimal : ");
scanf("%ld",pVAL2);
}while(*pVAL2<0||*pVAL2>255);
//bleu
do
{
printf("\ndonnez la composante bleu en decimal : ");
scanf("%ld",pVAL3);
}while(*pVAL3<0||*pVAL3>255);
}
void fonction_conversion_decimal_binaire(short int tab[max],short int rou,short int ver,short int ble)
{
short int i;
float result;
// rouge
for(i=0;i<8;i++)
{
result=rou%2;
rou=rou/2;
if(result==0)
{
tab[7-i]=0;
}
if(result==1)
{
tab[7-i]=1;
}
}
printf("\nLe resultat de la conversion en binaire de la composante rouge : ");
for(i=0;i<8;i++)
{
printf("%hd",tab[i]);
}
//vert
for(i=0;i<8;i++)
{
result=ver%2;
ver=ver/2;
if(result==0)
{
tab[15-i]=0;
}
if(result==1)
{
tab[15-i]=1;
}
}
printf("\nLe resultat de la conversion en binaire de la composante vert : ");
//bleu
for(i=8;i<16;i++)
{
printf("%hd",tab[i]);
}
for(i=0;i<8;i++)
{
result=ble%2;
ble=ble/2;
if(result==0)
{
tab[23-i]=0;
}
if(result==1)
{
tab[23-i]=1;
}
}
printf("\nLe resultat de la conversion en binaire de la composante bleu : ");
for(i=16;i<24;i++)
{
printf("%hd",tab[i]);
}
printf("\n");
}
void fonction_switch_hexa(short int mot4bit)
{
switch(mot4bit)
{
case 0000 : printf("0");
break;
case 0001 : printf("1");
break;
case 0010 : printf("2");
break;
case 0011 : printf("3");
break;
case 0100 : printf("4");
break;
case 0101 : printf("5");
break;
case 0110 : printf("6");
break;
case 0111 : printf("7");
break;
case 1000 : printf("8");
break;
case 1001 : printf("9");
break;
case 1010 : printf("A");
break;
case 1011 : printf("B");
break;
case 1100 : printf("C");
break;
case 1101 : printf("D");
break;
case 1110 : printf("E");
break;
case 1111 : printf("F");
break;
default : printf("ERREUR");
}
}
Quelqu'un pourrait m'aider ?
A voir également:
- Probleme langage c
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
1 réponse
Non, car ce n'est ni le rôle, ni la vocation de CCM.
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
https://forums.commentcamarche.net/forum/s/msgs/devoir
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
https://forums.commentcamarche.net/forum/s/msgs/devoir