Дата некоторого дня определяется тремя натуральными числами: g (год), m (порядковый номер месяца) и n (число). Определить, какая дата будет через N дней (не анализировать год не «високосность»). Вывести результат в формате dd/mm/yyyy.
Примечание: библиотеками дата/времени не пользоваться
C/C++
Решить задачу по c++
#include <iostream>
using namespace std;
int days_of_month[] =
{
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
void print_data(const int g, const int m, const int n)
{
if(n < 10) cout << '0';
cout << n << '.';
if(m < 10) cout << '0';
cout << m << '.';
if(g < 1000) cout << '0';
if(g < 100) cout << '0';
if(g < 10) cout << '0';
cout << g << endl;
}
int main()
{
int g,m,n,N;
do
{
cout << "Введите год: ";
cin >> g;
if(g < 1 || g > 9999) cout << "Год должен быть не менее 1 и не более 9999." << endl;
} while(g < 1 || g > 9999);
do
{
cout << "Введите месяц: ";
cin >> m;
if(m < 1 || m > 12) cout << "Месяц должен быть от 1 до 12." << endl;
} while(m < 1 || m > 12);
do
{
cout << "Введите число: ";
cin >> n;
if(n < 1 || n > days_of_month[m-1])
cout << "Указано неверное число. Повторите попытку." << endl;
} while(n < 1 || n > days_of_month[m-1]);
do
{
cout << "Введите число дней, чтобы определить новую дату: ";
cin >> N;
if(N <= 0) cout << "Число дней должно быть больше нуля." << endl;
} while(N <= 0);
while(N > 0)
{
if(n + N <= days_of_month[m-1])
{
n += N;
N = 0;
}
else
{
if(N >= 365)
{
g++;
N -= 365;
}
else
{
if(m < 12)
{
N -= days_of_month[m-1];
m++;
}
else
{
g++;
m = 0;
N -= 31;
}
}
}
}
print_data(g, m, n);
return 0;
}
using namespace std;
int days_of_month[] =
{
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
void print_data(const int g, const int m, const int n)
{
if(n < 10) cout << '0';
cout << n << '.';
if(m < 10) cout << '0';
cout << m << '.';
if(g < 1000) cout << '0';
if(g < 100) cout << '0';
if(g < 10) cout << '0';
cout << g << endl;
}
int main()
{
int g,m,n,N;
do
{
cout << "Введите год: ";
cin >> g;
if(g < 1 || g > 9999) cout << "Год должен быть не менее 1 и не более 9999." << endl;
} while(g < 1 || g > 9999);
do
{
cout << "Введите месяц: ";
cin >> m;
if(m < 1 || m > 12) cout << "Месяц должен быть от 1 до 12." << endl;
} while(m < 1 || m > 12);
do
{
cout << "Введите число: ";
cin >> n;
if(n < 1 || n > days_of_month[m-1])
cout << "Указано неверное число. Повторите попытку." << endl;
} while(n < 1 || n > days_of_month[m-1]);
do
{
cout << "Введите число дней, чтобы определить новую дату: ";
cin >> N;
if(N <= 0) cout << "Число дней должно быть больше нуля." << endl;
} while(N <= 0);
while(N > 0)
{
if(n + N <= days_of_month[m-1])
{
n += N;
N = 0;
}
else
{
if(N >= 365)
{
g++;
N -= 365;
}
else
{
if(m < 12)
{
N -= days_of_month[m-1];
m++;
}
else
{
g++;
m = 0;
N -= 31;
}
}
}
}
print_data(g, m, n);
return 0;
}
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int y, m, d, max_day, n;
bool check_date = false;
int max_days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
while (!check_date)
{
check_date = true;
max_day = 0;
cout << "Введите дату d m yyyy: " ;
cin >> d >> m >>y;
if (m > 12 || m < 1 || d < 1 || d > 31)
{
cout << "\nНеверная дата. \n";
check_date = false;
continue;
}
max_day = max_days[m - 1];
if (d > max_day)
{
cout << "\nНеверная дата. \n";
check_date = false;
continue;
}
}
cout << "\nВведите количество прошедших дней: ";
cin >> n;
for (int i = 0; i < n ; i++)
{
d++;
if (d == max_day + 1)
{
d = 1;
m++;
if (m == 13)
{
m = 1;
y++;
}
max_day = max_days[m - 1];
}
}
string zeroForDay = "";
string zeroForMouth = "";
if (d < 10) zeroForDay = "0";
if (m < 10) zeroForMouth = "0";
cout << zeroForDay << d << "/" << zeroForMouth << m << "/" << y;
system("PAUSE");
return 0;
}
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int y, m, d, max_day, n;
bool check_date = false;
int max_days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
while (!check_date)
{
check_date = true;
max_day = 0;
cout << "Введите дату d m yyyy: " ;
cin >> d >> m >>y;
if (m > 12 || m < 1 || d < 1 || d > 31)
{
cout << "\nНеверная дата. \n";
check_date = false;
continue;
}
max_day = max_days[m - 1];
if (d > max_day)
{
cout << "\nНеверная дата. \n";
check_date = false;
continue;
}
}
cout << "\nВведите количество прошедших дней: ";
cin >> n;
for (int i = 0; i < n ; i++)
{
d++;
if (d == max_day + 1)
{
d = 1;
m++;
if (m == 13)
{
m = 1;
y++;
}
max_day = max_days[m - 1];
}
}
string zeroForDay = "";
string zeroForMouth = "";
if (d < 10) zeroForDay = "0";
if (m < 10) zeroForMouth = "0";
cout << zeroForDay << d << "/" << zeroForMouth << m << "/" << y;
system("PAUSE");
return 0;
}
Похожие вопросы
- Помогите решить задачу по C++!
- Нужно срочно решить задачу на C++
- Помогите решить задачу на C++
- Помогите решить задачу на C++.
- Помогите решить задачу на c++
- Помогите пожалуйста решить задачу на C ИЛИ C#
- Решите задачу на C++
- Помогите решить задачу на C++
- Помогите решить задачу на C++
- Помогите решить задачу на C++
#include