|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.06.2020, 00:22 | #1 |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
язык C проверка даты.
Доброго времени суток!
Вкратце - прога должна считать промежуток времени между двумя введенными датами. Проблема еще на стадии проверки корректности даты. Работаю в среде codeBlocks. Отлаживал прогу ее де средствами + печать с помощью printf где надо проверить определенное значение. * дата в формате dd/mm/yyyy. первым делом функция isValidDate проверяет значение yyyy (находиться ли в пределах..) - тут то и проблема. По не понятным мне причинам значение параметра/переменной года yyyy спокойно проходит с любым введенным значением Код:
|
01.06.2020, 01:24 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
1) Некоторые комментарии сломались.
2) В isValidDate самый последний return должен быть 0. 3) Стоит добавить в scanf слеши, если дата вводится с ними. 4) Количество дней в месяце нужно проверять на "меньше или равно", а не только на неравенство. 5) Проверка на високосный год работает неверно (например, 2020 год).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
01.06.2020, 01:30 | #3 | ||||
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
Извиняюсь это иврит ))
Цитата:
Цитата:
Цитата:
Цитата:
*спс за быстрый и четкий ответ п.с например если ввести 12 12 65 (а год должен быть в рамках от 1800 - 2200) то эти данные спокойно пропускаються и сразу же идет прыжок к return 1; Последний раз редактировалось JOFRIF; 01.06.2020 в 01:33. Причина: добавка |
||||
01.06.2020, 01:42 | #4 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Извиняюсь, не знал, как выглядит иврит.
Хорошо, тогда не хватает парочки return внутри ифов и по веткам else. Может быть лучше "вывернуть" логику? Код:
Код:
Цитата:
Код:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 01.06.2020 в 01:47. |
|
02.06.2020, 23:24 | #5 |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
Поправил все что вы сказали... но проверка на високосный год не работает корректно.
например я ввел 29/02/2000 (это високосный год т.е return 1, а пофакту идет возврат 0) п.с пробовал оба варианта. Код:
|
02.06.2020, 23:40 | #6 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,551
|
Можно чуть упростить:
Код:
E-Mail: arigato.freelance@gmail.com
|
02.06.2020, 23:55 | #7 |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
Arigato, Спасибо действительно можно укоротить, но проблема в самой проверке.
Код:
|
03.06.2020, 00:00 | #8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
В коде из 5 поста isLeapYear вызывается с 3 аргументами, а сама функция объявлена с одним.
Предлагаю вынести ввод в отдельную функцию. Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
03.06.2020, 00:05 | #9 |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
BDA, ЁЁЁЁЁЁЁЁЁ А слона то я и незаметил )) странно что компилятор молчит об этом..
спасибо за ответы, закончю функцию calc_between_dates выложу здесь может кому пригодиться. |
03.06.2020, 00:39 | #10 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,551
|
Неверно... проверили...
E-Mail: arigato.freelance@gmail.com
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
проверка даты (Java) | zhenya.ya | Помощь студентам | 0 | 04.12.2011 19:28 |
Проверка даты | daniil123 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 17.11.2011 22:14 |
Проверка корректности даты | Oleg Romanchuk | Общие вопросы Delphi | 3 | 09.07.2011 07:13 |
Проверка даты на сервере!!! | $T@LKER | Работа с сетью в Delphi | 0 | 11.05.2010 17:03 |
Проверка даты | Михаил Юрьевич | Общие вопросы Delphi | 11 | 24.01.2010 20:39 |