online: 7; azi: 725; total: 52731 Manual clasa a x a - Implementarea structurilor de date - Inregistrarea

Manual clasa a X a

Implementarea structurilor de date

Inregistrarea

Se citeşte de la tastatură o dată calendaristică exprimată în zi, lună si an. Se mai citeşte şi un număr n. Să se afişeze data care va fi peste n zile. ( Indicaţie : se va folosi un vector cu 12 elemente în care se va memora în fiecare element numărul de zile din luna corespunzătoare poziţiei din vector, prima lună fiind ianuarie.)
entru a rezolva această problemă, putem utiliza un vector de 12 elemente în care să stocăm numărul de zile ale fiecărei luni. Mai întâi, vom citi de la tastatură data calendaristică și numărul de zile pe care dorim să îl adăugăm. Apoi, vom verifica dacă anul este bisect sau nu pentru a determina numărul de zile din luna februarie. În final, vom aduna numărul de zile dorit la data citită și vom ajusta ziua, luna și anul în funcție de acesta.
# include < iostream >
using namespace std ;
struct Data {
int zi;
int luna;
int an;
};
int numarZileLuna ( int luna, int an) {
int zileLuna [] = { 31 , 28 + (an % 4 == 0 && (an % 100 != 0 || an % 400 == 0 )), 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 };
return zileLuna [luna - 1 ];
}
void adaugaZile (Data& d, int zile) {
while (zile > 0 ) {
int zileLuna = numarZileLuna ( d.luna , d.an) - d.zi + 1 ;
if ( zileLuna > zile) {
d.zi += zile;
break ;
}
zile -= zileLuna ;
d.zi = 1 ;
if ( d.luna == 12 ) {
d.luna = 1 ;
d.an++;
} else {
d.luna ++;
}
}
}
int main () {
Data d;
int zile;
cout << " Introduceti data (zi luna an): " ;
cin >> d.zi >> d.luna >> d.an;
cout << " Introduceti numarul de zile pe care doriti sa le adaugati : " ;
cin >> zile;
adaugaZile (d, zile);
cout << "Data dupa adaugarea a " << zile << " zile este: " << d.zi << " " << d.luna << " " << d.an << endl ;
return 0 ;
}

În acest exemplu, structura Data este folosită pentru a memora o dată calendaristică. Funcția numarZileLuna primește o lună și un an și returnează numărul de zile din luna respectivă. Funcția adaugaZile primește o referință la o dată și un număr de zile și ajustează ziua, luna și anul în funcție de numărul de zile. Funcția main citește data și numărul de zile de la tastatură, adaugă zilele la data citită și afișează data rezultată.