
C++ Как сделать, чтобы находило еще предыдущий день?? #include "stdafx.h" #include using
namespace std; int main() { int d, m, y, i; int max[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; setlocale(LC_ALL, "Russian"); cout << "Введите день(число)"; cin >> d; cout << "Введите месяц(число)"; cin >> m; cout << "Введите год(число)"; cin >> y; if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) max[1]++; for (i = 0; i < 12; i++) if (i + 1 == m & d == max[i]) { d = 1; m++; break; } if (i == 12) d++; if (m == 13) { m = 1; y++; } cout << d << " " << m << " " << y; return 0; }

Ответы на вопрос

Вот программа без цикла.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int d, m, y, i;
int max[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
setlocale(0, "");
cout << "Введите день(число)";
cin >> d;
cout << "Введите месяц(число)";
cin >> m;
cout << "Введите год(число)";
cin >> y;
if ( (y % 4 == 0 && y % 100 != 0) || y % 400 == 0) //Проверка что год високосный
max[1]++;
if( d == max[m-1])
{
d = 1;
m++;
}
else
d++;
if (m == 13)
{
m = 1;
y++;
}
cout << d << " " << m << " " << y;
cin >> d;//Ожидание ввода, чтобы посмотреть результаты пработы программы
return 0;
}
Эта программа определяет следующий день от текущего.
А вот программа, которая определяет предыдущий день.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int d, m, y, i;
int max[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
setlocale(0, "");
cout << "Введите день(число)";
cin >> d;
cout << "Введите месяц(число)";
cin >> m;
cout << "Введите год(число)";
cin >> y;
if ( (y % 4 == 0 && y % 100 != 0) || y % 400 == 0) //Проверка что год високосный
max[1]++;
if( d == 1)
{
if (m == 1)
{
m = 12;
y--;
}
else
m--;
d = max[m - 1];
}
else
d--;
cout << d << " " << m << " " << y;
cin >> d;//Ожидание ввода, чтобы посмотреть результаты пработы программы
return 0;
}



Чтобы учитывать предыдущий день, вам нужно внести несколько изменений в ваш код:
- Добавить проверку на то, что день не является первым днем месяца (d != 1). Если день не равен 1, то просто уменьшаем значение d на 1.
- Если день является первым днем месяца (d == 1), то нужно уменьшить месяц на 1 и обновить значение d на последний день предыдущего месяца. Если месяц был январем (m == 1), то также нужно уменьшить год на 1 и установить месяц в декабрь (m = 12).
Ниже приведен исправленный код:
cpp#include "stdafx.h"
#include <iostream>
using namespace std;
int main() {
int d, m, y, i;
int max[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
setlocale(LC_ALL, "Russian");
cout << "Введите день(число)";
cin >> d;
cout << "Введите месяц(число)";
cin >> m;
cout << "Введите год(число)";
cin >> y;
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
max[1]++;
if (d != 1) {
d--;
}
else {
m--;
if (m == 0) {
m = 12;
y--;
}
d = max[m - 1];
}
cout << d << " " << m << " " << y;
return 0;
}
Теперь код учитывает предыдущий день и правильно обновляет дату, если введен день первого числа месяца.


Похожие вопросы
Топ вопросов за вчера в категории Информатика








Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili