// timpul.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "time.h" #include "stdio.h" #include "conio.h" #include "iostream.h" #include #include "locale.h" #include "string.h" class cronometru {private: clock_t start; public: cronometru(){start=clock();} ~cronometru() {clock_t stop=clock(); cout<<"\n"<<"Durata executiei="; cout<<(double)(stop-start)/CLOCKS_PER_SEC; cout<<"secunde"<<"\n"<23)) {cout<<"Reintroduceti ora:"; cin>>o;} ora=o; while((m<0)||(m>59)) {cout<<"Reintroduceti minutul:"; cin>>m;} minut=m; while((s<0)||(s>59)) {cout<<"Reintroduceti secunda:"; cin>>s;} secunda=s; } //Constuctor pornind de la timpul furnizat de sistem Timp() {struct tm *ptr; time_t lt; lt=time(NULL); ptr=localtime(<); ora=ptr->tm_hour; minut=ptr->tm_min; secunda=ptr->tm_sec; } friend ostream &operator <<(ostream &,Timp); friend istream &operator>>(istream &, Timp &); friend double operator -(Timp &,Timp &); friend void afisare_tmp3(); //Afisarea in formatul hh/mm/ss void afisare_tmp1() {if (ora<10)cout<<"0"<12) cout<<"\n"<<(ora-12)<<":"; if (minut<10) cout<<"0"<12) cout<<" PM"; } //Avansarea ceasului cu un numar de minute void operator +(int min) { int h=0; if(min>=60){h=min/60;min=min-h*60;} if (minut+min<=59) minut+=min; else {minut=minut+min-60;ora++; } ora+=h; if (ora>=24) ora-=24; } //Dat inapoi ceas cu un numar de minute void operator -(int min) { int h=0; if(min>=60) {h=min/60;min=min-h*60;} if (minut-min>=0) minut-=min; else {minut=minut+60-min;ora--;} ora-=h; if (ora<0) ora+=24; } //Avansarea ceasului cu un numar de ore:minute:secunde Timp operator +(Timp &t1) { secunda=secunda+t1.secunda; if (secunda>=60) {secunda-=60;minut++;} minut+=t1.minut; if (minut>=60){minut-=60;ora++;}; ora+=t1.ora; if (ora>=24) ora-=24; return *this; } //Dat inapoi ceas cu un numar de ore:minute:secunde Timp operator -(Timp &t1) { secunda=secunda-t1.secunda; if (secunda<0) {secunda+=60;minut--;} minut-=t1.minut; if (minut<0){minut+=60;ora--;} ora-=t1.ora; if (ora<0) ora+=24; return *this; } //Preincrementare cu un minut void operator ++() { minut++; if (minut>=60){minut-=60;ora++;} if (ora>=24) ora-=24;} //Postincrementare cu un minut void operator ++(int) { minut++; if (minut>=60){minut-=60;ora++;} if (ora>=24) ora-=24;} //Predecrementare cu un minut void operator --() { minut--; if (minut<0){minut+=60;ora--;} if (ora<24) ora+=24;} //Postdecrementare cu un minut void operator --(int) { minut--; if (minut<0){minut+=60;ora--;} if (ora<24) ora+=24;} }; //Supraincarcarea operatorului << pt operatii de iesire Timp ostream &operator <<(ostream &iesire,Timp t) {iesire<> pt operatii de intrare Timp istream &operator>>(istream &intrare, Timp &t) {cout<<"ora: ";intrare>>t.ora; cout<<"minut: ";intrare>>t.minut; cout<<"secunda: ";intrare>>t.secunda; return intrare; } //determinarea numarului de minute cuprinse intre doua momente double operator -(Timp &t1,Timp &t2) { int a,b,c; a=t1.ora*3600+t1.minut*60+t1.secunda; b=t2.ora*3600+t2.minut*60+t2.secunda; c=(a-b)/60; return c; }; struct fus {int decalaj; char *nume;}; //incarcarea unui vector cu numele si declajul fuselor orare void fuse(fus f[45]) { f[0].decalaj=-720;f[0].nume="Eniwitok,Kwajalein"; f[1].decalaj=-660;f[1].nume="Midway Island, Samoa"; f[2].decalaj=-600;f[2].nume="Hawaii"; f[3].decalaj=-540;f[3].nume="Alaska"; f[4].decalaj=-480;f[4].nume="Pacific Time(US&Canada),Tijuana"; f[5].decalaj=-420;f[5].nume="Arizona,Mountain Time(US&Canada)"; f[6].decalaj=-360;f[6].nume="Central Time(US&Canada),Mexico City,Tegucigalpa,Saskatchewan"; f[7].decalaj=-300;f[7].nume="Bogota,Lima,Quito,Eastern Time(US&Canada),Indiana(East)"; f[8].decalaj=-240;f[8].nume="Atlantic Time(Canada),Caracas,La Paz,Santiago" ; f[9].decalaj=-210;f[9].nume="New Found Land"; f[10].decalaj=-180;f[10].nume="Brasilia,Buenos Aires,Georgetown"; f[11].decalaj=-120;f[11].nume="Mid Atlantic"; f[12].decalaj=-60;f[12].nume="Azores,Cape Verde Is."; f[13].decalaj=0;f[13].nume="Greenwich Mean time: Dublin,Edinburgh,Lisbon,London"; f[14].decalaj=60;f[14].nume="Amsterdam,Berlin,Rome,Stockholm,Vienna"; f[15].decalaj=60;f[15].nume="Belgrad,Bratislava,Budapest,Prague"; f[16].decalaj=60;f[16].nume="Brusseles,Copenhagen,Madrid,Paris"; f[17].decalaj=60;f[17].nume="Sarajevo,Skopje,Sofia,Zagreb"; f[17].decalaj=120;f[17].nume="Athens,Istanbul,Minsk"; f[18].decalaj=120;f[18].nume="Bucharest"; f[19].decalaj=120;f[19].nume="Cairo"; f[20].decalaj=120;f[20].nume="Harare,Pretoria"; f[21].decalaj=120;f[21].nume="Helsinki,Riga,Talin"; f[22].decalaj=120;f[22].nume="Jerusalem"; f[23].decalaj=180;f[23].nume="Bagdhad,Kuwait"; f[24].decalaj=180;f[24].nume="Moscow,St.Petersburg"; f[25].decalaj=180;f[25].nume="Nairobi"; f[26].decalaj=210;f[26].nume="Tehran"; f[27].decalaj=240;f[27].nume="Abu Dhabi,Muscat"; f[28].decalaj=240;f[28].nume="Baku,Tbilisi"; f[29].decalaj=270;f[29].nume="Kabul"; f[30].decalaj=300;f[30].nume="Islamabad"; f[31].decalaj=330;f[31].nume="Bombay,Calcutta,Madras,New Delhi"; f[32].decalaj=360;f[32].nume="Astona,Almaty,Dhaka,Colombo"; f[33].decalaj=420;f[33].nume="Bangkok,Jakarta"; f[34].decalaj=480;f[34].nume="Beijing,Hong Kong"; f[35].decalaj=480;f[35].nume="Perth"; f[36].decalaj=480;f[36].nume="Singapore,Taipei"; f[37].decalaj=540;f[37].nume="Osaka,Tokio,Seoul"; f[38].decalaj=570;f[38].nume="Adelaide,Darwin"; f[39].decalaj=600;f[39].nume="Brisbane,Canbera,Melbourne,Sidney"; f[40].decalaj=600;f[40].nume="Vladivostock"; f[41].decalaj=660;f[41].nume="Magadan,Solomon Is.,New Caledonia"; f[42].decalaj=720;f[42].nume="Wellington,Fiji,Marshall Island"; } //Afisarea timpului din principalele orase ale lumii void afisare_tmp3(char *oras) {fus f[45]; int a,b,i; char *rez; fuse(f); struct tm *ptr; time_t lt; lt=time(NULL); ptr=gmtime(<); i=0;rez=NULL; while ((i<43)&&(rez==NULL)) {rez=strstr(f[i].nume,oras); i++;} Timp t(ptr->tm_hour,ptr->tm_min,ptr->tm_sec); if(rez!=NULL){a=f[i-1].decalaj;b=-a; if (a>0) t+a; else if(a<0) t-b; t.afisare_tmp2();cout<<" "<>min; t1+min;t1.afisare_tmp2(); cout<<"\n"<<"Dat inapoi ceas cu un numar de minute: ";cin>>min1; t1-min1;t1.afisare_tmp2(); cout<<"\n"<<"Avansare ceas c un nr de ore:min:sec "; cin>>t; (t1+t).afisare_tmp1(); cout<<"\n"<<"Orasul pentru care doriti sa aflati ora: "; cin>>(oras); afisare_tmp3(oras); cout<<"\n"<<"Decalajul dintre"<<" "<<"orasul:"; cin>>oras1; cout<<" si orasul: "; cin>>oras2; cout<<" este de:"; if (decalaj(oras1,oras2)==-1) cout<<"\n"<<"Ati introdus gresit orasele!"; else if (decalaj(oras1,oras2)<0) cout<<(-decalaj(oras1,oras2))<<" minute"; else cout<