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 :

Problème notion struct


Sujet :

C++

  1. #1
    Membre averti Avatar de Revan80
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 14
    Par défaut Problème notion struct
    Bonjour , voila je suis débutant et je ne comprends pas une notion, par exemple :

    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
     
    #include <iostream>
     
    struct Date {
     
        using day_t = uint8_t;
     
        day_t day{} 
    };
     
    int main(){
     
    Date today{}; 
     
    }
    Que renvoie le type Date ?? uint8_t ? pourquoi ne pas utiliser le type day_t en premier ?, merci .

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Ce code ne compile pas sous Visual Studio...

    Quel est votre compilateur ?

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Citation Envoyé par moldavi Voir le message
    Bonjour.

    Ce code ne compile pas sous Visual Studio...

    Quel est votre compilateur ?
    C'est parce qu'il manque le ; après les accolades de la ligne 8 (day_t day{};)
    @Revan80

    Citation Envoyé par eragon
    Blisinger signifie le feu. C'est le feu. La chose, c'est le mot. Connais le mot et tu contrôles la chose.
    Lorsque tu vas créer une structure Date, tu vas lui permettre de représenter trois notions distinctes :
    1. le nombre de jour,
    2. le nombre de mois
    3. le nombre d'année

    la ligne 6 (using day_t = uint8_t;) nous permet de définir le type day_t comme "nous permettant de représenter toutes les valeurs que l'on s'attend à observer pour la notion de jour". Et le fait est que, du moment que l'on a cette garantie, on se fout pas mal de savoir de combien de bits ce type est utilisé: on sait que day_t permet de représenter le nombre de jour.

    Mais ca, ce n'est encore qu'un type. A coté de cela, toute date est composée (entre autres) d'une donnée... représentant le nombre de jour. Si bien que, partant de là, il est logique que nous représentions cette information sous la forme d'un champs de la structure dont le type est... défini comme "prévu pour représenter" la notion de jour. Et, bien sur, comme la notion de date est également composée (le plus souvent) de deux autres données (permettant respectivement de représenter le mois et l'année), nous devons pouvoir identifier sans l'ombre d'un doute la donnée qui permet de représenter le nombre de jour.

    Et ca, c'est le rôle de la ligne 8 (day_t day{};). Et comme on a nommé le champs day et non month ou year, le nom de ce champs nous indique très clairement la raison pour laquelle le champs existe : pour représenter le jour (et non le mois ou l'année).

    Le seul "truc", c'est que ta structure Date n'est pas complète en l'état : il lui manque ad minima deux données supplémentaires (pour représenter respectivement le mois et l'année)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Et puis, question vocabulaire, un type ne renvoie rien, ce n'est pas une fonction.

  5. #5
    Membre averti Avatar de Revan80
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 14
    Par défaut
    Merci de m'avoir répondu, mais donc pour: Date today{};

    La structure Date représente normalement la notion de jour de moi et d'année mais je veux dire a quoi correspond t'elle concrètement pour l’ordinateur, un type ? Autrement dit quel est la différence pour l'ordinateur entre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
     int main(){
     
    Date today{}; 
    int today{};
     
    }

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Pour l'ordinateur ? On s'en moque ? Un int, un char, un Toto, pour l'ordinateur ça représente quoi ? Une série d'octets, le reste il s'en moque, ce ne sont que des mot-clés pour aider le programmeur.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Citation Envoyé par Revan80 Voir le message
    Merci de m'avoir répondu, mais donc pour: Date today{};

    La structure Date représente normalement la notion de jour de moi et d'année mais je veux dire a quoi correspond t'elle concrètement pour l’ordinateur, un type ? Autrement dit quel est la différence pour l'ordinateur entre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
     int main(){
     
    Date today{}; 
    int today{};
     
    }
    Comme je te l'ai dit, la notion de date est une notion complexe, que l'on décompose assez facilement en plusieurs données "bien particulières" (que l'on appellera sans doute day, month et year, par exemple), et ce, quelque soit la manière dont ces données pourront être représentées en mémoire.
    Par contre, si tu utilise un type entier quel qu'il soit, tu force l'utilisation d'un type particulier, et tu t'obliges donc à mettre "certains mécanismes en place" pour pouvoir récupérer les données qui t'intéresseront réellement.

    Il n'y a absolument rien d'impossible pour y arriver, mais il faut comprendre que les trois notions (jour, mois, année) que véhicule la notion de date sont très fortement dépendantes les unes des autres : il n'y a que 12 mois dans une année et le nombre de jours qui composent chacun de ces mois dépend -- pour la majorité -- du mois en question, mais, pour le mois de février, également de l'année considérée. Si bien que tu ne peux être sur de représenter une date valide que... lorsque tu regroupe les notion de jour, de mois et d'année pour les faire travailler ensemble.

    Ainsi, la date 25/01/2015 représente une date valide, mais pas la date 29/02/2015 (parce que 2015 n'est pas une année bissextile, et qu'il n'y a donc que ... 28 jours en février), pas plus que la date 35/05/2016 (il n'y a jamais 35 jours dans un mois) ou que la date 12/13/2017 (il n'y a jamais 13 mois dans l'année).

    Tant que tu n'auras pas compris que le rôle d'une structure (ou d'une classe) date est de garantir la cohésion entre les notions de jour, de mois et d'année, il sera très difficile de t'expliquer quoi que ce soit d'autre
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Membre averti Avatar de Revan80
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 14
    Par défaut
    Merci beaucoup d'avoir pris le temps de m'expliquer, j'ai compris .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/06/2010, 01h19
  2. [Debutant]Problème Insertion dans une Struct
    Par sniperseb dans le forum Débuter
    Réponses: 13
    Dernier message: 17/12/2006, 03h57
  3. Réponses: 22
    Dernier message: 29/01/2005, 11h29
  4. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25

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