Forum » Programiranje » [NALOGA][C] iskanje petkov 13
[NALOGA][C] iskanje petkov 13
seawolf ::
Živjo!
Že par dni se mučim s tem programom ma mi enostavno ne uspe priti do konca.
Naloga:
V programskem jeziku C napišite program petek13, ki v danem časovnem intervalu, podanem kot parameter ukazne vrstice, izpiše vse petke 13. Program mora upoštevati tudi prestopna leta in izhajati iz trenutnega datuma in dneva.
Zgled:
petek13 1.1.2000 31.12.2002
izpiše
petek: 13.10.2000
petek: 13.4.2001
petek: 13.7.2001
petek: 13.9.2002
petek: 13.12.2002
Vse kar mi je do sedaj vspelo narediti je prebrati trenutni datum in parametre ukazne vrstice, naprej pa se mi ne sanja kako it. Ce kdo ve kaj je potrebno storiti bi mu bil hvalezen.
Hvala za morebitno pomoc.
Že par dni se mučim s tem programom ma mi enostavno ne uspe priti do konca.
Naloga:
V programskem jeziku C napišite program petek13, ki v danem časovnem intervalu, podanem kot parameter ukazne vrstice, izpiše vse petke 13. Program mora upoštevati tudi prestopna leta in izhajati iz trenutnega datuma in dneva.
Zgled:
petek13 1.1.2000 31.12.2002
izpiše
petek: 13.10.2000
petek: 13.4.2001
petek: 13.7.2001
petek: 13.9.2002
petek: 13.12.2002
Vse kar mi je do sedaj vspelo narediti je prebrati trenutni datum in parametre ukazne vrstice, naprej pa se mi ne sanja kako it. Ce kdo ve kaj je potrebno storiti bi mu bil hvalezen.
Hvala za morebitno pomoc.
If anything can go wrong, it will.
snow ::
Mislim da obstaja nek algoritem, ki ti iz datuma pove kateri dan je(enkrat smo o tem debatirali tudi v znanost in tehnologija). Pogooglaj malo.
No potem ko imaš algoritem se sprahodiš po vseh 13. tih dnevih vseh mesecev znotraj intervala in pogledaš če je to petek. Če je ga izpišeš.
No potem ko imaš algoritem se sprahodiš po vseh 13. tih dnevih vseh mesecev znotraj intervala in pogledaš če je to petek. Če je ga izpišeš.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins
seawolf ::
ja sej katiri dan je trenutno vem to že dobim skupaj z datumom ampak potem kako preverit če je 13 dan petek ne vem, sklepam da je potrebno uporabiti kakšno for zanko ampak ne vem kako jo oblikovat.
If anything can go wrong, it will.
gumby ::
za prestopno leto obstaja nek preprost test - google it
vzames en datum, ki je petek (recimo 25.11.2005). nato v eni zanki pristejes vedno 7 dni in cekiras, ce pade na trinajstega. preverit moras tud, ce si prestopil v nov mesec ali leto, kar pa je spet dokaj enostavno za naredit
na tak nacin ne rabis nobenega fancy alogritma
btw imam obcutek, da se stvar zacne ponavljat po dolocenem stevilu let... bo to kak dezurni matematik potrdil ali ovrgel
vzames en datum, ki je petek (recimo 25.11.2005). nato v eni zanki pristejes vedno 7 dni in cekiras, ce pade na trinajstega. preverit moras tud, ce si prestopil v nov mesec ali leto, kar pa je spet dokaj enostavno za naredit
na tak nacin ne rabis nobenega fancy alogritma
btw imam obcutek, da se stvar zacne ponavljat po dolocenem stevilu let... bo to kak dezurni matematik potrdil ali ovrgel
snow ::
za vse 13.mesec.leto znotraj intervala.. poglej če je 13.mesec.leto po formuli iz strani: http://mathforum.org/dr.math/faq/faq.calendar.html (glej: How do I find the day of the week for any date?)
druga možnost je pa zgoraj ja. naštimaš dan na prvi petek (hmm kako že? ja najbrž bo treba en algoritem uporabit.. tak kot zgoraj imo).. nato pa prestavljaš dan po 7 naprej in ustrezno spreminjaš mesec in leto. če pade dan na 13 je to to.
ta varianta se mi zdi da rabi malo več dela? možno da gre tale verzija še malo hitreje.
druga možnost je pa zgoraj ja. naštimaš dan na prvi petek (hmm kako že? ja najbrž bo treba en algoritem uporabit.. tak kot zgoraj imo).. nato pa prestavljaš dan po 7 naprej in ustrezno spreminjaš mesec in leto. če pade dan na 13 je to to.
ta varianta se mi zdi da rabi malo več dela? možno da gre tale verzija še malo hitreje.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins
veteran ::
nato pa prestavljaš dan po 7 naprej
Hehe, a je kakšna varianta, da npr 20. v mesecu (če 13 prišteješ 7) pade na petek trinajstega? :))
Seawolf, zguglaj "Julian date day of week", boš našel eno funkcijo, ki ti vrne dan v tednu. Vzameš prvi 13 znotraj danega intervala, preveriš, če je petek in ga izpišeš, nato pa samo prištevaš mesece in leta in ponavljaš, dokler ne prideš do konca intervala. Ja?
Hehe, a je kakšna varianta, da npr 20. v mesecu (če 13 prišteješ 7) pade na petek trinajstega? :))
Seawolf, zguglaj "Julian date day of week", boš našel eno funkcijo, ki ti vrne dan v tednu. Vzameš prvi 13 znotraj danega intervala, preveriš, če je petek in ga izpišeš, nato pa samo prištevaš mesece in leta in ponavljaš, dokler ne prideš do konca intervala. Ja?
gumby ::
ni fora v tem... na moj nacin ne rabis algoritma, ki ti pove kateri dan je na dolocen datum
veteran ::
Torej bi ti kar v program napisal, da je 25.11.2005 petek.
Aha, zgoraj piše 'Program mora upoštevati tudi prestopna leta in izhajati iz trenutnega datuma in dneva'. Očitno bo treba za trenutni datum ponucati funkcijo za izračun dneva (ali pa zahtevati vnos dneva in datuma), potlej pa malo telovaditi s prištevanjem ali odštevanjem. Zabavno. ;)
Aha, zgoraj piše 'Program mora upoštevati tudi prestopna leta in izhajati iz trenutnega datuma in dneva'. Očitno bo treba za trenutni datum ponucati funkcijo za izračun dneva (ali pa zahtevati vnos dneva in datuma), potlej pa malo telovaditi s prištevanjem ali odštevanjem. Zabavno. ;)
gumby ::
hmm... potem pa ne ostane drugo, kot algoritem za ugotavljanje dneva.
malo povrsno sem prebral nalogo
malo povrsno sem prebral nalogo
seawolf ::
ugotoviti kateri dan ni problem, ima c to že vse noter in to sm tudi ugotovil kako narediti (uporabis ukaz time), prestopno leto ugotovis z if leto%4=0, mučilo me je zanka kaj naj dela in zdaj sem neko idejo dobil tako da hvala.
If anything can go wrong, it will.
McAjvar ::
pazi!
to ne drzi. na zgoraj omenjeni povezavi si lahko preberes:
prestopna leta bos moral bolj natancno opredeliti, zgornji if ne zadosti vsem pogojem.
prestopno leto ugotovis z if leto%4=0
to ne drzi. na zgoraj omenjeni povezavi si lahko preberes:
Every fourth year is a leap year. However, every hundredth year is not a leap year. Every four hundred years, there's a leap year after all.
prestopna leta bos moral bolj natancno opredeliti, zgornji if ne zadosti vsem pogojem.
"[...] the advance of civilization is nothing
but an exercise in the limiting of privacy."
- Isaac Asimov
but an exercise in the limiting of privacy."
- Isaac Asimov
seawolf ::
odločil sem se da bo program deloval kar na forumili ki je na zgornji strani (f = k + [(13*m-1)/5] + D + [D/4] + [C/4] - 2*C) tako ne bo potrebno ugotavljati nobenih prestopnih let ker potrebujem samo 13 v mesecu.
If anything can go wrong, it will.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Za težave s PS3 odgovoren ARMOddelek: Novice / Igre | 6140 (5580) | neoto |
» | Zuni masovno umrli ob polnoči (strani: 1 2 )Oddelek: Novice / Znanost in tehnologija | 9682 (5443) | avarfang |
» | Potres spremenil rotacijo Zemlje (strani: 1 2 3 4 )Oddelek: Novice / Znanost in tehnologija | 18810 (14745) | MrStein |
» | Iskanje naslednje ponovitve - najboljši algoritem (strani: 1 2 )Oddelek: Programiranje | 4434 (3492) | Thomas |
» | petek, trinajstegaOddelek: Loža | 1972 (722) | Azz_Kikr |