Ввести дату в формате дд.мм.гггг, проверить корректность ввода и напечатать следующую дату - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите с кодом для данной задачи, пож-та. Написанный мною код, до конца не стал, ибо уже на стадии фильтра, он дает мне писать любую дату, кроме тех, где день больше 31. If while for и пр. мы пока не проходили.
Листинг программы
  1. int main() {
  2. system("chcp 1251 > Nul");
  3. int day,month,year;
  4. printf("Введите дату в формате дд:мм:гггг: ");
  5. scanf_s("%02d:%02d:%04d", &day, &month, &year) && month == 2 ? day<=29 : month ==1, month == 4, month == 6, month == 9 ? day<=30 : day<=31
  6. && day>0 && day<=31 && month>0 && month<=12 && year>0 && year<9999 &&
  7. printf ("Следующий день: %02d:%02d:%04d\n", day+1, month+1, year+1)
  8. || printf("Данные некоректны\n");
  9.  
  10. return 0;
так уж и быть напишу весь код, потому что он не работает) значение дня и месяца почти всегда меняется неверно:
Листинг программы
  1. int main() {
  2. system("chcp 1251 > Nul");
  3. int day,month,year;
  4. printf("Введите дату в формате дд:мм:гггг: ");
  5. scanf_s("%02d:%02d:%04d", &day, &month, &year)&& day>0 && day<=31 && month>0 && month<=12 && year>0 && year<9999
  6. //&& month == 2 ? day<=29 : month ==1 || month == 4 || month == 6 || month == 9 ? day<=30 : day<=31
  7. && printf ("Следующий день: %02d:%02d:%04d\n",
  8. day == 28 && month ==2 ? day=1 : month == 1 || month == 4 || month == 6 || month == 9 || month == 11 && day == 30 ? day = 1 :
  9. month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12 && day == 31 ? day = 1 : ++day,
  10. month ==2 && day == 28 ? ++month : month ==1 || month == 4 || month == 6 || month == 9 || month == 11 && day ==30 ? ++month :
  11. month == 3 || month == 5 || month == 7 || month == 8 || month == 10 && day == 31 ? ++month :
  12. day == 31 && month == 12 ? month = 1 : month,
  13. day==31 && month==12 ? ++year : year)
  14. || printf("Данные некоректны\n");
  15.  
  16. return 0;
  17. }

Решение задачи: «Ввести дату в формате дд.мм.гггг, проверить корректность ввода и напечатать следующую дату»

textual
Листинг программы
  1. ~/prog/c $ ./nextdate 01.01.2014 31.01.2014 28.02.2014 31.12.2014
  2. 02.01.2014
  3. 01.02.2014
  4. 01.03.2014
  5. 01.01.2015
  6. ~/prog/c $ ./nextdate 32.01.2014 29.02.2014 29.02.2008 01.13.2014
  7. wrong date: 32.01.2014
  8. wrong date: 29.02.2014
  9. 01.03.2008
  10. wrong date: 01.13.2014
  11. ~/prog/c $

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы