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 :

Secondes -> heures


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut Secondes -> heures
    Bonsoir,

    J'ai essayé de coder un programme qui me transforme les secondes en heures minutes et secondes... Ca compile, mais plante à l'exécution. Pouvez-vous me dire ce qui ne va pas? Merci d'avance.

    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
    #include <stdio.h>
     
    void Secondes_Hms(int * secondes);
     
    int main()
    {
    int heures=0;
    int minutes=0;
    int secondes=2400;
    Secondes_Hms(&secondes);
    return 0;
    }
     
    void Secondes_Hms(int * secondes)
    {
    int * heures;
    int * minutes;
    *secondes = *secondes%60;
    *minutes = (*secondes/60)%60;
    *heures = *secondes/3600;
    printf("%d heures et %d minutes et %d secondes", *heures, *minutes, *secondes);
    }

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Bonsoir,

    Pour la prochaine fois, decrivez l'erreur ou simplement mettez nous l'erreur que genere votre compilateur.

    A propos du code, il y a confusion.
    Je te suggere de revoir l'utilisation des pointeurs.

    Rien que pour le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <stdio.h>
     
    int main()
    {
    int heures=0;
    int minutes=0;
    int secondes=2400;
    Secondes_Hms(&secondes);
    return 0;
    }
    Seul la variable secondes est utilisé. Dans ce contexte, heures et minute ne servent a rien.
    Toujours dans ce contexte, la variable seconde ne sert a rien car elle n'est pas recuperer apres. On pourrait donc ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include <stdio.h>
     
    int main()
    {
        Secondes_Hms(2400);
        return 0;
    }


    Je vais prendre comme contexte le fait que tu t'exerce aux pointeur.
    Voici ce que l'on peut faire :

    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 <stdio.h>
     
    int main()
    {
        int heures=0;
        int minutes=0;
        int secondes=2400;
     
        Secondes_Hms(&secondes, &minutes, &heures);
     
        printf("%d heures et %d minutes et %d secondes", heures, minutes, secondes);
     
    return 0;
    }
    Maintenant, regardons la fameuse fonction que tu as fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void Secondes_Hms(int * secondes)
    {
    int * heures;
    int * minutes;
    *secondes = *secondes%60;
    *minutes = (*secondes/60)%60;
    *heures = *secondes/3600;
    printf("%d heures et %d minutes et %d secondes", *heures, *minutes, *secondes);
    }
    En rouge, j'indique des pointeurs ... qui ne pointent vers rien. Si tu ne sais pas te servir des pointeur, je te conseil de regarder des tutos.


    Par rapport a mon main, voici la fonction adequate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void Secondes_Hms(int* secondes, int* minutes, int* heures)
    {
        (*heures) = (*secondes)/3600;
        (*minutes) = (*secondes)/60;
        (*secondes) = (*secondes)%60;
    }
    Note : tu n'est pas obligé de parenthesé tout le temps, juste une manie a moi.



    En résumé, ton erreur etait dû a une mauvaise utilisation de pointeurs.

    Je te conseille d'indenter ton code aussi.

  3. #3
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Merci pour ta réponse! Je vais relire le cours sur les pointeurs... Seulement, je souhaiterais avoir une fonction qui ne prenne pour paramètre que les secondes! En effet l'utilisateur ne devra rentrer que cette donnée..

  4. #4
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Alors on peut faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <stdio.h>
     
    int main()
    {
        int secondes=0;
        /* On demande a l'utilisateur de rentrer le nombre de seconde */
     
        Secondes_Hms(secondes);
     
        return 0;
    }
    Et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    void Secondes_Hms(int secondes)
    {
         int heures, minutes;
        heures = secondes/3600;
        minutes = secondes/60;
        secondes %= 60;
     
        printf("%d heures et %d minutes et %d secondes", heures, minutes, secondes);
     
     
    }
    Cependant, il faudra verifier que l'utilisateur n'as pas ecrit de connerie (seconde negative).

  5. #5
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Pourquoi n'utilises-tu plus de pointeurs? On ne perd rien ainsi?

  6. #6
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    L'interet des pointeurs, c'est de pouvoir modifier une variable dans la fonction appelante lorsqu'elle est modifier dans la fonction appelé.

    Ici, l'interet reside dans cette question : veut tu conserver la bonne valeur de seconde apres passage de la fonction ?

    Etant donné qu'après passage de la fonction tu fait return 0; dans le main, la reponse est, dans ce contexte NON.

    L'interet de garder la valeur seconde, par exemple, c'est si on faisait l'affichage apres la fonction et non plus dans la fonction.

    Seul probleme, tu me dit ne vouloir passer que la variable seconde a ta fonction.
    Si on veut realiser un affichage apres, on aura que les bonnes secondes, mais on aura plus accès a heures et minutes. C'est pour ca que dans mon premier post je passe secondes, minutes et heures en pointeur, car je realise l'affichage après.

    J'espere avoir été clair

Discussions similaires

  1. Convertir des secondes en heure/min/sec
    Par DelphLaga dans le forum Langage
    Réponses: 8
    Dernier message: 26/02/2009, 19h29
  2. Conversion secondes en heure-minute
    Par clo85 dans le forum MATLAB
    Réponses: 5
    Dernier message: 10/07/2007, 08h13
  3. convertir des secondes en heure
    Par basket10 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 15/06/2007, 13h38
  4. [Fonction Oracle] Convertir des secondes en heure
    Par falcon dans le forum Oracle
    Réponses: 12
    Dernier message: 18/11/2004, 11h56
  5. [Fonction SQL Server] Convertir des secondes en heure
    Par falcon dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 17/11/2004, 17h22

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