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 :

excercice en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 etoile1506
    merci pour tout votre aide.....
    C'est un peu compliqué... Une meilleure connaissance du calcul entier (je ne parle pas de mathématiques) permet d'écrire ça :
    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
     
    #include <stdio.h>
    int main (void)
    {
       int x;
     
       printf ("introduisez un nombre entier:");
       scanf ("%i", &x);
       {
          int j = x / 86400;
          int sj = x % 86400;
          int h = sj / 3600;
          int u = sj % 3600;
          int m = u / 60;
          int s = u % 60;
          printf ("%d j %02d:%02d:%02d\n", j, h, m, s);
       }
       system ("pause");
    }
    Comme on fait beaucoup de / % de la même valeur, on peut aussi améliorer le codage avec div()...

  2. #2
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 17
    Par défaut
    merci pour ton programme quoique si tu peux m'expliquer un peu
    int sj = x % 86400;??????ca veut dire quoi le sj??
    printf ("%d j %02d:%02d:%02d\n", j, h, m, s);
    ici dans le %02 que je gére pas trop.en faites toute cette ligne je ne la conmprend pas
    merci de ton aide

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par etoile1506
    int sj = x % 86400;??????ca veut dire quoi le sj??
    "sj" c'est un nom de variable. Ca ne veut rien dire en soit. Il aurait pu l'appeler "resteDeLaDivisionEntiereDeXPar86400" mais c'était plus long à taper.
    Sinon... sj = x - ( s * 86400 ) ...si ça aide...
    C'est le nombre de secondes qu'il resterait dans x si on lui enlevait le nombre de secondes pour faire j jours.
    Dans le même esprit, imagines qu'un commerçant doive te rendre 215 euros en te rendant le moins de monnaie possible en sachant qu'il n'a que : des billets de 100 euros, des billets de 10 et des pièces de 1.
    On a totalARendre = 215.
    Combien de billets de 100 va-t-il te rendre ?
    ==> nbCent = totalARendre / 100 = 215 / 100 = 2
    Combien de billets de 10 ?
    Il t'a déjà rendu 200, donc il lui RESTE 15 à rendre, donc on doit calculer le reste de la division précédente et diviser par 10
    ==> resteApres100 = totalARendre % 100 = totalARendre - ( nbCent * 100 ) = 215 % 100 = 215 - ( 2 * 100 ) = 15
    ==> nbDix = resteApres100 / 10 = 1
    Et maintenant, combien de pièces de 1 ? (et ne réponds pas seulement "5" : la réponse, pour être valable, doit détailler le ou les calculs !)

    Pour les jours/heures/minutes/secondes, c'est le même principe, sauf qu'au lieu de décomposer un nombre total d'euros en nombre de billets d'une certaine valeur on décompose un nombre total de secondes en nombre d'unités de temps.

    Citation Envoyé par etoile1506
    printf ("%d j %02d:%02d:%02d\n", j, h, m, s);
    ici dans le %02 que je gére pas trop.en faites toute cette ligne je ne la conmprend pas
    Déjà, un "man printf", ça aide beaucoup (même en utilisant Google).
    Sinon, il faut essayer de comprendre en lançant le programme et en saisissant différentes valeurs.
    Autre méthode, écrire un programme avec différentes combinaisons pour essayer de comprendre l'influence du 0 et du chiffre avant le "d". Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdio.h>
    int main(int argc, char *argv) {
        printf("%1d\n",9);
        printf("%8d\n",9);
        printf("%2d\n",9999);
        printf("%01d\n",9);
        printf("%08d\n",9);
        printf("%02d\n",9999);
        return 0;
    }

  4. #4
    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 etoile1506
    merci pour ton programme quoique si tu peux m'expliquer un peu
    int sj = x % 86400;??????ca veut dire quoi le sj??
    secondes restantes de la journee
    printf ("%d j %02d:%02d:%02d\n", j, h, m, s);
    ici dans le %02 que je gére pas trop.en faites toute cette ligne je ne la conmprend pas
    Ce sont des indications de formattage. C'est expliqué dans ton livre de C.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 12
    Par défaut
    Citation Envoyé par David.Schris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdio.h>
    int main(int argc, char *argv) {
        printf("%1d\n",9);
        printf("%8d\n",9);
        printf("%2d\n",9999);
        printf("%01d\n",9);
        printf("%08d\n",9);
        printf("%02d\n",9999);
        return 0;
    }
    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 argc, char **argv) 
    {
        printf("%1d\n",9);
        printf("%8d\n",9);
        printf("%2d\n",9999);
        printf("%01d\n",9);
        printf("%08d\n",9);
        printf("%02d\n",9999);
        return (0);
    }

  6. #6
    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 gentil_robot
    Pourquoi faire les parenthèses pour return ? return est une instruction, pas une fonction.

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Mmmh... Je ne vois pas... Peut-être parce-qu'il trouve que c'est plus esthétique comme ça...
    C'est vrai qu'un explication s'impose : si je dois modifier tous mes programmes, autant que je le sache tout de suite.

  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 David.Schris
    Mmmh... Je ne vois pas... Peut-être parce-qu'il trouve que c'est plus esthétique comme ça...
    C'est vrai qu'un explication s'impose : si je dois modifier tous mes programmes, autant que je le sache tout de suite.
    Il n'est pas faux de mettre les parenthèses, c'est juste inutile.

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Il n'est pas faux de mettre les parenthèses, c'est juste inutile.
    J'ai bien compris. Ma dernière phrase était un rien ironique voire sarcastique (j'avoue).
    Une autre hypothèse : il a confondu avec exit(). Mais si c'est le cas, il a oublié d'inclure <stdlib.h>.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 12
    Par défaut
    Citation Envoyé par David.Schris
    Citation Envoyé par Emmanuel Delahaye
    Il n'est pas faux de mettre les parenthèses, c'est juste inutile.
    J'ai bien compris. Ma dernière phrase était un rien ironique voire sarcastique (j'avoue).
    Une autre hypothèse : il a confondu avec exit(). Mais si c'est le cas, il a oublié d'inclure <stdlib.h>.
    Non, j'ai pas confondu avec exit().

    Emmanuel, je sais que return est une instruction, et non une fonction : c'est pour ca qu'il y a un espace entre return et la parenthèse ouvrante. Et il y a des parenthèses comme pour les instructions du style if, for, while ...

  11. #11
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par gentil_robot
    Citation Envoyé par David.Schris
    Citation Envoyé par Emmanuel Delahaye
    Il n'est pas faux de mettre les parenthèses, c'est juste inutile.
    J'ai bien compris. Ma dernière phrase était un rien ironique voire sarcastique (j'avoue).
    Une autre hypothèse : il a confondu avec exit(). Mais si c'est le cas, il a oublié d'inclure <stdlib.h>.
    Non, j'ai pas confondu avec exit().

    Emmanuel, je sais que return est une instruction, et non une fonction : c'est pour ca qu'il y a un espace entre return et la parenthèse ouvrante. Et il y a des parenthèses comme pour les instructions du style if, for, while ...
    Non non je t'assure pas besoin de parentheses, tu peux en mettre mais c'est inutile.
    C'est comme sizeof tu peux ou pas mettre des parentheses

  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 gentil_robot
    Emmanuel, je sais que return est une instruction,
    Alors pourquoi les parenthèses ?
    et non une fonction : c'est pour ca qu'il y a un espace entre return et la parenthèse ouvrante.
    Quand aux espaces, il n'y a pas de regles. Que des conventions.
    Et il y a des parenthèses comme pour les instructions du style if, for, while ...
    Mais là, elles sont obligatoires...

  13. #13
    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 Skyrunner
    C'est comme sizeof tu peux ou pas mettre des parentheses
    Les parenthèses ne sont obligatoires que si c'est un type.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int a;
     
    ... sizeof a ...
    ... sizeof (int) ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Petit probleme avec un excercice
    Par romain1 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/06/2008, 17h57

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