Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: программа на с++
Показать сообщение отдельно

Ветеран


Сообщения: 1404
Благодарности: 135

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
/* Ïîäñ÷åò êîëè÷åñòâà äíåé ìåæäó äâóìÿ äàòàìè */
#include <stdio.h>

int compare(int d, int m,int g,int d2,int m2,int g2);
int beginning(int day, int month, int year);
int ending(int day, int month, int year);
int days(int d,int d2);

int mes[]={31,28,31,30,31,30,31,31,30,31,30,31};

void main()
{
	int d=1,m=1,g=2004; //íà÷àëüíàÿ äàòà (äåíü, ìåñÿö, ãîä)
	int d2=31,m2=12,g2=2006; //êîíå÷íàÿ äàòà (äåíü, ìåñÿö, ãîä)
	int c;
		

	c=compare(d,m,g,d2,m2,g2);
	printf("%d\n",c);
} 

int compare(int d, int m,int g,int d2,int m2,int g2){
	
int from,to,sum,year,dd,month;


sum=0;
if (g2>g)
{
	from=beginning(d2,m2,g2);//îò íà÷àëà ãîäà
	to=ending(d,m,g); // äî êîíöà ãîäà

	sum=from+to;
	for (year=g+1;year<g2;year++)
		{		
		if (year%4!=0){
			sum=sum+365;}
		else {
			sum=sum+366;}
		}
	return sum;
}
else if (g2<g)
{
	from=beginning(d,m,g);//îò íà÷àëà ãîäà
	to=ending(d2,m2,g2); // äî êîíöà ãîäà
	sum=from+to;
	for (year=g2+1;year<g;year++)
		{if (year%4!=0){
			sum=sum+365;}
		else {
			sum=sum+366;}
		}
	return sum;
}
else if (g2==g){
	if (g%4!=0){
		mes[1]=28;}
	else {
		mes[1]=29;}
		if (m>m2){
			for (month=m2+1;month<m;month++){
				sum=sum+mes[month-1];
			}
			sum=sum+mes[m2-1]-d2;
			sum=sum+d;
			return sum;

		}
		else if (m<m2){
			for (month=m+1;month<m2;month++){
				sum=sum+mes[month-1];
			}
			sum=sum+mes[m-1]-d;
			sum=sum+d2;
			return sum;
		}
		else if (m==m2){
			dd=days(d,d2);
			return dd;
		}
	}
}

int days(int d,int d2){
	int sum;
	if (d2<d){
			sum=d-d2;}
		else if(d2>d){
			sum=d2-d;}
		else if (d2==d){
			sum=0;}
	return sum;
}

/*
if (g2<g){
ending(g);//îò íà÷àëà ãîäà
beginning(g2);// äî êîíöà

sum();
}

if (g2==g)

*/
/* Ñëó÷àé 1: íà÷àëüíàÿ äàòà ìåíüøå êîíå÷íîé
Òîãäà íàì íóæíî çíàòü, ñêîëüêî â 1 äàòå, äî êîíöà ãîäà
è ñêîëüêî âî 2 äàòå îò íà÷àëà ãîäà*/




int beginning(int day, int month,int year){
	int ms=0;

	if (year%4!=0){
		mes[1]=28;}
	else {
		mes[1]=29;}

	if (month!=1){
		for (int j=0; j<month-1;j++){
				ms=ms+mes[j];
		}
		ms=ms+day;
	}
	else {
		ms=day;
	}
	return ms;
}

int ending(int day, int month, int year){
	int ms=0;
	
	if (year%4!=0){
		mes[1]=28;}
	else {
		mes[1]=29;}

	if (month!=12){
		for (int j=11; j>=month;j--){			
				ms=ms+mes[j];
		}
		ms=ms+mes[j]-day;		
	}
	else {
		ms=mes[11]-day;
	}
	return ms;
}

Последний раз редактировалось mrcnn, 24-10-2006 в 15:41.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:17, 24-10-2006 | #3

Название темы: программа на с++