Вопрос задан 30.07.2023 в 07:31. Предмет Информатика. Спрашивает Красавин Иван.

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; }
0 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;

}




0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Чтобы учитывать предыдущий день, вам нужно внести несколько изменений в ваш код:

  1. Добавить проверку на то, что день не является первым днем месяца (d != 1). Если день не равен 1, то просто уменьшаем значение d на 1.
  2. Если день является первым днем месяца (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; }

Теперь код учитывает предыдущий день и правильно обновляет дату, если введен день первого числа месяца.

0 0

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос