[C] tdc6

Voir le sujet précédent Voir le sujet suivant Aller en bas

[C] tdc6

Message  Terminatour le Ven 12 Nov 2010, 14:42

Salutation à la populace,

mon problème est le suivant: je ne comprends pas la question ex16.
En détail:
j'aimerai plus de précisions concernant la séquence:
je voudrais savoir si chaque morceaux de la séquence excepté le dernier, qui est déclaré comme du int, se trouve être d'une taille d'un octet.
il le précise pour le premier mais pas pour les 2 autres.

En vous remerciant, pirat

Terminatour

Nombre de messages : 344
Age : 25
Prénom : Louis-Julien
Statut : statutaire
Localisation : localisée
Date d'inscription : 04/10/2009

Revenir en haut Aller en bas

Re: [C] tdc6

Message  smb le Ven 12 Nov 2010, 15:18

Configurations possibles pour une séquence:
- La première information est toujours contenue dans un octet dont les valeurs possibles sont données par 3 macros;
- La deuxième information est, en fonction de la valeur précédente, soit contenue dans un char, soit dans un short, soit dans un float. Cette information est un offset permettant de retrouver le caractère dans une chaîne dont l'adresse suit.
- La troisième information est l'adresse de la chaîne en question (const char *).
- La quatrième information est toujours contenue dans un int et va permettre de se positionner vers la séquence suivante à traiter, à partir de l'adresse de celle-ci.

Une séquence peut donc faire soit 10 octets, soit 11 octets, soit 13 octets.

Si le terme octet te gêne, remplace le par byte !

Neutral

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [C] tdc6

Message  Terminatour le Ven 12 Nov 2010, 15:51

merci merci

ouh là moi je lis + avec ce que vous avez inscrit:

un byte
+ (sizeof(char) ou sizeof(short) ou sizeof(float))
+ un byte
+ 4 bytes

là çà me fait une taille de max 10 bytes ou octets.

Aussi moi j'ai pas toujours 1, 2 ou 3 pour l'offset de la première séquence, keZAko de mon programme mal écris.

Code:
void reAssembleP16() {
   char * zone;
   char * safeZone;
   int position;
   const char * mot;
   int offset;
   int ok = 1;

   zone = getTexte05();
   safeZone = zone;
   offset = (int) *zone;

   while (ok != 0) {
      printf("getTexte05; boucle débutn voila le swicht %d \n",
            ((UCHAR) *(zone + offset)));
      switch ((UCHAR) *(zone + offset)) {
   case 1: {
      position = (char) *(zone + offset + sizeof(UCHAR));
      mot = (zone + offset + sizeof(UCHAR) + sizeof(char));
      offset = (int) (zone + offset + sizeof(UCHAR)+ sizeof(char) + 1);
      break;
   }
   case 2: {
      position = (short) *(zone + offset + sizeof(UCHAR));
      mot = (zone + offset + sizeof(UCHAR) + sizeof(short));
      offset = (int) (zone + offset + sizeof(UCHAR)+ sizeof(short) + 1);
      break;
   }
   case 3: {
      position = (float) *(zone + offset + sizeof(UCHAR));
      mot = (zone + offset + sizeof(UCHAR) + sizeof(float));
      offset = (int) (zone + offset + sizeof(UCHAR)+ sizeof(float) + 1);
      break;
   }
      }
      printf("getTexte05; après switch\n");

      printf("%c\n", (char) *(mot + position));

      ok = offset;
      printf("getTexte05; boucle fin\n");
   }
}

merci d'avance pour vos futurs réponses Wink


Dernière édition par Terminatour le Ven 12 Nov 2010, 16:49, édité 3 fois

Terminatour

Nombre de messages : 344
Age : 25
Prénom : Louis-Julien
Statut : statutaire
Localisation : localisée
Date d'inscription : 04/10/2009

Revenir en haut Aller en bas

Re: [C] tdc6

Message  smb le Ven 12 Nov 2010, 16:08

Pour certaines choses j'ai comme qui dirait l'impression d'avoir parlé dans le vide au cours !

Donc, pour toi, la taille d'un const char * c'est 1, et la taille d'un int c'est 1 aussi ?
On n'est pas encore sorti de l'auberge !!!

Les séquences d'informations qui permettent de retrouver les caractères se trouvent dans une zone mémoire dont l'adresse est retournée par une fonction. Comment fais-tu pour obtenir l'adresse de la 1ière séquence ?

Relis l'énoncé, plusieurs fois s'il le faut !


Rolling Eyes

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [C] tdc6

Message  Terminatour le Ven 12 Nov 2010, 16:42

et bien je fais:
int offset = (int) *zone;
puis lorsque je l'expoite pour la première séquence
* (zone + offset)

la taille d'un int est de 4 bytes.
ok pour la taille du int, erreur de frappes.

j'ai éditer mon code pour prendre en compte la taille de la chaîne + le déplacement relatif par rapport à
l'adresse de la séquence courante
çà marche pas mieux, évidemment ! Smile

Code:
void reAssembleP16() {
   char * zone;
   char * safeZone;
   char * safeZone2;
   int position;

   const char * mot;
   int offset;
   int ok = 1;

   zone = getTexte05();
   safeZone = zone;
   offset = (int) *zone;

   while (ok != 0) {
      printf("getTexte05; boucle débutn voila le swicht %d \n",
            ((UCHAR) *(zone + offset)));
      switch ((UCHAR) *(zone + offset)) {
   case 1: {
      position = (char) *(zone + offset + sizeof(UCHAR));
      mot = (zone + offset + sizeof(UCHAR) + sizeof(char));
      offset = (int) (zone + offset + sizeof(UCHAR)+ sizeof(char) + strlen(mot));
      break;
   }
   case 2: {
      position = (short) *(zone + offset + sizeof(UCHAR));
      mot = (zone + offset + sizeof(UCHAR) + sizeof(short));
      offset = (int) (zone + offset + sizeof(UCHAR)+ sizeof(short) + strlen(mot));
      break;
   }
   case 3: {
      position = (float) *(zone + offset + sizeof(UCHAR));
      mot = (zone + offset + sizeof(UCHAR) + sizeof(float));
      safeZone2 = zone + offset;
      offset = (int) (zone + offset + sizeof(UCHAR)+ sizeof(float) + strlen(mot));
      zone = safeZone2 + offset;
      break;
   }
      }
      printf("getTexte05; après switch\n");

      printf("%c\n", (char) *(mot + position));

      ok = offset;
      printf("getTexte05; boucle fin\n");
   }
}


Mais non mais non, je comprends juste plus lentement pirat (faut taper sur le clou)

Terminatour

Nombre de messages : 344
Age : 25
Prénom : Louis-Julien
Statut : statutaire
Localisation : localisée
Date d'inscription : 04/10/2009

Revenir en haut Aller en bas

Re: [C] tdc6

Message  smb le Ven 12 Nov 2010, 17:03

Bon, je tape sur le clou, très fort.

Relis l'énoncé car il y a quelque chose qui t'échappe !

Relis l'énoncé.
Relis l'énoncé.
Relis l'énoncé.
Relis l'énoncé.
Relis l'énoncé.
Relis l'énoncé.


smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [C] tdc6

Message  Contenu sponsorisé Aujourd'hui à 15:18


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum