![]() |
Mòdul
7
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
Pràctica
d'ampliació ![]() ![]() |
Obtenció del dia de la setmana d'una data determinada
Amb aquesta pràctica que completa les dues anteriors aprendrem a fer operacions amb dates i hores.
|
||||||
![]() |
Desenvolupament de la pràctica
La funció mktime() converteix l'estructura, el punter de la qual es passa com argument, a una estructura completa amb valors normals. A més, aquesta funció torna un valor long int corresponent a la data i hora amb el mateix tipus que el valor de retorn de la funció time(). Els valors dels camps tm_wday i tm_yday de la variable d'estructura original són ignorats, tots els altres camps són obligatoris i els valors d'aquests altres camps poden ser de valor superior al rang permès, és a dir, és possible que el camp tm_hour sigui igual a 30. En aquest cas, la funció mktime() ajusta els valors dels camps per tal que quedin dintre del rang permès. Aquesta funció és molt útil si es vol fer operacions amb dates i hores. Aquest programa demanarà una data determinada i mostrarà el dia de la setmana corresponent. Definiu un projecte nou anomenat m7p05 i afegiu-li un arxiu de font C/C++ anomenat m7p05.cpp. Escriviu el següent codi:
Explicació del programa En aquest programa es declara una variable d'estructura tm anomenada st a la qual s'assigna inicialment l'hora actual amb l'última d'aquestes quatre línies:
La funció localtime() té com argument un punter a una variable long int i retorna un punter a una estructura tm. Amb la següent línia es demana a l'usuari tres dades: el dia, el mes i l'any, aquestes tres dades seran emmagatzemades en els tres camps corresponents de la variable d'estructura st.
Per tal d'adaptar les dades que necessita aquesta variable es fan els següents ajusts:
El primer dels ajusts és degut a que el camp tm_year emmagatzema l'any començant a comptar en l'any 1900 i el segon dels ajusts és degut a que al primer mes (gener) se l'assigna el número 0 en lloc de l'1. El càlcul del dia de la setmana es fa amb la funció mktime() d'aquesta forma:
Si la funció torna el valor -1 indica que no ha pogut completar l'estructura. Pot ser degut a que hem entrat una data anterior a 1970. |