onko olemassa ns. kelloa jonka saa käyntiin ja pysäytettyä ja sen jälkeen ehtolauseilla tarkastella esim. muuttujia kelloajan perusteella c :ssa?
esim. muuttujaan tulee tavara -> kello päälle!
kun jotain on tapahtunut -> kello kiinni!
Sitten.. Jos kelloaika on esim.
esim. muuttujaan tulee tavara -> kello päälle!
kun jotain on tapahtunut -> kello kiinni!
Sitten.. Jos kelloaika on esim.
Vastaukset 8
Vanhimmat
voisihan sitä kokeilla C-tyyliin
#include
/* kello päälle */
time_t alku = time(NULL); /* tämän hetkinen */
/* kello kiinni */
time_t loppu = time(NULL); /* tämän hetkinen */
/* aikaa kului */
double aika = difftim(loppu,alku);
Just tuollainen kello pitäisi saada toimiin, mutta ei toimi MS Visualissa tuo sinun malli.. ei tunnista defftimejä yms!
millä käskyillä tuollaisen kellon saa toimiin visualissa??
Onko mahdollista tehdä sellainen koodi että muuttujaan tavaran tullessa siilä alkaa juosta aika tai laskuri tai joku muu vastaava! eli jos on kolme muuttujaa niihin tulee tavaraa milloin vain ja aina kun tavara tulee niin aika alkaa juosta.. muuttujasta haetaan tavara ulos tutkimalla tätä aikaa eli, vaikka millä muuttujalla sattuu olemaan aika < 1 min. niin otetaan tavara ulos!
ymmärrättekö? :)
tavallisella kellolla se ei taida pelata koska sehän täytyy ensin sulkea enne kuin aikaa voidaan tutkailla.. mulla sen pitäis mennä niin että juoksevaa "kelloa" tsekattais ja siitä tehtäis päätelmä jatkosta.. siiten kuin tavara otetaan ulos muuttujasta niin samalla se tyhjennetään eli alustetaan ja tietty laskuri/kello sammutetaan ja taas kun uusi tavara tulee tähän muuttujaan niin kello/laskuri lähtisi taas alusta juoksemaan!
jos ymmärrätte idean ja jos tämä jotenkin olisi mahdollista niin olis hieno kuulla neuvoja ja vinkkejä!
Mikäs vika tuossa omassa ehdotuksessa oli ?
time() funktio palauttaa kellonajan koko ajan juoksevasta systeemmin kellosta (sekunnit vuodesta 1970 ;) tai clock() jos tarkkuutta tarvitaan.
eli alku aika talteen, ja difftime() sen hetkisen kellonajan ja alkuajan välillä. ja jos kelloja on kolme väännä niille omat luokat.
eli GetTickCount() paluttaa windowsin käynnissä olo ajan (muistaakseni) kuitenkin homma toimii näin:
//muuttujaan ollaan saatu tavaraa
//otetaan talteen aika
Start_Time = GetTickCount();
//muuttujansta ollan viety tavara pois
//tarkastetaan kuinka kauvan tavara oli //muuttujassa
End_Time = (GetTickCount()-Start_Time);
nyt End_Time pitää sisällään sen ajan (millisekunteina) jonka aikaa muuttujassa oli tietoa. joten voidaan tehdä vaikka seuraavanlainen toiminto:
if (End_Time
Tuo laskuri pyörähtää ympäri muistaakseni n. 50 päivän jälkeen, eli jos on ollut niin hyvä tuuri että windows on ollut noin kauan pystyssä saadaankin esim.
Start_Time = 123456789
End_Time = 123
jolloinka tuo suora vähennyslasku menee persiilleen, pitää verrata absoluuttista arvoa siis ilman etumerkkiä.
Hmm... ymmärsiköhän kukaan
Eikös tuo kello nollaannu endtimen jälkeen jos se käynnistetään uudelleen, eli lähtee taas nollasta aika juoksemaan! eli silloin se ei mene ympäri koska tavara ei pysy mun muuttujassa millään edes vuorokautta!
Elikkä olet siinä aivan oikeass Bill, että näinhän siinä välttämättä käy.
Jos nyt Tepalla oli kyse tämän GetTickCount() funktion lukeman kellon nollaantuvuudesta niin se tapahtuu seuraavina "aikoina":
1. Windowsin sulkeutuessa (käynnistyy uudelleen kun windows jälleen käynnistetään)
2. Kun windows on ollut päällä 49.7 päivää (johtuen käytetystä 32-bit integer data tyypistä)