FUNZIONE GIORNO

di il
21 risposte

FUNZIONE GIORNO

Ciao a tutti!
Avrei bisogno di una mano per la scrittura di una funzione che inserita una data restituisca il giorno della settimana corrispondente... non so da dove iniziare..
Devo scriverlo in linguaggio C e io utilizzo Visual Studio.

21 Risposte

  • Re: FUNZIONE GIORNO

    Fai qualche ricerca ... ad esempio con

    C/C++ day of week

    Studia la funzione

    ctime
    http://en.cppreference.com/w/c/chrono/ctim

    e le altre collegate ...
  • Re: FUNZIONE GIORNO

    Oppure potresti fare una cosa piu' figa:

    1) calcoli quanti giorni sono passati tra oggi ed il 1 gennaio dell'anno 0 (zero)

    2) quindi calcoli il risultato della divisione per 7

    3) supponendo che domenica sia 0 (ed oggi e' domenica!), calcoli la differenza tra 7 ed il valore trovato al passo 2), a meno che questo non sia gia' 0. Chiamalo 'offset'

    3) il tuo giorno della settimana sara':

    ((numero di giorni passati dal 1/1/0) + offset) modulo 7

    dove

    0 -> domenica
    1-> lunedi
    ..
    6 -> sabato
  • Re: FUNZIONE GIORNO

    C'è il "piccolo" problema che si dovrebbe considerare il calendario giuliano prima del 1582 e quello gregoriano introdotto con varie modifiche ed eccezioni da quell'anno ...
  • Re: FUNZIONE GIORNO

    Per il calcolo del giorno della settimana, non serve coinvolgere il calendario Giuliano.

    Certo, l'algoritmo funziona correttamente solo con il calendario Gregoriano, anche per date precedenti al 15/10/1582.

    Il fatto che sia stato introdotto in quella data non vuol mica dire che date precedenti non possono essere rappresentate!

    Ad esempio il giorno 1 gennaio dell'anno 0 nel calendario Gregoriano (un sabato ) corrisponde al giorno 3 gennaio dell'anno -1 del calendario Giuliano. Il calendario Giuliano non ha l'anno 0!

    Ed il 15/10/1582 del calendario Gregoriano era un venerdi, e corrisponderebbe al 5/10/1582 del calendario Giuliano, ...

    Ad esempio, oggi 22/06/2014 sarebbe il 9/06/2014 del calendario Giuliano, ....

    il [13, 0, 1, 9, 8] del calendario Maya
    il 24/3/5774 del calendario Ebreo
    il 1/4/1393 del calendario Persiano

    ecc..

    Dirai, ma come cavolo ha fatto a sapere tutte queste date? Con conversioni su Internet? Ebbene no: mi implementato gli algritmi letti qui':

    http://www.amazon.co.uk/Calendrical-Calculations-Nachum-Dershowitz/dp/0521702380/ref=sr_1_sc_1?ie=UTF8&qid=1403446072&sr=8-1-spell&keywords=calendrica

    So tutto sui calendari Piu o meno ...
  • Re: FUNZIONE GIORNO

    Giusto come curiosita': i Maya avevano previsto solo 12 epoche.

    Se avete notato, nel calendario Maya oggi e' il [13, 0, 1, 9, 8]: Dove 13 e' l'epoca Maya.

    Il 20 dicembbre 2012 era il [12, 19, 19, 17, 19], epoca 12

    il 21 dicembre 2012 era il Maya[13, 0, 0, 0, 0] epoca 13, e' poiche' questa epoca non e' rapresentabile, ecco la storia della fine del mondo

    Ricordo, anche, che i Maya non usavano i numeri romani, ma dei simboli.
  • Re: FUNZIONE GIORNO

    Parlare di date del calendario gregoriano prima della sua introduzione è un "non senso" storico, anche se dal punto di vista matematico è ovviamente possibile effettuare dei calcoli.

    Dato che prima del 15/10/1582 non esisteva il gregoriano, quello che intendevo è che basta fare riferimento a questo giorno per i calcoli visto che le date precedenti vanno calcolate diversamente.

    Ovvero, se il programma dovesse calcolare il giorno 14/10/1582 non potrebbe dire che era giovedì in quanto "non esistente" per il gregoriano (e non "corrispondente" al 14/10/1582 giuliano, una domenica).
  • Re: FUNZIONE GIORNO

    oregon ha scritto:


    Parlare di date del calendario gregoriano prima della sua introduzione è un "non senso" storico, anche se dal punto di vista matematico è ovviamente possibile effettuare dei calcoli.

    Dato che prima del 15/10/1582 non esisteva il gregoriano, quello che intendevo è che basta fare riferimento a questo giorno per i calcoli visto che le date precedenti vanno calcolate diversamente.

    Ovvero, se il programma dovesse calcolare il giorno 14/10/1582 non potrebbe dire che era giovedì in quanto "non esistente" per il gregoriano (e non "corrispondente" al 14/10/1582 giuliano, una domenica).
    Ma anche ammettendolo, ti serve sempre sapere quanti giorni sono passati dal 15/10/1582 alla data in esame ...

    E come pensi di farlo ?

    Ma c'e' un'altro ma: concettualmente se non posso parlare di date espresse in un calendario, precedenti all'introduzione delo stesso, allo stesso modo non dovrei poter parlare di date successive alla dismissione del suddetto calendario.
    Quindi non potremmo parlare di date espresse nel calendario della rivoluzione Francese, del calendario Maya, ecc...

    Ma che bischerata !
  • Re: FUNZIONE GIORNO

    Considerando quella come data 0 del mio sistema e sapendo che giorno era. In ogni caso, si può sempre calcolare a partire da una qualsiasi data conosciuta del gregoriano, ad esempio dal famoso 1/1/1970 (inizio del tempo UNIX ...)
  • Re: FUNZIONE GIORNO

    oregon ha scritto:


    Considerando quella come data 0 del mio sistema e sapendo che giorno era. In ogni caso, si può sempre calcolare a partire da una qualsiasi data conosciuta del gregoriano, ad esempio dal famoso 1/1/1970 (inizio del tempo UNIX ...)
    Non ll'ho capita!

    Hai spostato il problema dal 15/10/1582 al 1/1/1970?

    Non e' che il 1/1/1970 e' l'inizio dell'Universo, prima non c'era nulla, e dopo la luce ...

    La domanda rimane: come pensi di farlo?

    Anche quelli che hanno implementato le librerie si sono posti questa domanda ...
  • Re: FUNZIONE GIORNO

    Fornisco come assunto per il programma che

    1) i giorni precedenti al 15/10/1582 non possono essere calcolati (non esisteva il gregoriano)

    2) che il primo giorno del mio "tempo" è il 15/10/1582

    3) che quel giorno era venerdì

    P.S. Per essere più chiari, si possono calcolare i giorni tra due date gregoriane, tenendo conto di tutto. UNIX calcola i secondi tra una data e il tempo 0 (ovvero 1/1/1970), ma è uguale.

    P.P.S. Ci avevi già resi edotti della tua esperienza con i calendari e con i Maya in https://www.iprogrammatori.it/forum-programmazione/cplusplus/differenza-tra-date-t19473.html
  • Re: FUNZIONE GIORNO

    Non me lo ricordavo ... Sara' la vecchiaia ...

    Stai dedicando un sacco di tempo a trovare delle scappatoie alla domanda fondamentale:

    come fai a fare il calcolo?

    Descrivi un algoritmo!

    Fino ad ora non hai fornito informazioni sufficienti per implementare alcun che'!

    ....
  • Re: FUNZIONE GIORNO

    Perché dovremmo lasciar perdere una discussione così interessante?

    Dimmi tu ... quale algoritmo segui per il punto

    1) calcoli quanti giorni sono passati tra oggi ed il 1 gennaio dell'anno 0 (zero)

    del tuo ragionamento?

    Lo stesso è il mio solamente che il numero di giorni è rispetto al 15/10/1582

    Il resto è uguale a quello che dici tu.
  • Re: FUNZIONE GIORNO

    Continui bellamente a svicolare, astutone!
  • Re: FUNZIONE GIORNO

    Non svicolo ... sei tu che non hai le idee chiare sul tuo algoritmo ...
Devi accedere o registrarti per scrivere nel forum
21 risposte