Logo elrincondelc.com
curso de programación en c
Foros de programación en C
Inicio :: Código fuente

Valoración
1

Pascua

codigo enviada por: digies
Programa que determina el Domingo de Pascua para un año ingresado como dato. El algoritmo está basado en el método de Gauss.
/* Programa PASCUA.
DiGiEs */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

void fecha_pascua(int anyo);
void propietario(void);

int main(void)
{
    char strAnyo[6];
    int ch, anyo, i;
    unsigned char e;
    do
    {
         e=0;
         printf("--- PASCUA ---nnIngrese el axA4o: ");
         scanf("%6s", strAnyo);
         while((ch=fgetc(stdin))!=EOF && ch!='n')
             ;
         if(strlen(strAnyo)>4)
         {
             puts("nDato no vxA0lidoan"); e=1;
         }
         else if(strlen(strAnyo)==1 || strlen(strAnyo)==2 || strlen(strAnyo)==3)
         {
             puts("nDato no vxA0lidoan"); e=1;
         }
         else
         {
              for(i=0; i<(int)strlen(strAnyo); i++)
                   if(isascii(strAnyo[i])==0 || isdigit(strAnyo[i])==0)
                   {
                        puts("nDato no vxA0lidoan");
                        e=1;
                        break;
                   }
              if(e!=1)
              {
                   anyo=atoi(strAnyo);
                   if((anyo>=1000 && anyo<=1581) || (anyo>=2101 && anyo<=9999))
                   {
                        printf("nAxA4o %d fuera del Calendario Gregorianonn", anyo);
                        e=1;
                   }
              }
         }
    }
    while(e==1);
    fecha_pascua(anyo);
    printf("nn");
    system("PAUSE");
    return EXIT_SUCCESS;
}

void fecha_pascua(int anyo)
{
    int a=anyo%19, d=(19*a+24)%30, b=anyo%4, c=anyo%7, e=(2*b+4*c+6*d+5)%7, t=d+e+22, u;
    printf("nAxA4o: %d", anyo);
	if (t<=31)
         printf("nDomingo de Pascua: %d de Marzon", t);
    else
         printf("nDomingo de Pascua: %d de Abriln", u=d+e-9);
    return;
}
2 comentarios | Etiquetas: Pascua
digies aclara: En la línea del "printf("nn");" no salieron impresas las barras invertidas, es decir debía salir así: "printf("[barra_invertida]n[barra_invertida]n");". Por lo tanto allí se imprimen dos saltos de línea.
(digies 2007-11-19 16:16:06)
holalal si me puedes dar informacion hacerca dfe este programa lo primero que hago es compilarlo no me sac errores el me dice que que le entre un año se lo entro y no sale nada un ejemplo es el año 2009 y no me aparece na da gracias por la atencion prestada
(ggomezro 2009-02-22 08:02:52)

Para enviar comentarios debes estar registrado.

(c) ElRincondelC.com

Un proyecto de Urlan Heat : proyectos de Internet y soporte para el comercio electrónico.