IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Type complexe .


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Par défaut Type complexe .
    Salut,

    J'ai un exercice sur les types où je galère. L'énoncé :

    On souhaite disposer d'une zone en mémoire susceptible de contenir :
    - un tableau de 16 char
    - un tableau de 8 short
    - un tableau de 4 int
    - un tableau de 4 float
    - un tableau de 2 double

    1 ) Donner la définition d'un type contenu permettant la définition de variables associées à de telles zones en mémoire.
    2 ) Définir un type, nommé mémoire et utilisant le précédent, permettant au travers d'un champ supplémentaire de type int de choir la bonne interprétation du contenu de la zone associée.

    Suivie d'autres questions plus déroutantes, mais j'aimerais bien savoir déjà comment procéder pour ces 2 questions. J'avais pensé à utiliser union mais je ne pense pas que ça marchera au vue de la question 2.

    Quelqu'un aurait la solution ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    1- Puisque la même zone mémoire peut être occupée par différents types de données, il faut effectivement se tourner vers une union.

    2- maintenant on ajoute une information supplémentaire, la nature de l'élément de l'union. Cette information étant directement liée à l'union, on associra les deux dans une structure.

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 498
    Billets dans le blog
    1
    Par défaut
    Je ne suis plus certain si les types énumérés sont forcément stockés dans un int, mais si tel est le cas, tu pourrais en utiliser un pour le type de la mémoire. Ca te donnerait un code plus explicite de faire memoire.type = ENTIERS que memoire.type = 2.

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    @Bktero :
    Je ne suis plus certain si les types énumérés sont forcément stockés dans un int,...
    Tu as raison de n'en être pas certain car ce n'est pas le cas.
    Ce sont des entiers (signés ou non) dont le type est à la discrétion du compilateur qui peut choisir ce qui l'arrange et peut dépendre de la composition de l'énumération.

    Par contre, les constantes de l'énumération sont des int.

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 498
    Billets dans le blog
    1
    Par défaut
    En gros, ça peut-être un char, short, int, long, long long, unsigned ou, mais les valeurs sont entières ? Et dans le même programme, ça peut varier d'une énumération à l'autre ?

    Dommage pour Raikyn, car du coup ça ne répond plus à ces contraintes.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Par défaut
    Donc il faut faire un union pour la premire question puis l'inclure dans un enum ?

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 498
    Billets dans le blog
    1
    Par défaut
    Non.

    Un type énuméré est un type avec des valeurs "particulières", par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typedef enum {caracteres, courts, entiers, flottants, doubles} TYPE_MEMOIRE;
    typedef enum {bleu, blanc, rouge} couleurs;
    Une structure est un type permettant de regrouper des objets de types différents. Toi, tu souhaites mettre un objet "zone de stockage" (que tu vas réaliser avec une union, à la question 1) et un objet "type de mémoire" qui sera en fait un int(*). C'est donc une bien structure qu'il te faut, à la question 2.

    (*) : tu ne pourras pas utiliser un type énuméré comme celui ci-dessus, car il n'est pas garanti qu'il soit de type int. Et tu as cette contrainte dans ton énoncé.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Par défaut
    D'accord, je verrai ça plus tard j'ai mon exam de c dans 30min

    Merci pour votre aide et à bientôt.

  9. #9
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    @Bktero :
    Et dans le même programme, ça peut varier d'une énumération à l'autre ?
    Oui (pour des variables énumération de types différents bien sûr)

  10. #10
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 498
    Billets dans le blog
    1
    Par défaut
    J'en conviens

    Merci pour les précisions !

  11. #11
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Ton prof devrais faire un effort pour formuler ses énoncés de manière à éviter tout ambiguïté, parce que sans la deuxième question il n'est pas évident qu'on attende une union à la première question.

Discussions similaires

  1. Service Web avec Axis et types complexes.
    Par Skyman37 dans le forum Services Web
    Réponses: 17
    Dernier message: 13/01/2011, 10h28
  2. [type complex] problemes bizzards lors de la deserialisation
    Par djynwk dans le forum Services Web
    Réponses: 6
    Dernier message: 23/11/2006, 19h43
  3. STL set et type complex
    Par jguillot dans le forum SL & STL
    Réponses: 20
    Dernier message: 13/11/2006, 23h14
  4. [Débutant] Tag Text et type "complexe" ?
    Par DemonKN dans le forum Struts 1
    Réponses: 14
    Dernier message: 22/09/2006, 11h01
  5. Type complexe en parametre dans une procedure stockée
    Par Tsimplice dans le forum Oracle
    Réponses: 2
    Dernier message: 06/10/2005, 03h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo