[TD5] en C

Page 1 sur 2 1, 2  Suivant

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

[TD5] en C

Message  newu le Sam 31 Oct 2009, 23:33

Pour la fonction : void * getTexte02 (unsigned int *) ;

Est-ce quelqu'un pourrait me donner au moins un des textes que la fonction doit retourner.

Merci.

newu

Nombre de messages : 117
Prénom : Abdou
Statut : 3ème gestion
Localisation : Je dors à l'école.
Date d'inscription : 25/09/2009

Revenir en haut Aller en bas

Re: [TD5] en C

Message  smb le Sam 31 Oct 2009, 23:39

newu a écrit:Pour la fonction : void * getTexte02 (unsigned int *) ;

Est-ce quelqu'un pourrait me donner au moins un des textes que la fonction doit retourner.

Merci.
Moi !
Mais pas ce soir, je suis en w-e à l'étranger.

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: [TD5] en C

Message  newu le Sam 31 Oct 2009, 23:44

Merci, et bon weekend à l'étranger Monsieur Monbaliu.

newu

Nombre de messages : 117
Prénom : Abdou
Statut : 3ème gestion
Localisation : Je dors à l'école.
Date d'inscription : 25/09/2009

Revenir en haut Aller en bas

Re: [TD5] en C

Message  newu le Dim 01 Nov 2009, 13:29

Est-ce que c'est normal d'avoir pour cette fonction, dans les segments retournés, une valeur négatif pour la taille d'un morceau du texte.

newu

Nombre de messages : 117
Prénom : Abdou
Statut : 3ème gestion
Localisation : Je dors à l'école.
Date d'inscription : 25/09/2009

Revenir en haut Aller en bas

Re: [TD5] en C

Message  nvs le Dim 01 Nov 2009, 13:55

newu a écrit:Est-ce que c'est normal d'avoir pour cette fonction, dans les segments retournés, une valeur négatif pour la taille d'un morceau du texte.
non.








_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [TD5] en C

Message  newu le Dim 01 Nov 2009, 14:09

Merci.

C'est moi qui s'est trompé.

newu

Nombre de messages : 117
Prénom : Abdou
Statut : 3ème gestion
Localisation : Je dors à l'école.
Date d'inscription : 25/09/2009

Revenir en haut Aller en bas

Re: [TD5] en C

Message  nvs le Dim 01 Nov 2009, 14:35

newu a écrit:Pour la fonction : void * getTexte02 (unsigned int *) ;

Est-ce quelqu'un pourrait me donner au moins un des textes que la fonction doit retourner.
Tu dois devenir l'homme que tu es. Fais ce que toi seul peut faire.
Deviens sans cesse celui que tu es, sois le maître et le sculpteur de toi-même.
(Nietzsche)






_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [TD5] en C

Message  smb le Dim 01 Nov 2009, 18:46

Et voici les deux autres textes possibles.

J'ai toujours remis au surlendemain ce que j'aurais parfaitement pu faire
l'avant-veille.
(Alphonse Allais)


Pourquoi essayer de faire semblant d'avoir l'air de travailler ?
C'est de la fatigue inutile !
(Pierre Dac)


Pour chaque exercice, il y a trois textes possibles !
Bon travail.

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: [TD5] en C

Message  newu le Dim 01 Nov 2009, 18:49

sinon c'est normal d'avoir pour fct : unsigned int getTexte03 (InfoMorceau **) ;

d'avoir dans InfoMorceau pour la position des nombres plus grand que le nombre de morceau.

Parce que lorsque je recupere la position, ça me donne des nombre de l'ordre de + de 100.

Merci.

newu

Nombre de messages : 117
Prénom : Abdou
Statut : 3ème gestion
Localisation : Je dors à l'école.
Date d'inscription : 25/09/2009

Revenir en haut Aller en bas

Re: [TD5] en C

Message  smb le Dim 01 Nov 2009, 19:01

newu a écrit:sinon c'est normal d'avoir pour fct : unsigned int getTexte03 (InfoMorceau **) ;

d'avoir dans InfoMorceau pour la position des nombres plus grand que le nombre de morceau.

Parce que lorsque je recupere la position, ça me donne des nombre de l'ordre de + de 100.

Merci.

Ce n'est pas normal !

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: [TD5] en C

Message  newu le Dim 01 Nov 2009, 19:05

voilà


[code]
InfoMorceau *tab, *test ;
int calm ;
unsigned char position ;
unsigned int i, taille = getTexte03 ( &tab);
printf( "%i ", taille) ;

inverseMot( tab->morceau, strlen ( tab->morceau) ) ;
imprimerMot( tab->morceau, strlen ( tab->morceau) ) ;
printf( " La position = %i ", *(tab->morceau)) ;
[quote]

pour la position ça donne des trucs vraiment bizarre.

newu

Nombre de messages : 117
Prénom : Abdou
Statut : 3ème gestion
Localisation : Je dors à l'école.
Date d'inscription : 25/09/2009

Revenir en haut Aller en bas

Re: [TD5] en C

Message  smb le Dim 01 Nov 2009, 19:11

[quote="newu"]voilà


[code]
InfoMorceau *tab, *test ;
int calm ;
unsigned char position ;
unsigned int i, taille = getTexte03 ( &tab);
printf( "%i ", taille) ;

inverseMot( tab->morceau, strlen ( tab->morceau) ) ;
imprimerMot( tab->morceau, strlen ( tab->morceau) ) ;
printf( " La position = %i ", *(tab->morceau)) ;


pour la position ça donne des trucs vraiment bizarre.

Cherche un peu par ici :

[code]
printf( " La position = %i ", *(tab->morceau)) ;
[/code]


Dernière édition par smb le Dim 01 Nov 2009, 19:14, édité 1 fois

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: [TD5] en C

Message  nvs le Dim 01 Nov 2009, 19:11

newu a écrit:
Code:

        [...]   
        imprimerMot( tab->morceau, strlen ( tab->morceau) ) ;
        printf( " La position = %i ", *(tab->morceau)) ;

pour la position ça donne des trucs vraiment bizarre.
tu m'étonnes ! elle n'a pas deux champs, la structure InfoMorceau ?





_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [TD5] en C

Message  newu le Dim 01 Nov 2009, 19:15

Merci bp.

newu

Nombre de messages : 117
Prénom : Abdou
Statut : 3ème gestion
Localisation : Je dors à l'école.
Date d'inscription : 25/09/2009

Revenir en haut Aller en bas

Re: [TD5] en C

Message  newu le Dim 01 Nov 2009, 19:41

Code:
   
InfoMorceau *test;
unsigned int taille = getTexte03 ( &test);
while( test->posMorceau != 1 ) {
  test = test + sizeof(InfoMorceau) ;
}

j'essaye juste rechercher le morceau numero un, et ça ne marche pas.

newu

Nombre de messages : 117
Prénom : Abdou
Statut : 3ème gestion
Localisation : Je dors à l'école.
Date d'inscription : 25/09/2009

Revenir en haut Aller en bas

Re: [TD5] en C

Message  smb le Dim 01 Nov 2009, 19:56

newu a écrit:
Code:
   
InfoMorceau *test;
unsigned int taille = getTexte03 ( &test);
while( test->posMorceau != 1 ) {
  test = test + sizeof(InfoMorceau) ;
}

j'essaye juste rechercher le morceau numero un, et ça ne marche pas.

Comme le dit l'énoncé, en l'adaptant au code que tu fournis, l'adresse d'un tableau est mis par la fonction dans le pointeur "test". N'irais-tu pas voir comment utiliser un élément d'un tableau ?
Et n'oublie pas la formule "magique" :

* ( pointeurNonVoid + x ) <--> pointeurNonVoid[x]

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: [TD5] en C

Message  newu le Dim 01 Nov 2009, 20:40

J'ai quand même des problèmes, j'affiche le texte suivant leur position et ça me donne des bizarreries de ce style :

texte1 :

ex14() :
Le nombre de morceau est :5
ent un regard.
(Philippe Geluck)
( position du morceau = 1 )
éguiser en miroir pour que les autres nous accord ( position du morceau = 2 )
devrait
pas se d ( position du morceau = 3 )
e ( position du morceau = 4 )
Dans ce monde égoïste qui est le nôtre, on se demande parfois si on n ( position du morceau = 5 )

texte2 :

ex14() :
Le nombre de morceau est :13
uck)
( position du morceau = 1 )
n regard.
(Philippe Gel ( position du morceau = 2 )
ous accordent u ( position du morceau = 3 )
s n ( position du morceau = 4 )
pour que les autre ( position du morceau = 5 )
se déguiser en miroir ( position du morceau = 6 )
evrait
pas ( position du morceau = 7 )
is si on ne d ( position du morceau = 8 )
se demande parfo ( position du morceau = 9 )
tre, on ( position du morceau = 10 )
nde égoïste qui est le nô ( position du morceau = 11 )
ans ce mo ( position du morceau = 12 )
D ( position du morceau = 13 )

texte3 :

ex14() :
Le nombre de morceau est :9
Wilde)
( position du morceau = 1 )
( position du morceau = 2 )
emier.
(Oscar ( position du morceau = 3 )
s finissent tous pr ( position du morceau = 4 )
de gauche voudrait qu'il ( position du morceau = 5 )
elques-uns en route.
L'homme ( position du morceau = 6 )
droite estime qu'on devrait en arrêter qu ( position du morceau = 7 )
part sur la même ligne.
L'homme de ( position du morceau = 8 )
Le démocrate exige que tous les citoyens prennent le dé ( position du morceau = 9 )

newu

Nombre de messages : 117
Prénom : Abdou
Statut : 3ème gestion
Localisation : Je dors à l'école.
Date d'inscription : 25/09/2009

Revenir en haut Aller en bas

Re: [TD5] en C

Message  smb le Dim 01 Nov 2009, 21:20

Tu es proche de la solution !
Relis l'énoncé, ... attentivement, ainsi que la structure InfoMorceau, et tu trouveras !










N'attends plus de moi de message avant demain soir.

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: [TD5] en C

Message  newu le Dim 01 Nov 2009, 21:54

Voilà j'ai trouvé.
Merci.

Maintenant pour le :void * getTexte04 (void) .
on dit que :

La fonction getTexte04 retourne l'adresse d'une zone mémoire qu'elle a allouée
dynamiquement. Cette zone contient un certain nombre de séquences configurées toutes de la
même façon :
- un unsigned short donnant l'offset qu'il faut ajouter à l'adresse de la zone pour trouver
la séquence suivante;
- un unsigned char donnant la position du morceau dans le texte (1 pour le 1er);
- un unsigned char donnant la longueur du morceau;
- une suite de caractères, non terminée par '\0', constituant le morceau du texte.

cette zone est une sorte de structure du style : { unsigned char , unsigned char, unsigned char, char * }

je ne sais pas.

Moi j'ai essaye d'avoir l'offset, j'ai fait comme ça et ça ne marche pas.

Code:

void ex15() {

   short * s ;
   s  = (short *) getTexte04() ;
   printf( " %s ", *s ) ;
   free(s);

}

newu

Nombre de messages : 117
Prénom : Abdou
Statut : 3ème gestion
Localisation : Je dors à l'école.
Date d'inscription : 25/09/2009

Revenir en haut Aller en bas

Re: [TD5] en C

Message  Wark le Dim 01 Nov 2009, 22:11

En C il existe plusieurs types entiers, dépendant du nombre d'octets sur lesquels ils sont codés ainsi que de leur format, c'est-à-dire s'ils sont signés (possédant le signe - ou +) ou non. Par défaut les données sont signées.

Source : http://www.commentcamarche.net/contents/c/ctype.php3

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: [TD5] en C

Message  nvs le Dim 01 Nov 2009, 22:14

newu a écrit:Maintenant pour le :void * getTexte04 (void) .
on dit que :

La fonction getTexte04 retourne l'adresse d'une zone mémoire qu'elle a allouée
dynamiquement. Cette zone contient un certain nombre de séquences configurées toutes de la
même façon :
- un unsigned short donnant l'offset qu'il faut ajouter à l'adresse de la zone pour trouver
la séquence suivante;
- un unsigned char donnant la position du morceau dans le texte (1 pour le 1er);
- un unsigned char donnant la longueur du morceau;
- une suite de caractères, non terminée par '\0', constituant le morceau du texte.

cette zone est une sorte de structure du style : { unsigned char , unsigned char, unsigned char, char * }
non. cette zone est constituée de séquences configurées toutes de la même façon :
- un unsigned short donnant l'offset qu'il faut ajouter à l'adresse de la zone pour trouver la séquence suivante ;
- un unsigned char donnant la position du morceau dans le texte (1 pour le 1er) ;
- un unsigned char donnant la longueur du morceau ;
- une suite de caractères, non terminée par '\0', constituant le morceau du texte.
pas la moindre trace d'une structure dans ce qui précède.

newu a écrit:Moi j'ai essaye d'avoir l'offset, j'ai fait comme ça et ça ne marche pas.

Code:

void ex15() {

   short * s ;
   s  = (short *) getTexte04() ;
   printf( " %s ", *s ) ;
   free(s);

}
il me semble qu'on parle d'unsigned short dans l'énoncé. d'autre part, tu trouveras ici une documentation relative aux spécificateurs de formats de printf.










_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [TD5] en C

Message  nvs le Dim 01 Nov 2009, 22:25

Wark a écrit:
En C il existe plusieurs types entiers, dépendant du nombre d'octets sur lesquels ils sont codés ainsi que de leur format, c'est-à-dire s'ils sont signés (possédant le signe - ou +) ou non. Par défaut les données sont signées.

Source : http://www.commentcamarche.net/contents/c/ctype.php3
ce n'est pas correct que Par défaut les données sont signées. on a plutôt que, à l'exception du type char, les types entiers sont par défaut signés. le type char est signé ou non signé selon le compilateur. pour forcer un type entier à être signé, le mot clé signed doit être utilisé pour le qualifier. pour forcer un type entier à être non signé, le mot clé unsigned doit être utilisé pour le qualifier.

source : c in a nutshell, p 22.







_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [TD5] en C

Message  newu le Dim 01 Nov 2009, 23:21

je ne comprends pas la zone de mémore retournée par cette fonction.

newu

Nombre de messages : 117
Prénom : Abdou
Statut : 3ème gestion
Localisation : Je dors à l'école.
Date d'inscription : 25/09/2009

Revenir en haut Aller en bas

Re: [TD5] en C

Message  nvs le Lun 02 Nov 2009, 10:28

la zone est constituée de séquences. les séquences sont constituées comme indiqué : un unsigned short, deux unsigned char, des char. l'emplacement d'une séquence est donné par l'adresse de la zone plus l'offset récupéré lors du traitement de la séquence précédente. la première séquence a comme offset la valeur zéro.









_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [TD5] en C

Message  smb le Lun 02 Nov 2009, 12:24

newu a écrit:je ne comprends pas la zone de mémore retournée par cette fonction.

Voici un exemple de zone. L'image est en hexadécimal donc 2 chiffres pour un octet !
Je n'ai pas inversé les octets de l'unsigned short.

00180305424F495241FFFFFF0000020420425520FFFFFFFF000C01055155492041FF

En rouge l'unsigned short contenant l'offset de la séquence suivante à traiter, en vert les lettres du morceau, entre les deux la position et la longueur. Les FF sont des "crasses".
Avec une table ascii et un peu de réflexion, tu devrais reconstituer :
QUI A BU BOIRA

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: [TD5] en C

Message  Contenu sponsorisé Aujourd'hui à 07:15


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

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