Partage
  • Partager sur Facebook
  • Partager sur Twitter

Voici un programme qui calcul la date de Paques

Ce programme est ecrit en langage C et est sous licence GPL

26 mars 2008 à 19:09:23

Bonjour, j'ai ecrit (pour passer le temps) un programme qui calcul la date de paques

On ecrit l'annee puis il nous donne la date.

La precision de la date est a un jour pres (des fois il donne le lundi des fois il donne le dimanche)

Ce programme est baser sur les algoritmes donnes sur Wikipedia :
Algoritme du calcul de la date de Paques

Voici le code :

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(void) {
  4.         int annee, mois = 3 /*par default, 3 = mars*/, jour;
  5.         int epacte_julienne, epacte_gregorienne;
  6.         int equation_solaire, equation_lunaire;
  7.         int lettre_dominicale;
  8.         /*recuperation de l'annee*/
  9.         printf("Quelle annee ? ");
  10.         if (scanf("%d", &annee) != 1) {
  11.                 exit(EXIT_FAILURE);
  12.         }
  13.         /*calcul de la lettre dominicale*/
  14.         lettre_dominicale = ((2 * (annee / 100) - ((annee / 100) / 4) - (annee % 100)) % 7) + 1;
  15.         /*calcul de l'equation solaire*/
  16.         equation_solaire = ((annee / 100) - 12) - ((annee / 100) / 4);
  17.         /*calcul de l'equation lunaire*/
  18.         equation_lunaire = ((((annee / 100) * 8) + 13) / 25) - 5;
  19.         /*calcul de l'epacte julienne*/
  20.         epacte_julienne = (((annee % 19) * 11) + 8) % 30;
  21.         /*calcul de l'epacte gregorienne*/
  22.         epacte_gregorienne = ((epacte_julienne + 23 + equation_lunaire) - equation_solaire) % 30;
  23.         /*calcul de la date de paques*/
  24.         if (epacte_gregorienne == 24 && lettre_dominicale == 4) {
  25.                 epacte_gregorienne = -5;
  26.         } else if (epacte_gregorienne == 25 && lettre_dominicale == 3) {
  27.                 epacte_gregorienne = -4;
  28.         } else if (epacte_gregorienne >= 24) {
  29.                 epacte_gregorienne -= 30;
  30.         }
  31.         jour = (((epacte_gregorienne + lettre_dominicale + 1) % 7) + 45) - epacte_gregorienne;
  32.         while (jour > 31) {
  33.                 jour -= 31;
  34.                 mois++;
  35.         }
  36.         jour--;
  37.         printf("En %d, Paques tombe le %02d/%02d\n", annee, jour, mois);
  38.         exit(EXIT_SUCCESS);
  39. }


Voila.

EDIT : Licence supprimmee
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2008 à 19:16:39

Le sujet n'aurais pas plutôt eu sa place dans le forum C?
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2008 à 19:22:04

Et puis surtout si la licence est à ton nom t'es un peu gonflé car l'algorithme est bien connu...
Quand j'étais en 3ème (il y a 4 ans) ma prof de math nous avait donné l'algorithme et je l'avais interprété sur ma CASIO Graph 65 que j'avais achetée... Donc même si tu t'as l'interprété en C, déposer une licence n'est pas super.
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2008 à 19:23:17

Je note, j'enleve la licence.
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2008 à 19:28:18

Je vois pas en quoi le fait que l'algorithme est bien connu empêche de mettre une licence sur le code source...

llae : on parle de licences informatiques là, pas de brevets ou quoi. Qu'est-ce qui pose problème exactement ?
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2008 à 19:30:56

Je pense qu'il a raison, je n'ai pas crteer cet algoritme, juste un code qui l'exploite, ce code n'importe quel personne (qui programme en C) peut le faire, mettre une licence etait idiot de ma part, c'est comme si je l'avais mis sur un code qui additionne deux nombre (j'exagere un peu)
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2008 à 19:34:34

Ben il existe probablement déjà quelqu'un qui a de la même façon interprété ce code en C : surement pas avec exactement le même code mais de manière similaire donc mettre une licence dessus me parait bizarre. Surtout que ce n'est pas très utile...
Enfin ce n'est pas moi qui gère.
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2008 à 19:41:35

La licence dit juste que le code a été écrit par tel auteur, et de quelle manière on peut l'utiliser (en l'occurence, une licence libre t'autorise à le lire, l'utiliser, le distribuer et redistribuer les modifications).

Elle n'affirme en aucun cas que l'auteur est l'inventeur des idées contenu dans le code, mais seulement qu'il a écrit le code (et ne l'a pas pompé de quelqu'un d'autre). Les algorithmes sont indépendants de leur mise en oeuvre, et par ailleurs ne sont pas brevetables (et pas non plus soumis au régime de propriété intellectuelle, à ma connaissance).

De toute façon si tu ne mets aucune licence, le code se retrouve sous le droit d'auteur français par défaut, qui ne t'autorise pas à faire grand chose avec, donc c'est encore moins bien.

Après, savoir si c'est utile de mettre une licence pour un code aussi court, ça se discute, mais ce n'est pas totalement injustifié (même si on est d'accord, "pas très utile").
  • Partager sur Facebook
  • Partager sur Twitter
18 juin 2013 à 16:29:10

Il faut ouvrir un bloc note pour entrer la formule pour calculer les jour de pâques ou non ?

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
18 juin 2013 à 16:33:50

Nicodu10> Tu retardes un peu, Pâques en 2008 c'était le 23 mars.

  • Partager sur Facebook
  • Partager sur Twitter
18 juin 2013 à 16:38:09

non mais j'ai une autre technique pour calculer les jours de pâques avec open office alors bon

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
18 juin 2013 à 16:39:30

Ça n'est pas surprenant, Open Office doit bien avoir un langage de macros Turing-complet lui aussi.

  • Partager sur Facebook
  • Partager sur Twitter
18 juin 2013 à 18:02:22

Salut.

Etant donné que le topic date de 2008, c'était peut-être pas utile de le remonter pour si peu.

  • Partager sur Facebook
  • Partager sur Twitter
Pwaite.net > Transfert de crédit téléphonique et monétisation de site web                                                                                        « I am awesome »