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 :

Structure, union, énumeration


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Par défaut Structure, union, énumeration
    Salut, je voudrai avoir votre avis sur un problème d'un partiel.
    Quelle solution pouvez vous apporter?

    voilà le sujet:
    --------------------
    Un vendeur d'ordinateur voudrait gérer un stock de machines. Pour cela, il doit définir les caractéristiques principales des ordinateurs, afin d'avoir une structure de données générale.
    Un ordinateur est défini par:
    -la marque du fabricant
    -la marque du processeur (Intel ou AMD, ou Autre)
    -la puissance du processeur (un entier)
    -le nombre de processeurs dans la machine (entier)
    -la taille de la memoire (entier)
    -la taille du disque dur
    -s'il sagit d'un processeur Intel:
    -> est il hyper threading?
    -> est il 64 bits ou 32 bits ?
    -s'il sagit d'un processeur AMD: est il 64 ou 32 bits ?
    -le prix de l'ordinateur
    -le nombre d'ordinateurs de ce type en stock.

    A partir de toutes ces caractéristiques, proposer une structures de données caractérisant les ordinateurs (pour plus de clarté, utiliser les unions, les enumerations et les structures).
    --------------------

    il faut donc utiliser "uniquement" les structures, unions et enumerations, on ne touche pas au programme en lui meme, c'est juste "l'en tete".

    Merci de votre avis.

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Une fois de plus, Developpez.com n'est pas un site pour faire les devoirs.

    Si tu as commencé à plancher sur ton exo et que tu as des questions précises, n'hésites pas à les formuler.

    Mais balancer un exo comme ca en demandant la solution, NON !
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Par défaut
    ok lol je vois que mon premier post n'est pas une réussite ...

    je n'ai aucun devoir ou je ne sais quoi a faire, je demande juste au visiteur leurs avis sur le sujet. Maintenant s'il faut montrer patte blanche quand le professeur passe dans les rangs, j'ai evidement une ebauche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    typedef enum{Intel, AMD, Autre}marque_proc;
    typedef enum(64, 32)bit_proc;
    typedef enum(TRUE, FALSE)boolean_e;
    struct{
    String fabricant;
    marque marque_proc;
    int puissance;
    int nb_proc;
    union{
    	bit_e bit;
    	struct{
    	bit_e bit;
    	boolean_e hyper_threading;
    	}processeur_u;
    }processeur;
    int memoire;
    int DD;
    double prix;
    int stock;
    }ordinateur;
    Qu'en pensez vous ?

  4. #4
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    je demande juste au visiteur leurs avis sur le sujet
    Il est bien posé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    union{
    	bit_e bit;
    	struct{
    	bit_e bit;
    	boolean_e hyper_threading;
    	}processeur_u;
    }processeur;
    C'est l'bordel mon capitaine ! Où tu défini bit_e ? Est-ce bit_proc ?

    Sont-ce des cours purement théoriques ? As-tu séché les TP ? Vous demande-t-on d'écrire du code sans jamais vous avoir montré comment le compiler ?

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Dia,
    Citation Envoyé par valefor Voir le message
    Sont-ce des cours purement théoriques ? As-tu séché les TP ? Vous demande-t-on d'écrire du code sans jamais vous avoir montré comment le compiler ?
    +1

    et j'ajoute (au moins !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef enum(64, 32)bit_proc;
    des valeurs numériques ne sont pas des identifiants valides.

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Pas de type String en C. La déclaration des alias de type bit_proc et boolean_e n'est pas correcte. Quelques corrections:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #define MAX_LEN 32
     
    typedef enum
    {
        Intel, AMD, Autre
    }
    marque_proc;
     
     
    typedef int bit_proc;
     
    typedef enum {FALSE, TRUE} boolean_e;
     
    struct
    {
        /* -tc- pas de type String en C 
        String fabricant;
        */
        char fabricant[MAX_LEN + 1];
        marque marque_proc;
        int puissance;
        int nb_proc;
        union
        {
            bit_proc bit;
            struct
            {
                bit_proc bit;
                boolean_e hyper_threading;
            } processeur_u;
        } processeur;
        int memoire;
        int DD;
        double prix;
        int stock;
    } ordinateur;
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Par défaut
    merci de vos réponses, elles m'aident beaucoup.
    Ceux sont en effet des cours théoriques alors pas toujours evident sans pratique ^^

    encore merci

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef enum {TRUE, FALSE} boolean_e;
    Farceur !

    http://emmanuel-delahaye.developpez..../ed/inc/bool.h

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Ethan831 Voir le message
    <...> j'ai evidement une ebauche.
    <...>
    Qu'en pensez vous ?
    Mais c'est supair !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : D:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:2: error: syntax error before '(' token
    main.c:3: error: syntax error before '(' token
    main.c:5: error: syntax error before "String"
    main.c:5: warning: no semicolon at end of struct or union
    main.c:6: error: syntax error before "marque_proc"
    main.c:6: warning: useless keyword or type name in empty declaration
    main.c:6: warning: empty declaration
    main.c:10: error: syntax error before "bit_e"
    main.c:10: warning: no semicolon at end of struct or union
    main.c:12: error: syntax error before "bit_e"
    main.c:12: warning: no semicolon at end of struct or union
    main.c:13: warning: type defaults to `int' in declaration of `hyper_threading'
    main.c:13: warning: data definition has no type or storage class
    main.c:14: warning: type defaults to `int' in declaration of `processeur_u'
    main.c:14: warning: data definition has no type or storage class
    main.c:15: error: syntax error before '}' token
    main.c:15: warning: type defaults to `int' in declaration of `processeur'
    main.c:15: warning: data definition has no type or storage class
    main.c:20: error: syntax error before '}' token
    main.c:20: warning: type defaults to `int' in declaration of `ordinateur'
    main.c:20: warning: data definition has no type or storage class
    Process terminated with status 1 (0 minutes, 1 seconds)
    8 errors, 13 warnings

  10. #10
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Là, j'ai besoin d'explications. Pourquoi farceur?

    EDIT: OK, il faut s'assurer que TRUE et FALSE ne sont pas déjà utilisés par une bibliothèque tièrce. Personnellement, j'utilise plus volontier un préfixe pour éviter les collisions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef enum {M_FALSE, M_TRUE} MBool;
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  11. #11
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Je pense que tu as mal compris la blague, alors j'explique:
    Que va afficher ce code, d'après toi?
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    typedef enum {M_TRUE, M_FALSE} MBool;
    MBool b = M_TRUE;
    if(b)
    {
    	puts("true");
    }
    else
    {
    	puts("false");
    }
    Edit: NOTE: Ça a été corrigé depuis.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Là, j'ai besoin d'explications. Pourquoi farceur?
    Ce qui est farceur, c'est de donner la valeur 0 à TRUE et 1 à FALSE !

  13. #13
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Ce qui est farceur, c'est de donner la valeur 0 à TRUE et 1 à FALSE !
    Oui, c'est assez fort! J'avais même pas réalisé . Au temps pour moi. Je corrige. Merci Emmanuel et Médinoc.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

Discussions similaires

  1. structures et unions ?
    Par jbarreau-mainson dans le forum Débuter
    Réponses: 13
    Dernier message: 10/01/2009, 16h02
  2. structure de donnée Union-Find
    Par contremaitre dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 22/01/2008, 09h54
  3. structure, union et énumération
    Par ngalla dans le forum C
    Réponses: 3
    Dernier message: 14/03/2007, 10h34
  4. Structure, union et pointeur
    Par kikoo.plop dans le forum C
    Réponses: 10
    Dernier message: 18/12/2006, 19h21
  5. union de structure syntaxe
    Par al974 dans le forum C
    Réponses: 6
    Dernier message: 29/07/2006, 13h56

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