Algorithme : quel est le jour de l'année ?? [Fermé]

Signaler
-
[o.o]REplay
Messages postés
362
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009
-
Bonjour,
je suis étudiante en IUT d'informatique et je coince sur un programme en c... En fait je ne trouve pas l'algorithme ^^" Les histoires d'années et de jour j'ai du mal à voir.....

Alors on veut écrire un programme qui, quand on lui entre un nombre entre 1 et 365, nous dit à quel jour de l'année correspond t'il (lundi, mardi, etc...)
Tout en sachant que l'année 2009 commence par un jeudi (on se limite à cette année ouf !)
J'ai essayé de réfléchir sur un mois ; je me suis dit que je pourrais faire un truc comme ça :
jeudi = 1;

vendredi = jeudi + 1;
samedi = vendredi + 1;
dimanche = samedi + 1;
lundi = dimanche + 1;
mardi = lundi + 1;
mercredi = mardi + 1;

(jeudi etc étant des variables)

Mais je ne vois pas vraiment où ça peut me mener. j'ai aussi pensé à n'avoir qu'une variable jour, et ajouter 7 a chaque fois pour avoir la position du jeudi suivant mais ça n'ira pas quand on changera de mois.....

Si quelqu'un avait une idée ça serait super merci ^^

++ Lucile

6 réponses

Messages postés
18128
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
1 avril 2020
4 715
hello
1 jeu
2 ven
3 sam
4 dim
5 lun
6 mar
7 mer
si le jour est >= 8, je divise par 7 et je prends le modulo
34 ? 4x7 = 28 reste 6 : mardi
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 73658 internautes nous ont dit merci ce mois-ci

Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 659
Salut,
Effectivement ça va te mener nulle part lol.
Par contre, tu peux constater qu'on connaît le nombre de jours par mois. Tu peux donc faire un tableau contenant 31 28, 31 etc.
Ensuite lorsque l'utilisateur entre le numéro du jour, tu parcours le tableau. Par exemple s'il entre 61.
Tu compares 31 à 61. 61 est plus grand. Donc on continue la progression dans le tableau. On compare donc 31+28 avec 61. 61 est toujours plus grand. On compare donc 61 avec 31+28+31. A cette fois c'est plus petit. Donc 61 appartient au mois de février.
Ensuite pour trouver le jour, tu peux constater qu'une semaine à sept jours. Et que donc tu peux travailler à modulo 7. 61 modulo 7 = 5. 61 est donc le même jour que le 5ème jour de l'année 2009. Je te laisse conclure ;).
A toi de mettre ça sous forme d'algorithme.
Si t'as des questions, n'hésite pas.

PS : si t'as pas besoin de savoir le mois, tu n'auras pas besoin du tableau, juste des modulos.
Cdlt
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 077
Bonjour,
fiddy : effectivement, pourquoi faire simple quand ont peu faire compliqué ? :-))))
La question est...
Alors on veut écrire un programme qui, quand on lui entre un nombre entre 1 et 365, nous dit à quel jour de l'année correspond t'il (lundi, mardi, etc...)
Donc la solution de dubcek est presque valable. (juste un petit oubli)
Je connaît plus le C mais l'algo en VB..
Sub NomJour()
Dim J As Integer
'2009 Commence un Jeudi
    tb = Array("mer", "jeu", "Ven", "Sam", "dim", "Lun", "mar")
    J = 100
    While J > 6
        J = J Mod 7
    Wend
    L = (tb(J))
End Sub

A+
[o.o]REplay
Messages postés
362
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009
26
pas mal le code C, de plus ton modulo est mal utilisé. Pas besoin de while autour d'un modulo, vu que celui-ci renvoie le reste de la division entière.

int tafonction(int nombre)
{ return nombre%7;}

c'est tout je pense.
Si résultat = 0, c'est un jeudi, 1 c'est un vendredi, 2 cest un samedi, etc.. :)
lermite222
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 077 > [o.o]REplay
Messages postés
362
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009

Je sais pas ce qui m'a pris de mettre un Wend..:-))
Sub NomJour()
Dim J As Integer
'2009 Commence un Jeudi
    tb = Array("mer", "jeu", "Ven", "Sam", "dim", "Lun", "mar")
    J = 100
    J = J Mod 7
    L = (tb(J))
End Sub


A+
fiddy
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 659 > lermite222
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020

T'as pas dû lire mon message 5.
Tu commences ton tableau à mercredi : tb = Array("mer", "jeu", "Ven", "Sam", "dim", "Lun", "mar")
Alors que l'énoncé est : Tout en sachant que l'année 2009 commence par un jeudi ;-))).
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 659
Salut,
effectivement, pourquoi faire simple quand ont peu faire compliqué ?
Pour donner une réponse complète ;). Après on sélectionne ce qui nous intéresse.

Je connaît plus le C mais l'algo en VB..
Un algorithme ne s'écrit pas dans un langage particulier. Ca c'est de la programmation. L'algo s'écrit en bon vieux français, avec quelques règles.

Par contre, tu donnes : Array("mer", "jeu", "Ven", "Sam", "dim", "Lun", "mar")
Alors que l'énoncé est : Tout en sachant que l'année 2009 commence par un jeudi


    
While J > 6
        J = J Mod 7
Wend

Ta boucle ne sert à rien. Le principe du modulo, c'est d'avoir justement le reste de la division. Donc t'es assuré que t'auras un nombre inférieur à 7 strictement ;-))).
Messages postés
362
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009
26
oui :p
bon après-midi :)
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 077
Vous pouriez faire le test ???
c'est tout je pense.
Si résultat = 0, c'est un jeudi, 1 c'est un vendredi, 2 cest un samedi, etc.. :)

Faux.. Si résultat = 0 C'EST UN MERCREDI !!
Le premier jour de l'année C'est UN et pas ZERO :)
D'où le libellé de l'array. T'en fait pas, j'ai aussi du tester.
lermite222
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 077 > [o.o]REplay
Messages postés
362
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009

J'appelle pas ça un langage, mais une blague monumentale
Et en clair ça veux dire ?
[o.o]REplay
Messages postés
362
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009
26 > lermite222
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020

Que je n'aime pas :) deux mots:
Propriétaire et laid ^^
avis personnel, rien contre toi :)
lermite222
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 077 > [o.o]REplay
Messages postés
362
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009

Propriétaire et laid Je n'ai pas vu ces deux mots dans le topic.
Tu a l'air de prendre de bien haut les humbles imbéciles qui programme en VB ! ??
Probablement que je programmais en C quand t'étais encore dans tes couches.
60 + ans 12 novembre 1971 ?
[o.o]REplay
Messages postés
362
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009
26 > lermite222
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020

Je ne prend personne de haut et je précise bien que c'est mon avis personnel.
Je trouve ce langage laid et non intuitif dans sa syntaxe,
et je trouve stupide de créer un langage propriétaire.
Cela va a l'encontre du principe de portabilité et d'évolutivité d'un code.

Le jour ou windows se crash vous faites quoi? Vous étes au chomage? Tous vos programmes deviennent inutiles?

En ce qui concerne mes couches culottes et de tes aptitudes à coder, je ne la ramènerai pas trop, surtout avec un while autour d'un modulo ^^
lermite222
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 077 > [o.o]REplay
Messages postés
362
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009

Bof, l'erreur est humaine... avec un 0 = Jeudi ! ont est quitte