Alunperin tein tämän testatakseni mikropc.netin muistilappusta
(elikkä vähän täytettä :D)
Saatatte ihmetellä sitä, että Paivamaara-struktissa on määritelty vuodelle
muuttuja vv, mutta kun noi vanhat ctime-headerin funktiot
eivät tue vuotta 2000, mulla antoi vuodeksi 102 :(
Joka tapauksessa voit kuitenkin omatekemiin päivämääriin liittää myös vuoden.
Lisäyksiä tulossa, mutta se vie oman aikansa..
* käännetty toimivaksi ainakin MinGW32:lla *
/* PVM-luokka (hyyvin yksinkertainen) Copyright (c) 2002 Mikael Puhakka (proguru) */ #include <iostream> using namespace std; #include <ctime> struct Paivamaara { // yksinkertainen tiatorakenne int pp, kk, vv; }; class PVM { Paivamaara pvm_; public: PVM(); ~PVM() {} friend ostream &operator<<(ostream&, PVM&); // tuki coutille void getTime(Paivamaara&); void setTime(Paivamaara&); void setTime(PVM&); // lapset, tämä on sitä ylikuormitusta :) void ulosta() const; void lyhyt() const; }; PVM::PVM() { // Osin kopsattu C++&OPO-kirjasta time_t sek; tm *paiva; time (&sek); paiva = localtime(&sek); pvm_.pp = paiva->tm_mday; pvm_.kk = paiva->tm_mon+1; } ostream &operator<<(ostream &zed, PVM& date) { zed << date.pvm_.pp << '.' << date.pvm_.kk << '.'; return zed; } void PVM::lyhyt() const { cout << pvm_.pp << '.' << pvm_.kk << '.' << endl; } void PVM::getTime(Paivamaara &p) { p.pp = pvm_.pp; p.kk = pvm_.kk; } void PVM::setTime(Paivamaara &p) { pvm_.pp = p.pp; pvm_.kk = p.kk; } void PVM::setTime(PVM &op) { op.getTime(pvm_); } void PVM::ulosta() const { cout << "Päivä: " << pvm_.pp << endl; cout << "Kuukausi: " << pvm_.kk << endl; cout << endl << "Eli: " << pvm_.pp << '.' << pvm_.kk << '.' << endl; cout << " -- --\n" << endl; } int main() { Paivamaara synttari; PVM paiva; synttari.pp = 10; synttari.kk = 4; synttari.vv = 1990; cout << "Nykyhetki: " << paiva << flush; // elipäs lyhyt ulostaa lyhyen pvmän:D cout << "\n\nPidennetty versio: " << endl; paiva.ulosta(); paiva.setTime(synttari); cout << "Joten mun synttärit olivat: " << paiva << endl; }
Niin, ei tullut mainittua (paitsi itse koodissa) sitä, että nuo koneen päivämäärän hakemiseen tarvittava koodi (tuossa PVM::PVM()-funktiossa) on siitä Päivi Hietasen C++ ja Olio-ohjelmointi-kirjasta. Kaikki kunnia sille!
nii tää luokka sitten tukeekin pieneksi aikaa kuukausia ja päiviä..
ainakin niinkauan kun päivämäärä ja kuukausi pysyy alle 2147483647.. vois tota muistiikin tietty vähän säästellä..
No enpä sitä muistia heti ensiksi ajatellut.. ehkäpä intti oli liian iso tuohon hommaan :)
Noh noh, onpahan sentään 32bittisillä nopeampaa käyttää inttiä kuin charria tms. Muutaman tavun muistinmenetykseen tuskin kenenkään projekti kaatuu.
Aihe on jo aika vanha, joten et voi enää vastata siihen.