Тема: Office
Показать сообщение отдельно
Старый 06.05.2009, 15:13   #3
Messiah
Местный
 
Аватар для Messiah
 
Регистрация: 20.09.2007
Сообщений: 4,226
Вы сказали Спасибо: 1
Поблагодарили 6,561 раз(а) в 1,660 сообщениях
По умолчанию

Что значит в среде 2003? Совершенно непонятно...он условно говоря сам по себе существует, другой вопрос о совместимости приложений выполненных в разных средах, либо 2003 либо 2007, но это другой вопрос. Также непонятен смысл "приложения" для Excel...для Excel возможно написание формул и их цепочек по определённым правилам, а здесь всё уже зависит от сложности реализации алгоритма. Вот в частности по расчёту времени восхода и заката, будет примерно так:
// sunrise.cpp : Пример использования функции sun_rise_set
//

#include <windows.h>
#include <time.h>
#include <math.h>
#include <conio.h>
#include "sun.h"

int main()
{
time_t m_time;// для текущего времени
time_t m_time_gmt;// для времени по гринвичу
double t_rise = 0;//время восхода солнца (в часах)
double t_set= 0;//время захода солнца (в часах)
double La,Lo;//широта и долгота положения на земле (в градусах)
char text1[60];// выходной текст ANSI
char text2[60];// выходной текст DOS
struct tm *tm_time;

// определяем текущее время (по гринвичу)
time(&m_time);
tm_time = gmtime( &m_time); // заполняем структуру со временем GMT
m_time_gmt = mktime(tm_time); // узнаем время по гринвичу (GMT)

// определяем часовой сдвиг от гринвича
double time_zone;
time_zone = difftime(m_time,m_time_gmt)/3600.;

//Координаты Москвы
La = 55+45/60.;
Lo = 37+35/60.;

// определяем текущее времена восхода и захода сегодня (местное время)
int ret = sun_rise_set(tm_time,time_zone,La,Lo,&t_rise,&t_se t);

// вывод на экран
sprintf(text1,"Сегодня: (в Москве)\n\r");
CharToOem (text1,text2);
printf(text2);
if (ret==-1)// не всходит
{
sprintf(text1,"Солнце не всходит");
CharToOem (text1,text2);
printf(text2);
}
if (ret==-2)// не заходит
{
sprintf(text1,"Солнце не заходит");
CharToOem (text1,text2);
printf(text2);
}
if (ret==1)// все нормально
{
sprintf(text1,"время восхода солнца %d ч. %d мин.\n\r",(int)t_rise,(int)((t_rise-floor(t_rise))*60));
CharToOem (text1,text2);
printf(text2);

sprintf(text1,"время захода солнца %d ч. %d мин.\n\r",(int)t_set,(int)((t_set-floor(t_set))*60));
CharToOem (text1,text2);
printf(text2);
}
// ждем, когда нажмем на любую клавишу
getch();

return 0;
}

В аттаче к этому посту, скомпилированный ехе файл, для расчёта. Справедливости ради надо отметить, что он реализован в формате double, но перевод в real не должен сильно отразится на точности. А сам механизм вычисления привязан к географическим координатам данной местности, в данном примере погрешность не превышает 1-2 минут
Вложения
Тип файла: rar sunrise.rar (46.1 Кб, 21 просмотров)
Messiah вне форума