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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » программа на с++

Ответить
Настройки темы
программа на с++
gh6 gh6 вне форума

Новый участник


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

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


кто знает>> Помогите пожалуйста с написанием проги на с++

Программе №5 оформить задачу как функцию
/* Подсчет количества дней между двумя датами */
/***************************************************************/
#include <stdio.h>
//вспомогательный массив количества дней от начала до текущего
//месяца
int mes[12]={0, 31, 59, 90, 120, 151, 181,
212, 243, 273, 304, 334 };
main()
{
int d,m,g; //начальная дата (день, месяц, год)
int d2,m2,g2; //конечная дата (день, месяц, год)
int c;
//подсчет количества дней между двумя датами
c=mes[m-1]-d2+365*(g2-g1)+mes[m2-1]+d2;
//учет високосности для начальной даты
if(!g%4) if(m<3) c++;
//учет високосности для конечной даты
if(!g2%4) if(m>2) c++;
//учет високосности для годов попавших в интервал
//между двумя датами
c=c+(g2-g)/4;
printf("%d",c);
}

Отправлено: 11:48, 24-10-2006

 

Аватара для Greyman

Человек


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

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


Перенес из ХВЗ в Программирование

-------
Будь проще...


Отправлено: 13:11, 24-10-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 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


Ветеран


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

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


После vbs опять начал путать == и =. Код отредактирован.

-------
Ehhh.. what's up, doc?..


Отправлено: 15:42, 24-10-2006 | #4

pva pva вне форума

Аватара для pva

Ветеран


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

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


а у gh6 и впрямь неплохая програмка. Почему-то я раньше никогда не догадывался месяцы то сложить.
Код: Выделить весь код
int daysBetween(int d, int m, int g, int d2, int m2, int g2)
{
 static const int mes[12]={0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; 

 int c;
 c=mes[m-1]-d2+365*(g2-g1)+mes[m2-1]+d2; 
 if(!(g%4) && m<3) ++c; 
 if(!(g2%4) && m>2) ++c; 
 c+=(g2-g)/4;

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

Отправлено: 20:43, 24-10-2006 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » программа на с++

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - Программа NTScan. BROTHERHOOD Программное обеспечение Windows 0 01-10-2009 20:00
Нужна программа, определяющая, каким инсталлятором запакована программа yaryar Программное обеспечение Windows 3 24-06-2008 10:56
программа Rustem Вебмастеру 7 07-05-2008 11:37
DOS-программа и XP Obolduy Microsoft Windows 2000/XP 4 15-04-2006 00:34
Программа spawn ivank Программное обеспечение Linux и FreeBSD 13 11-09-2003 18:25




 
Переход