Heures, minutes, secondes...

Résolu
Bonsoir,

J'ai un petit problème en C. Je souhaite que mon programme renvoie, à partir des secondes entrées par l'utilisateur, l'équivalent en jours, heures, minutes, secondes.
Tout fonctionne, sauf dans certains cas. Par exemple, lorsque j'entre
6849684141698168161
en secondes, j'obtiens
-23001 jours, -12 heures, -52 minutes et -47 secondes

Ou lorsque j'entre
100000000000000000000000000000000000000000
secondes, j'obtiens des 0 jours, 0 heures, 0 minutes, 0 secondes...
Alors que par exemple avec
7445622
j'obtiens bien
8 jours, 14 heures, 49 minutes et 22 secondes
.
Le problème viendrait-il de la capacité de stockage de long int ?

Voici le code :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void clock(int* jours, int* heures, int* minutes, int* secondes);

int main(int argc, char *argv[])
{
    long int jours = 0, heures = 0, minutes = 0, secondes;
    scanf("%d", &secondes);

    clock(&jours, &heures, &minutes, &secondes);

    printf("%d jours, %d heures, %d minutes et %d secondes",jours ,heures, minutes, secondes);

    return 0;
}

void clock(int* jours, int* heures, int* minutes, int* secondes)
{
    *jours = (*secondes/3600)/24;
    *heures = *secondes / 3600;
    *minutes = *secondes / 60;
    *secondes = *secondes % 60;
    *minutes = *minutes % 60;
    *heures = *heures % 24;
}


Merci.
<\EchoIsON>
.

4 réponses

  1. Modérateur
    long int jours = 0, heures = 0, minutes = 0, secondes;
    void clock(int* jours, int* heures, int* minutes, int* secondes)

    Ce ne serait pas un problème de type ?