Probleme en C

Fermé
Prison.Break Messages postés 8 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 3 novembre 2009 - 26 mars 2009 à 10:34
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 26 mars 2009 à 10:54
Bonjour,
j'ai probléme, j'ai besion de votre aide (Programme en C)

L’application à développer consiste à décompacter des données.
But du compactage :
Les informations numériques mémorisées sont comprises entre 0 et 1023 (comme celles provenant
du convertisseur analogique-numérique) et donc codées sur 10 bits. Ce type d’information est
mémorisées généralement dans un double octet avec pour chaque information 6 bits non utilisés.
On peut calculer qu’il y a une perte de 6 bits par information soit 6/16*100=37.5% de l’espace occupé.
Cette perte se répercute aussi sur la durée des échanges. Une procédure de compactage va
permettre de ne stocker que l’information pertinente. Une procédure de décompactage va permettre
de redonner une forme standard aux données afin de les traiter.

Le compactage permet d’éliminer les bits non utiles. Les informations ont été compactées par groupe
de 8 informations. Les 10 bits significatifs de ces 8 informations, soit 80 bits, ont été concaténés puis
découpés en 80/16=5 mots de 16 bits.

Description du décomptage :
L’application demandée consiste à décompacter une série de données. Le nombre de données à
décompacter est un multiple de 5 mots.
L’application doit
• Allouer un espace mémoire réservé à l’allocation dynamique des variables (voir init_mempool
dans la documentation en ligne sur le site spiral). Cet espace mémoire doit être accessible
depuis un programme situé dans une autre page et est donc de type far. Les pointeurs des
variables mémorisées dans cet espace mémoire sont donc de type far.
• Décrire la fonction de « remplissage » d’un tableau de mots de 16 bits.
La fonction short far * Remplissage(char *taille)
�� définit par une simple affection la taille du tableau (multiple de 5),
�� réserve dynamiquement un espace mémoire adapté à la taille du tableau
�� remplit le tableau avec les valeurs souhaitées par de simples affectations
�� retourne la taille du tableau qui vient d’être rempli et l’adresse de ce tableau.
Dans un second temps la taille du tableau et les éléments à stocker dans le tableau pourront
faire l’objet d’une saisie au clavier.
• Décrire la fonction de « décompactage » des données d’un tableau dans un second tableau
connaissant le nombre d’éléments du tableau compacté.
La fonction short far * Decompactage(short far * T, char * taille)
�� réserve dynamiquement un espace mémoire adapté à la taille du tableau recevant les
valeurs décompactées
�� remplit ce tableau à partir des données fournies dans le tableau des valeurs
compactées
�� retourne la taille du tableau des valeurs décompactées et l’adresse de celui-ci.
• Décrire la fonction main qui doit
�� réserver des variables de type pointeur pour accéder aux tableaux.
�� appeler la fonction de remplissage du tableau
�� appeler la fonction de décompactage.

�� libérer la place mémoire réservée pour le tableau des valeurs compactées puisqu’il
n’a plus d’utilité
�� afficher les valeurs après décompactage sous la forme décimale et héxadécimale.
Commentaires
L’algorithme de décompactage peut conduire à utiliser les opérateurs logiques &, &&, |, ||, >> et <<. Il
est bon de tester leur fonctionnement individuellement au préalable.
Conseil
Il est conseillé de commencer par effectuer le décompactage d’une seule série de 5 valeurs
compactées.
Jeu d’essai
On pourra tester le fonctionnement du programme avec les valeurs compactées suivantes :
11A8, 4FA4, 34BE, C92C, 532C, 5F77, 4F90, 06EE, 6EFA, 054B, 6C33, 5B84, 77DB, C4A3, B254,
3DE1, F363, 0E8D, 4999 ,B280.

Base 10 Base 16
0070 0046
0644 0284
1001 03E9
0052 0034
0763 02FB
0146 0092
0788 0314
0812 032C
0381 017D
0884 0374
0996 03E4
0006 0006
0953 03B9
0751 02EF
0641 0281
0331 014B
0432 01B0
0821 0335
0737 02E1
0119 0077
0879 036F
0074 004A
0236 00EC
0596 0254
0247 00F7
0543 021F
0216 00D8
0782 030E
0565 0235
0153 0099
0620 026C
0640 0280

2 réponses

Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
26 mars 2009 à 10:41
c'est un exo de cour que t'as pas envie de faire ca...
pour 200€, je te le fais pour demain matin...
500€ tu l'as ce soir
800€ tu l'as avant 5h (plus dur, faut poser un RTT en derniere minute)

si t'as pas de question precise, je bosse pas gratos moi
1
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
26 mars 2009 à 10:54
allé.... je suis conscient que les tarifs sont cher. Je te fais 5% de réduction par point que tu perds en dessous de 17, gratuit si t'as pas au moins 10 !

edit: 11h46: alors, toujours pas interessé ? essayes de négocier au moins ... si t'as pas confiance en mes compétance,s j'ai mes bulettins de note à l'appuie pour prouver que je suis pas trop mauvais
0