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 :

Déterminer un jour de semaine en fonction d'un jour connu


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Par défaut Déterminer un jour de semaine en fonction d'un jour connu
    Bonjour à tous,

    J'ai un petit bout de code que je n'arrive pas à mettre en oeuvre pour trouver un jour de la semaine (le lundi ici) en fonction d'un jour connu.

    On sait que le premier Janvier de l'année X était un Lundi. On rempli un tableau jour[i] de 30 entiers compris entre 1 et 365, de manière aléatoire, et on veut connaitre les jours qui sont un lundi.

    J'ai créé un bout de code qui détermine les lundis, mais il ne marche que pour les jours pairs, pas pour les autres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( ( ( (jour[i] - 1) / 7) % 2) == 0 )
     
    /* Alors c'est un lundi */
    Une petite aide pour améliorer çà ? =)
    Merci !

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Si j'ai bien compris ta question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (jour[i] % 7 == 1 )
     
    /* Alors c'est un lundi */

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Par défaut
    Merci bien =)
    Mais, pourquoi un modulo 7 ? Je comprends pas trop l'astuce ici.

  4. #4
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Citation Envoyé par floawed Voir le message
    Mais, pourquoi un modulo 7 ?
    Et bien, parce que une semaine comporte 7 jours !

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 356
    Par défaut
    le ==1 me semble bizarre : a moins que le dimanche soit le premier jour de la semaine :

    le modulo fait varier les nombres de 0 à 6, je suppose donc que le 0 c'est le lundi et le 6 le dimanche...

    Sa ne devrait pas être ==0 ?

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    J'ai choisi ==1 parce que le posteur dit dans sa présentation que les jours sont codés de 1 à 365. je suppose que le premier janvier correspond à 1 et il dit que c'est un lundi. Donc les lundi doivent correspondre à 1 %7 ==1

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Par défaut
    D'accord merci =)
    Et par exemple, si je dis que Jeudi est le 3eme jour (un tableau de 0 à 6),alors pour trouver tous les jeudis, la formule devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ( jour[i] + 3 ) % 7 == 1
    ?

  8. #8
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Bonjour,

    Non cela ne marche pas.

    Il s'agit de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ( jour[i] ) % 7 == 4  //soit jeudi = 3 jours après le lundi (1 + 3)
    ou bien de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ( jour[i] -3 ) % 7 == 1 //soit 3 jours avant ce jour (jeudi), on était un lundi
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ( jour[i] +4 ) % 7 == 1 //soit 4 jours après ce jour (jeudi), on sera un lundi
    J'espère que cela expliquera un petit peu mieux le principe du modulo.

    Cordialement,
    Christophe

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Par défaut
    Merci c'est beaucoup mieux comme çà.
    Par contre, est-ce qu'il faut faire des cas pour chaque jour de la semaine à tester, si je veux déterminer nimporte quel jour de la semaine ?
    Par exemple, si je fais des cas pour le lundi, le mardi, le mercredi, et comme tu me l'a montré, avec l'inverse (on part d'un jour et on ajoute les jours manquants, ou on en retranche...) alors si ma boucle parcours ce tableau et tombe sur le jours X qui est un vendredi, le programme s'arrête (faute de cas pour vendredi) ?

  10. #10
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Stocke le résultat dans une variable de ton choix, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int numero_du_jour;
     
    numero_du_jour = jour[i] % 7
    Ensuite tu fais ce que t'en veux de ce numéro de jour, comme tester si c'est un lundi, un jeudi ou que sais-je encore.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Par défaut
    D'accord, ca m'a bien aidé merci beaucoup !

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

Discussions similaires

  1. Requête en fonction d'un jour de la semaine
    Par mezvin dans le forum Langage SQL
    Réponses: 12
    Dernier message: 29/03/2010, 13h34
  2. Réponses: 8
    Dernier message: 20/01/2010, 13h51
  3. Réponses: 1
    Dernier message: 18/04/2008, 14h40
  4. [Dates] fonction vérifiant le jour de la semaine
    Par Flynt dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2008, 16h04
  5. fonction pour le jour de la semaine
    Par savoir dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/06/2005, 18h24

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