Titlul: Problema structuri Cls a 10 a Scris de: Robotin Darian din Decembrie 12, 2012, 18:02:36 Buna , am nevoie de o idee , cum sa fac urmatorul program :
"Se citeste de la tastatura o data calendaristica exprimata in zi , luna si an . Se mai citeste si un numar n. Sa se afiseze data care va fi peste n zile . ( Indicatie: se va folosi un vector cu 12 elemente in are se va memora in fiecare element numarul de zile din luna corespunzatoare pozitiei din vector , prima luna fiind ianuarie. ) " Multumesc , astept idei cat mai repede. Titlul: Răspuns: Problema structuri Cls a 10 a Scris de: Simoiu Robert din Decembrie 12, 2012, 21:21:45 Pai sa presupunem ca ai vectorul v[ i] = cate zile are a i-a luna (ianuarie, februarie ....). Folosind acest vector, problema e simpla. Stim in ce zi, luna si an suntem. Cel mai usor, fara sa te stresezi (nu e prea optim, dar fiindca n-ul e destul de mic cred, nu se simte), faci asa : faci un for de la 1 la n, reprezentand data dupa i zile. Astfel, la pasul i, prima data incrementezi pe zi, si apoi verifici odata daca zi > v[luna] (daca a i-a zi a lunii in care suntem este mai mare decat limita maxima a acelei zile), atunci pe zi il faci 1 si incrementezi luna (pentru ca tu de fapt esti in ziua v[luna] + 1, care nu exista si este de fapt ziua 1 a urmatoarei luni. Mai departe, verifici daca luna este 13 (acelasi principiu, luna 13 nu exista, si atunci ea de fapt este luna 1 a urmatorului an), faci pe luna = 1 si incrementezi an. Si inca ceva, daca cumva este an bisect, adica este multiplu de 4, atunci v[2] (luna februarie) are 29 zile.
Cod: int v[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // vectorul v, incepand de la 1 Titlul: Răspuns: Problema structuri Cls a 10 a Scris de: Robotin Darian din Decembrie 12, 2012, 21:27:20 Eu ma gandeam la ceva de genul acesta .
Citat #include<iostream.h> void main() { struct data {int zi,an,luna; }; data n; int v[12],i,m; cout<<"ziua:";cin>>n.zi; cout<<"luna:";cin>>n.luna; cout<<"anul:";cin>>n.an; for(i=1;i<=12;i++) { cout<<"nr de zile:";cin>>v; }; cout<<"nr citit:";cin>>m; if(m+n.zi>v[n.luna]) {n.zi=n.zi+m-v[n.luna]; if(n.luna==12) {n.luna=1; n.an++;}; else n.luna++; }; else n.zi=n.zi+m; cout<<"ziua"<<n.zi<<"luna"<<n.luna<<"anul"<<n.an;} dar imi da doua erori . daca ma poti ajuta . Titlul: Răspuns: Problema structuri Cls a 10 a Scris de: Simoiu Robert din Decembrie 12, 2012, 21:46:22 Ti-am modificat niste ; inainte de else prost puse si cate ceva, am adaugat faza pt. anul bisect, ar trebuie sa mearga DOAR DACA m este < nr. maxim de zile intr-un an, adica 365. (daca e mai mult, atunci intervine faza cu anul bisect, si n-o sa mearga).
Cod: # include <iostream> |