|  | Mòdul
  7  | Fonaments de
  Programació. Llenguatge C/C++  | 
| Pràctica          |  Resum
  teòric |  Exercicis | 
| 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. |