Results 1 to 2 of 2
Hybrid View
-
23rd October 2008 05:24 #1
getTime(); C++, Ìàëêî ïîìîù ìîëÿ!
Çäðâåéòå íà âñè÷êè. Íàïèñàõ åäíà ïðîãðàìà, êîÿòî èçãëåæäà ìàëêî ñòðàííî íàïèñàíà, êàòî íàïðèìåð çàùî ñ if -else if, âìåñòî ñ ìàñèâ, íî òîâà ìè áÿõà èçèñêâàíèÿòà! Èìàì îáà÷å ïðîáëåì, ÷å ïðîãðàìàòà íå ìè ïîêàçâà òî÷íàòà äàòà! Ìîëÿ àêî ìîæå íÿêîé äà ìè ïîìîãíå! Ñëåä áåçêðàéíî ñëåäåíå íà êîäà è ïðîìåíè óñïÿõ äà ïîñòèãíà íÿêàêâè ðåçóëòàòè, êîèòî â ìîìåíòà ñà íà ëèöå, íî âñå ïàê íå ìîãà äà ÿ äîêàðàì äà ðàáîòè ïî íà÷èíúò ïî êîéòî òðÿáâà!
Áëàãîäàðÿ âè!
Åòî ãî è êîäà:
#include <cstdlib>
#include <iostream>
using namespace std;
void getTime ()
{
string month;
int date;
long seconds = time(0) - (7*3600);
//Years
int years = seconds / 31536000;
//cout <<years<<endl;
//Seconds left for the year
int leftSecondsYr = seconds % 31536000;
//cout <<leftSecondsYr<<endl;
//Leap Years
int leaps = ((years + 2) / 40) / 3;
//Actual # seconds
int actualSeconds = leftSecondsYr - (leaps * 86400);
//cout <<actualSeconds<<endl;
//Days
int days = actualSeconds / 86400;
//cout <<days<<endl;
//Seconds left for the day
int leftSecondsDay = actualSeconds % 86400;
//cout <<leftSecondsDay<<endl;
//Month and date
if (days >= 0 && days <= 31)
{
month = "January";
date = days - 0;
}
else if (days >= 32 && days <= 59)
{
month = "February";
date = days - 32;
}
else if (days >= 60 && days <= 90)
{
month = "March";
date = days - 60;
}
else if (days >= 91 && days <= 120)
{
month = "April";
date = days - 91;
}
else if (days >= 121 && days <= 151)
{
month = "May";
date = days - 121;
}
else if (days >= 152 && days <= 181)
{
month = "June";
date = days - 152;
}
else if (days >= 182 && days <= 212)
{
month = "July";
date = days - 182;
}
else if (days >= 213 && days <= 243)
{
month = "August";
date = days - 213;
}
else if (days >= 244 && days <= 273)
{
month = "September";
date = days - 244;
}
else if (days >= 274 && days <= 304)
{
month = "October";
date = days - 274;
}
else if (days >= 305 && days <= 334)
{
month = "November";
date = days - 305;
}
else if (days >= 335 && days <= 365)
{
month = "December";
date = days - 335;
}
int currentYear = 1970 + years;
cout <<month <<" " <<date <<", " <<currentYear <<endl;
//Hours
int hour = leftSecondsDay / 3600;
//Minutes
int leftminutes = leftSecondsDay % 3600;
int minutes = leftminutes / 60;
//Seconds
int leftseconds = leftminutes % 60;
seconds = leftseconds;
cout <<hour <<":" <<minutes <<":" <<seconds <<endl;
}
int main()
{
getTime();
system("PAUSE");
return EXIT_SUCCESS;
}|Asus P5K Premium WiFi|Intel C2D E6750|Kingston 2x1GB@667MHz|Seagate 250GB+500GB|Coolmax CP 500W|Asus EN 8800 GTS 320MB|
-
23rd October 2008 10:16 #2
Åé òàçè ÷àñò îò êîäà òè íå ìè ñå âèäè âÿðíà:
è ïîñëå ñ ìîäóëà ïî ñúùîòî ÷èñëî. Ìàãè÷åñêèÿ äåëèòåë ãëåäàì å 365 * 24 * 60 * 60, êîåòî òðÿáâà äà å áðîÿ ñåêóíäè â ãîäèíà. Îáà÷å, òàêà ïðèåìàø, ÷å âñè÷êè ãîäèíè ñà íåâèñîêîñíè, è ðàç÷èòàø íà òîçè ôàêò çà äà îïðåäåëèø ãîäèíàòà, à òîâà íå å âÿðíî.Code://Years int years = seconds / 31536000; //cout <<years<<endl;
Íàïðèìåð, ìîæå äà òè ñå îêàæå, ÷å ñåêóíäàòà ñå ïàäà íÿêúäå â ñàìîòî íà÷àëî íà ãîäèíàòà, òîãàâà leftSecondsYr ùå å ìàëêî ÷èñëî, è ïîñëå ïðè
ùå òè ñå ïîëó÷è îòðèöàòåëíî ÷èñëîCode:int actualSeconds = leftSecondsYr - (leaps * 86400);

Çà äà çàðàáîòè ðåøåíèåòî òè òðÿáâà åäèí ìàñèâ, ñúäúðæàù îò êîÿ ñåêóíäà ïî÷âà âñÿêà ãîäèíà îò 1900 íàñàì, êîåòî, äîðè ñ ìàñèâ å ãíóñíî, à àêî òðÿáâà äà ãî ïðàâèø ñ if-îâå ùå å ìíîãî òúæíî
P.S.: À çàùî íå ïîëçâàø ñòàíäàðòíàòà C ôóíêöèÿ localtime?Åòî òàêà ñå ïëîäÿò òå, êàçâàì ñè àç. Ïîä íîñà òè.
"640K îught to be enough for anybody" - Bill Gates, 1981
Òåñòîâå íà áàòåðèè::Machine specs::Fract::AGG::ÍåÑåÑúðäè×îâå÷å::Baileys::blog::YouTube channel




Reply With Quote
Lenovo ThinkPad 15 èëè IdeaPad 15
5th May 2023, 22:16 in Ìîáèëíè êîìïþòðè