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 :

Comment calculer sur une struct


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de bj303931
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 75
    Par défaut Comment calculer sur une struct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct heure {
    	short h; /* les heures 0 .. HEURES-1 */
    	short m; /* les minutes 0 .. MINUTES-1 */
    	short s; /* les secondes 0 .. SECONDES-1 */ 
    };
    J'esssaie de diviser et additionner mais ça ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Heure sec2heure (long int s){
        return H.s/3600;
    }
     
    Heure ajouterHeure (Heure h1, Heure h2){
        return H.h1+H.h2;
    }
     
    Heure ajouterHeure (Heure h1, Heure h2){
        return H.h1+H.h2;
    }
    Merci, pour votre futur aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Heure ajouterHeure (Heure h1, Heure h2){
        return H.h1+H.h2;
    }


    H.h1 ça ne veut rien dire...
    h1.h c'est l'heure dans h1.
    h1.h + h2.h c'est la somme des heures dans h1 et h2, donc l'addition de deux short, donc pas une Heure

    La bonne façon de faire c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Heure ajouterHeure(Heure h1, Heure h2) {
      h1.h += h2.h; // addition membre par membre ( a += b <=> a = a+b )
      h1.m += h2.m;
      h1.s += h2.s;
      return h1;
    }

  3. #3
    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
    Citation Envoyé par stendhal666 Voir le message
    La bonne façon de faire c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Heure ajouterHeure(Heure h1, Heure h2) {
      h1.h += h2.h; // addition membre par membre ( a += b <=> a = a+b )
      h1.m += h2.m;
      h1.s += h2.s;
      return h1;
    }
    Il faut en plus gérer le dépassement (les "tours de compteur"):
    Code C : 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
    Heure ajouterHeure(Heure h1, Heure h2) {
      Heure ret = h1;
      ret.h += h2.h; /* addition membre par membre ( a += b <=> a = a+b ) */
      ret.m += h2.m;
      ret.s += h2.s;
      /* 60 secondes dans une minute */
      if(ret.s >= 60) {
        ret.m += (ret.s / 60);
        ret.s %= 60;
      }
      /* 60 minutes dans une heure */
      if(ret.m >= 60) {
        ret.h += (ret.m / 60);
        ret.m %= 60;
      }
      /* S'il y avait un champ "jour", on ferait un calcul "24 heures dans un jour" */
      return ret;
    }
    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.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Autre exemple (plus facile) pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Heure sec2heure(long int s)
    {
        Heure hms;
        hms.h = s / 3600;
        s -= 3600 * hms.h;
        hms.m = s / 60;
        hms.s = s - 60 * hms.m;
        return hms;
    }

Discussions similaires

  1. initialiser une struc pointant sur une struct
    Par gronaze dans le forum C
    Réponses: 5
    Dernier message: 30/03/2006, 16h07
  2. [Procédure stockée] Comment travailler sur une liste de ...
    Par WwiloO dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/02/2006, 11h22
  3. comment rediriger sur une page html en fonction de la langue
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/08/2005, 11h42
  4. Calcul sur une région répété...
    Par Angeldu74 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/06/2005, 08h00
  5. Comment écrire sur une image, dans un cadre ?
    Par Nutrino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 20/05/2005, 00h55

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