# C et C++ > C > Contribuez >  Date de Pques par la mthode Oudin

## Roland Chastain

Bonjour !

Je vous propose un programme qui calcule la date de Pques pour une anne donne du calendrier grgorien.

Un code similaire a dj t propos ici mais l'algorithme utilis n'est pas le mme.

NDLM : Supprim  la demande de l'auteur

----------


## Roland Chastain

Pour amliorer mon programme, j'ai pens y inclure une table qui permettrait une vrification automatique du rsultat fourni par l'algorithme. Voici ce que j'ai fait  partir de ce document. Ce sont les dates de Pques de 1900  2199.

NDLM : Supprim  la demande de l'auteur

Vos observations ou vos suggestions sont les bienvenues.  ::):

----------


## Roland Chastain

Bonjour !

J'ai remani mon programme, qui calcule la date de Pques pour une anne donne du calendrier grgorien. Qu'en pensez-vous ?



```

```



```

```



```

```

Au modrateur : Auriez-vous l'amabilit de supprimer mes deux premiers messages (si toutefois vous n'y voyez pas d'inconvnient) ?  ::):

----------


## Sve@r

> Au modrateur : Auriez-vous l'amabilit de supprimer mes deux premiers messages (si toutefois vous n'y voyez pas d'inconvnient) ?


Salut
Tu fais "diter" et dans la page qui s'affiche tu as une case "supprimer"...

----------


## Roland Chastain

> Tu fais "diter" et dans la page qui s'affiche tu as une case "supprimer"...


Merci pour la rponse. Malheureusement je n'ai plus la possibilit d'diter ces messages.

----------


## Obsidian

> Au modrateur : Auriez-vous l'amabilit de supprimer mes deux premiers messages (si toutefois vous n'y voyez pas d'inconvnient) ?


En principe, nous ne supprimons pas les messages sauf motif srieux (les gens s'y rfrent). J'ai toutefois et quand mme retir les blocs de codes prcdents pour des raisons de clart.

Merci pour ta participation au site !

----------


## Roland Chastain

> En principe, nous ne supprimons pas les messages sauf motif srieux (les gens s'y rfrent). J'ai toutefois et quand mme retir les blocs de codes prcdents pour des raisons de clart.


C'est parfait comme a. Merci bien !

----------


## gangsoleil

> Bonjour !
> 
> J'ai remani mon programme, qui calcule la date de Pques pour une anne donne du calendrier grgorien. Qu'en pensez-vous ?


Au risque dtre (trop) critique, j'ai pas mal de remarques a faire sur le code... 

Je prends le code "au fur et a mesure" : 
#include "table.c" Pas fan de l'include du .c... Surtout que ce "code" qui n'en est pas pourrait tout a fait tre dans un fichier d'include. Mais bon, comme c'est juste pour la vrification, on peut passer  ::): 

int Resultat(int a){ Pourquoi mettre une majuscule au nom de la fonction ? Je sais que ce n'est pas faux, mais en gnral on ne le fait pas (la norme dfinit d'ailleurs que E suivi d'une lettre majuscule ou d'un chiffre peut tre utilise comme macro par limplmentation pour les erreurs (norme C99, 7.5 et 7.26.3)

 int G, C, C4, E, H, K, P, Q, I, B, J1, J2, R; Je vais tre mchant, mais tu n'as pas trouv plus illisible ? Je pense que A1, A2, ... serait mieux... Ou pas. Par contre, de vrais noms de variable, en minuscules, a serait vraiment bien.



```

```

 Un petit commentaire sur ces magnifiques nombres magiques sortis de null part ? S'il faut le PDF dcrivant l'algorithme pour pouvoir comprendre le code, je crains que ce ne soit pas trs pratique. 



```

```

 a, m, j --> annee, mois, jour, comme tu le mets dans le commentaire, et comme paques. Il ne faut pas avoir peur d'user les touches de son clavier, elles sont la pour ca !  ::): 



```

```

 Il est plus que fortement dconseill de lire les entres clavier avec scanf, qui devrait tre rserv aux entres formates. Un exemple dentres/sorties solides en C.



```

```

 Je pense qu'on aurait apprci d'avoir les deux dates dans ce cas d'erreur  ::): 


Dsol, c'est peut-tre un peu violent comme commentaire, mais trouve que ce code est vraiment "limite".

----------


## Roland Chastain

Merci pour ces observations, dont je prends bonne note.  ::): 

Pour le fichier inclus, je n'ai pas compris quelle est la solution que tu prconises.

Autrement, pour remplacer ces noms de variables



```
int G, C, C4, E, H, K, P, Q, I, B, J1, J2, R;
```

par des noms plus explicites, il faudrait des connaissances que je n'ai pas. J'avoue que j'ai utilis la formule sans la comprendre. C'est pourquoi j'ai prfr me tenir aux noms de variables qui sont dans le document auquel je me suis rfr.

----------


## gangsoleil

> Pour le fichier inclus, je n'ai pas compris quelle est la solution que tu prconises.


En fait, on n'inclue pas de fichier .c (meme si techniquement il est possible de le faire).

Un fichier .c est un fichier qui contient du code, qui doit etre compilable tout seul, obtenant en sortie (au moins) un fichier objet (.o), qui pourra etre linke plus tard si besoin.

Dans ton cas, le seul code que tu mets est un tableau, pas de code. Donc tu peux tout a fait faire de ce fichier un fichier d'en-tete (.h), et dans ce cas tu pourras l'inclure. C'est ce que je ferai (ou ce que je recommande, mais qui suis-je pour recommander  ::):  ? )

----------


## ternel

Il y a le problme du extern.
En fait, c'est bien un .c, parce que le tableau ne saurait tre dfini plusieurs fois.
Par contre, il manque un en-tte contenant un extern const int table[300];

----------


## Bktero

> Dans ton cas, le seul code que tu mets est un tableau, pas de code


Je ne suis pas d'accord : si tu inclues plusieurs fois ton fichier d'en-tte dans des units de compilation diffrentes, tu auras une erreur d'dition des liens car le symbole sera dfini plusieurs fois ! Une dclaration avec initialisation de tableau, c'est dj du code.

EDIT : j'ai mis trs longtemps  poster donc leternel m'a grill ^^

----------


## Roland Chastain

Merci pour vos conseils. J'ai dit mon message et fait une partie des modifications suggres.

----------

