Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Odredjivanje dana u tjednu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Odredjivanje dana u tjednu

[ Pregleda: 2056 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Danijel Bulic
Danijel Bulic
Split

Član broj: 140925
Poruke: 116
*.fesb.hr.



+4 Profil

icon Odredjivanje dana u tjednu21.05.2011. u 15:05 - pre 157 meseci
Moze mala pomoc, trebam unijeti godinu i onda preko funkcija napisati koji je dan taj datum. Algoritam sam nasao na netu negdje, otprilike mi je jasno kako radi samo sto program ne ispisuje dobar rezultat, npr. za danasnji dan kaze srijeda a subota ako smak svijeta nije nesto poremetio :D
Code:
#include <iostream>

using namespace std;

int nadnevakUbroj(int dan, int mj, long godina);
void danUtjednu(int);

int main()
{
    danUtjednu(nadnevakUbroj(21,5,2011));
    return 0;
}

int nadnevakUbroj(int dan, int mj, long godina)
{
    // odredjivanje dana na osovnu datuma
    long datum;
    int m,g,x;
    x =(14-mj)/12;
    g = godina - x;
    m = mj - 2 + 12*x;
    datum = dan + 31*mj/12 - 2 + g + g/4 - g/100 + g/400;
    return datum%7;
}

void danUtjednu(int n)
{
    switch (n)
    {
        case 0:
        cout << "Ponedjeljak" << endl;
        break;
        case 1:
        cout << "Utorak" << endl;
        break;
        case 2:
        cout << "Srijeda" << endl;
        break;
        case 3:
        cout << "Cetvrtak" << endl;
        break;
        case 4:
        cout << "Petak" << endl;
        break;
        case 5:
        cout << "Subota" << endl;
        break;
        default:
        cout << "Nedjelja" << endl;
    }
return 0;
}



Jel moze neki savjet ili pomoc ?
ex. malak
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Odredjivanje dana u tjednu21.05.2011. u 15:36 - pre 157 meseci
Ne programiram u C++u ali evo ti pseudo, mozda pomogne:
Code:

/* 
 day: 1 .. 31 
 month: 1 .. 12
*/
function weekDay(day, month, year) {

   days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

   num_days = 0;

   month -= 1;

   for (i = 0; i < month; i++) {
      num_days += days_in_month[i];
   }

   if (month > 1 && year % 4 == 0) {
      num_days += 1;
   }

   num_days += day;

   return num_days % 7;
}


posto je pseudo kod nisam testirao, ali mislim da je to to :)

weekDay ce da ti vrati broj od 0 do 6 (0 = ponedeljak, 6 = nedelja)

edit: sad skontah da ce ovo da radi samo ako je prvi januar ponedeljak :/ ipak mora malo komplikovaniji kod..

[Ovu poruku je menjao Aleksandar Ružičić dana 21.05.2011. u 16:47 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Odredjivanje dana u tjednu21.05.2011. u 19:49 - pre 157 meseci
Pogledaj i druge algoritme (kljucna rec: DayOfWeek):

http://www.planet-source-code....sp?txtCodeId=2857&lngWId=3
http://everything2.com/user/lo...y+of+the+week+for+a+given+date

(Naravno, uvek proveri kakav autoritet stoji iza koda, da ne bude posle...)
 
Odgovor na temu

chaami
Goran Petrović
nezaposlen
Beograd

Član broj: 262685
Poruke: 84
77.243.20.*



+28 Profil

icon Re: Odredjivanje dana u tjednu23.05.2011. u 10:52 - pre 157 meseci
Imaš jednu malu gršku u kodu.

datum = dan + 31*m/12 - x + g + g/4 - g/100 + g/400 - 1;

Deo koji ti računa sa kojim danom počinje mesec je: 31*m/12-x umesto: 31*mj/12-2
ono -1 na kraju je moralo da se doda jer si u switch stavio da ti dani kreću od ponedeljka,
ako to ispraviš i kreneš od nedelje, pošto je prvog januara prve godine bila nedelja (zar se ne sećaš :)),
onda ćeš izbaciti to -1.

Druga greška ti je funkcija danUtjednu koja je void (šta će ti u njoj return 0;)

I jedno pitanje. Koji je ovo algoritam, kako se zove i gde si ga našao?

[Ovu poruku je menjao chaami dana 23.05.2011. u 12:18 GMT+1]
 
Odgovor na temu

chaami
Goran Petrović
nezaposlen
Beograd

Član broj: 262685
Poruke: 84
77.243.20.*



+28 Profil

icon Re: Odredjivanje dana u tjednu23.05.2011. u 12:56 - pre 157 meseci
Citat:
chaami: Imaš jednu malu gršku u kodu.

datum = dan + 31*m/12 - x + g + g/4 - g/100 + g/400 - 1;

Deo koji ti računa sa kojim danom počinje mesec je: 31*m/12-x umesto: 31*mj/12-2
ono -1 na kraju je moralo da se doda jer si u switch stavio da ti dani kreću od ponedeljka,
ako to ispraviš i kreneš od nedelje, pošto je prvog januara prve godine bila nedelja (zar se ne sećaš :)),
onda ćeš izbaciti to -1.

Druga greška ti je funkcija danUtjednu koja je void (šta će ti u njoj return 0;)

I jedno pitanje. Koji je ovo algoritam, kako se zove i gde si ga našao?

[Ovu poruku je menjao chaami dana 23.05.2011. u 12:18 GMT+1]


Mnogo se bre ti pravis pametan.

datum = dan + 31*m/12 - x + godina + g/4 - g/100 + g/400 - 1; // ide godina a ne g

i prvi januar prve godine je bio ponedeljak, tako da je switch dobar, ali ono -1 mora da ide.
 
Odgovor na temu

Danijel Bulic
Danijel Bulic
Split

Član broj: 140925
Poruke: 116
*.CARNet.hr.



+4 Profil

icon Re: Odredjivanje dana u tjednu23.05.2011. u 13:32 - pre 157 meseci
Citat:
chaami: Imaš jednu malu gršku u kodu.

datum = dan + 31*m/12 - x + g + g/4 - g/100 + g/400 - 1;

Deo koji ti računa sa kojim danom počinje mesec je: 31*m/12-x umesto: 31*mj/12-2
ono -1 na kraju je moralo da se doda jer si u switch stavio da ti dani kreću od ponedeljka,
ako to ispraviš i kreneš od nedelje, pošto je prvog januara prve godine bila nedelja (zar se ne sećaš :)),
onda ćeš izbaciti to -1.

Druga greška ti je funkcija danUtjednu koja je void (šta će ti u njoj return 0;)

I jedno pitanje. Koji je ovo algoritam, kako se zove i gde si ga našao?

[Ovu poruku je menjao chaami dana 23.05.2011. u 12:18 GMT+1]


www.fsb.hr/.../ZS/.../kako_iz_datuma_odrediti_dan_u_tjednu.pdf

Mislim da cu ipak procesljati jos koji algoritam :D

ako nista vracam se ovoj metodi i savjetima.
ex. malak
 
Odgovor na temu

chaami
Goran Petrović
nezaposlen
Beograd

Član broj: 262685
Poruke: 84
77.243.20.*



+28 Profil

icon Re: Odredjivanje dana u tjednu23.05.2011. u 18:19 - pre 157 meseci
Sad sam gledao na ovoj stranici za koju si stavio link i to je u stvari neka verzija zellerevog sistema koji za prvi mesec racuna mart. Ala sam se ja nalupao gore. Ono -x+godina mu dodje isto sto i +g.
Lepo je covek napisao formulu koja radi perfektno: datum = dan + 31*m/12 + g + g/4 - g/100 + g/400
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Odredjivanje dana u tjednu

[ Pregleda: 2056 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.