Условие
Високосни години са всички години кратни на 4 с изключения столетията, но без столетия кратни на 400, т.е. 1900 не е високосна, но 1600 и 2000 са високосни.
Съставете програма, която по въведен ден, месец, година отпечатва следващата дата.
Използвайте съставно логическо условие.
Входни данни: естествени числа за ден, месец, година.
Пример: 28, 2, 2000 Изход: 1,3,2000
Решение
#include <iostream>
using namespace std;
int main()
{int kr_den,den,mesec,godina;//deklarirane na promenliwi
cout<<"Kakto znaete wisokosni godini sa wsichki godini kratni na 4 s \n";
cout<<"izklucheniq stoletiqta, bez stoletiq kratni na 400, \n";
cout<<"t.e. 1900 ne e wisokosna, no 1600 i 2000 sa wisokosni. \n";
cout<<"Ssystawete programa, koqto po wyweden den, mesec, godina \n";
cout<<"otpechatwa sledwashata data. \n";
cout<<"Whodni danni: estestweni chisla za den, mesec, godina. \n";
cout<<"Primer: 31,12,2000 Ihod 1,1,2001 \n";
cout<<"Wywedete estestweno chislo za den [1..31]: ";cin>>den;
cout<<"Wywedete estestweno chislo za mesec [1..12]: ";cin>>mesec;
cout<<"Wywedete estestweno chislo za godina [1000..3000]: ";cin>>godina;
if (mesec==2) //dali II mesec ima 28 ili 29 dena
{ if(
((godina % 4 == 0) && (godina % 100 != 0)) ||
(godina % 400 == 0)) {kr_den=29;}
//ako godinata se deli na 4, no ne e stoletie ili kratna na 400
else {kr_den=28;}
}//kraj prowerka za fewruari
else if((mesec==4)|| (mesec==6) || (mesec==9) || (mesec==11))
{kr_den=30; } //april,iuni,septemwri, noemwri
else {kr_den=31; }
//kraj prowerka za maksimalen broj dni w meseca
if (den<kr_den) den++;//ako wywedeniq den e<ot maksimalniq broj dni w meseca
else { den=1; //ako e bil posledniq den stawa 1 den ot nowiq mesec
if (mesec<12) mesec++;
else{mesec=1; godina++;} //ako e dekemwri stawa qnuari sledwasha godina
}//kraj tyrsene na sledwasha data
cout<<"Sledwasha data: den: "<<den<<", mesec "<<mesec<<", godina "<<godina<<endl;
system("pause");
return 0; //oswobovdawa zaetite sistemni resursi
} //kraj na programa systawno uslowie - if