Задачі про дати
0) Визначити, чи рік, введений з клавіатури є високосним.
Рік високосний, якщо він ділиться на 4, і при цьому не ділиться на 100 або якщо ділиться на 400.
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Ukrainian");
int r;
cout << "Введіть рік: ";
cin >> r;
bool l;
if ((r % 4==0) && (r % 100 !=0) || ( r % 400==0))
l=true;
else
l=false;
if (l)
cout << "Рік високосний" << endl;
else
cout << "Рік високосний" << endl;
system("pause");
return 0;
}
1) Чи коректна дата, введена з клавіатури?
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Ukrainian");
int d,m,r;
cout << "Введіть число: ";
cin >> d;
cout << "Введіть місяць: ";
cin >> m;
cout << "Введіть рік: ";
cin >> r;
// визначаємо, чи рік є високосний: якщо він ділиться на 4, або не ділиться на 100 або ділиться на 400
int l;
if ((r % 4==0) && (r % 100 !=0) || ( r % 400==0))
l=1;
else
l=0;
bool correct=true;
// перевіряємо місяці на 31 день
if (((m==1) || (m==3) || (m==5) || (m==7) || (m==8) || (m==10) || (m==12)) && (d>31))
correct=false;
// перевіряємо місяці на 30 днів
if (((m==4) || (m==6) || (m==9) || (m==11)) && (d>30))
correct=false;
// перевіряємо лютий
if ((m==2) && (l==1) && (d>29))
correct=false;
if ((m==2) && (l==0) && (d>28))
correct=false;
// виведення результату
if (correct)
cout << "Дата коректна" << endl;
else
cout << "Дата некоректна" << endl;
system("pause");
return 0;
}
Завдання: доповнити програму перевіркою введення неіснуючого місяця, а також від'ємних чисел)
2) Визначити завтрашню дату.
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Ukrainian");//відображення українських букв, "і" не працює
int d,m,r; // оголошення змінних.
cout << "Введіть число: ";
cin >> d;
cout << "Введіть місяць: ";
cin >> m;
cout << "Введіть рік: ";
cin >> r;
// визначаємо, чи рік є високосний: якщо він ділиться на 4, або не ділиться на 100 або ділиться на 400
int l;
if ((r % 4==0) && (r % 100 !=0) || ( r % 400==0))
l=1;
else
l=0;
bool EndOfMonth=false;
// перевіряємо місяці на 31 день, крім грудня
if (((m==1) || (m==3) || (m==5) || (m==7) || (m==8) || (m==10)) && (d==31))
EndOfMonth =true;
// перевіряємо місяці на 30 днів
if (((m==4) || (m==6) || (m==9) || (m==11)) && (d==30))
EndOfMonth =true;
// перевіряємо лютий
if ((m==2) && (l==1) && (d==29))
EndOfMonth =true;
if ((m==2) && (l==0) && (d==28))
EndOfMonth =true;
// перевіряємо грудень
if ((m==12) && (d==31))
{
d=1;
m=1;
r++;
}
else if (EndOfMonth)
{
d=1;
m++;
}
else
d++;
// виведення результату
cout << "Завтра буде " << d << "." << m << "." << r << endl;
system("pause");
return 0;
}
Завдання: визначити вчорашню дату.
3) Визначити, скільки днів пройшло від початку року.
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Ukrainian");//відображення українських букв, "і" не працює
int d,m,r; // оголошення змінних.
cout << "Введіть число: ";
cin >> d;
cout << "Введіть місяць: ";
cin >> m;
cout << "Введіть рік: ";
cin >> r;
// визначаємо, чи рік є високосний: якщо він ділиться на 4, або не ділиться на 100 або ділиться на 400
int l;
if ((r % 4==0) && (r % 100 !=0) || ( r % 400==0))
l=1;
else
l=0;
// залежно від того, який місяць введено, додаємо дні, що пройшли від початку року
int k;
switch (m)
{
case 1:
k=d;
break;
case 2:
k=d+31;
break;
case 3:
k=d+31+28+l;
break;
case 4:
k=d+31+28+l+31;
break;
case 5:
k=d+31+28+l+31+30;
break;
case 6:
k=d+31+28+l+31+30+31;
break;
case 7:
k=d+31+28+l+31+30+31+30;
break;
case 8:
k=d+31+28+l+31+30+31+31+31;
break;
case 9:
k=d+31+28+l+31+30+31+31+30+31;
break;
case 10:
k=d+31+28+l+31+30+31+31+30+31+30;
break;
case 11:
k=d+31+28+l+31+30+31+31+30+31+30+31;
break;
case 12:
k=d+31+28+l+31+30+31+31+30+31+30+31+30;
break;
}
// виведення результату
cout << "Пройшло " << k << "днів" << endl;
system("pause");
return 0;
}
Завдання: визначити, скільки днів залишилось до кінця року
4) Визначити скільки днів пройшло між вказаними датами.
Біоритми