Forum » Programiranje » pretvorba datuma v int
pretvorba datuma v int
Karak ::
Pri programiranju 1 sem dobil nalogo:
Napišite program za vnos podatkov o 10 računalnikih. Računalnik je nov tip in je sestavljen iz: ime, datuma_nakupa, hitrosti_procesorja, stevilo_jeder in velikosti_pomnilnika. Datum je sestavljen iz dneva, meseca in leta. Program naj vpisane podatke tudi izpiše urejene po datumu nakupa (naraščajoče). Pri implementaciji uporabite polje računalnikov in funkcije.
Mene zanima kako se lahko pretvorim datum v int stevilo, zato da bom lahko izpisal urejene datume nakupa. Pisem v jeziku c++.
Napišite program za vnos podatkov o 10 računalnikih. Računalnik je nov tip in je sestavljen iz: ime, datuma_nakupa, hitrosti_procesorja, stevilo_jeder in velikosti_pomnilnika. Datum je sestavljen iz dneva, meseca in leta. Program naj vpisane podatke tudi izpiše urejene po datumu nakupa (naraščajoče). Pri implementaciji uporabite polje računalnikov in funkcije.
Mene zanima kako se lahko pretvorim datum v int stevilo, zato da bom lahko izpisal urejene datume nakupa. Pisem v jeziku c++.
Vesoljc ::
1) spremenis v int tako kot si mislil
kaj takega:
int dateval = day + (100+month)*100 + year*100000
10 + 10100 + 201300000 = 201310110
27 + 10800 + 201100000 = 201110827
201310110 > 201110827
2) napises objekt z compare operatorji (lepsa ter boljsa resitev)
google "operator overloading", "date class example"
kaj takega:
int dateval = day + (100+month)*100 + year*100000
10 + 10100 + 201300000 = 201310110
27 + 10800 + 201100000 = 201110827
201310110 > 201110827
2) napises objekt z compare operatorji (lepsa ter boljsa resitev)
google "operator overloading", "date class example"
Abnormal behavior of abnormal brain makes me normal...
mallard ::
V kakšnem formatu imaš datum? Načeloma ti ni treba nič pretvarjat, za primerjavo med dvema datumoma lahko narediš v tem smislu (psevdokoda, strict weak ordering):
if (leto1 != leto2) return leto1 < leto2; else if (mesec1 != mesec2) return mesec1 < mesec2; else return dan1 < dan2;
Zgodovina sprememb…
- spremenilo: mallard ()
_Dormage_ ::
Lahko pa si olajšaš življenje in enostavno pretvoriš v UNIX time in sortiraš.
Unix time format omogoča primerjave večje, manjše in je enako.
Unix time format omogoča primerjave večje, manjše in je enako.
keworkian ::
#include <time.h> struct tm tm; time_t epoch; strptime(<vnos>, <format>, &tm); epoch = mktime(&tm);
Obscenities in B-Flat
Zgodovina sprememb…
- spremenil: keworkian ()
black ice ::
1) spremenis v int tako kot si mislil
kaj takega:
int dateval = day + (100+month)*100 + year*100000
10 + 10100 + 201300000 = 201310110
27 + 10800 + 201100000 = 201110827
201310110 > 201110827
2) napises objekt z compare operatorji (lepsa ter boljsa resitev)
google "operator overloading", "date class example"
Dvomim, da pri programiranju 1 obravnavajo OOP, čeprav je bolj elegantna rešitev.
Genetic ::
Vsak datum pretvoris v String oblike YYYYMMDD in lahko potem sortiras po stringu
Recimo 22.Nov.2012 vs 1.Maj.2012 je 20121122 vs 20120501
Recimo 22.Nov.2012 vs 1.Maj.2012 je 20121122 vs 20120501
darkkk ::
Tole zadnje se ponavadi uporablja v obliki yyyy-MM-dd (kao science format), ampak ja, efekt je isti.
Edino pazi, da ne pozabiš ničel dodati za mesece in dneve, ki imajo le eno števko :)
Edino pazi, da ne pozabiš ničel dodati za mesece in dneve, ki imajo le eno števko :)
win64 ::
1. rešitev od vesoljc-a je najbolj optimalna za tvoj problem.
lahko jo celo malo poenostaviš:
int dateval = day + month*31 + year*366
ali če malo kompliciramo z bit operatorji: int dateval=day+(month<<5)+(year<<9)
primerjaš pa potem: return day2 + month2*31 + year2*366 - day1 - month1*31 - year1*366;
Pretvarjanje v string pa je predrago.
lahko jo celo malo poenostaviš:
int dateval = day + month*31 + year*366
ali če malo kompliciramo z bit operatorji: int dateval=day+(month<<5)+(year<<9)
primerjaš pa potem: return day2 + month2*31 + year2*366 - day1 - month1*31 - year1*366;
Pretvarjanje v string pa je predrago.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Program za set back time (RUN AS DATE)Oddelek: Programska oprema | 4870 (4494) | Yacked2 |
» | c++ DODAJANJE elementov iz datoteke v vektorOddelek: Programiranje | 958 (833) | Tutankhamun |
» | SQL CNVERT; konvertanje datumaOddelek: Programiranje | 1473 (1279) | frudi |
» | HTML forma in datumOddelek: Izdelava spletišč | 1804 (1540) | Muzo |
» | Iskanje naslednje ponovitve - najboljši algoritem (strani: 1 2 )Oddelek: Programiranje | 4453 (3511) | Thomas |