T
Tennessee Mud
Здравствуйте,
Срочно требуется помощь - мне дали задание написать код на С (я использую Dev-C++ 4.9.9.2). Программа называется Deadliner (возможно, это даже некий стандартный, сто раз написанный всеми кому не лень код, типа генератора случайных чисел, но искала - не нашла).
Суть в следующем:
Нужно написать программу, которая бы говорила юзеру, сколько дней осталось до того или иного дедлайна. Информация о дедлайнах должна сохраняться в файл "deadlines.txt". При запуске программы она должна отображать, сколько времени осталось до дедлайна, используя следующие правила:
1. Если дедлайн обозначен тем же днем, что текущая дата, то программа должна писать "сегодня"
2. Если дедлайн обозначен днем позже, чем текущая дата, то программа должна писать "завтра"
3. Если дедлайн пропущен - соответственно, должно высвечиваться "пропущен"
Юзер также должен иметь возможность добавлять и удалять дедлайны.
Программа:
Программа должна "понимать" командную строку - аргументы в короткой и длинной форме - в следующем порядке:
[-v]
[
( -a -d DESC -t DATE)|
(-r ID)
(-m ID -t DATE)|
(-h)|
]
Порядок этих опций не строго обязателен. Можно и по-другому сделать - лишь бы работало.
Аргументы:
-h Вывод на печать хелп-текста с именем скрипта, его целью, инструкциями по использованию командмой строки, какие/как использовать аргументы.
-v Вывод на печать вспомогательных слов при дебаге, типа "Parameters ok!", "Filename exist!" и т.п.
-a Добавление дедлайна с описанием DESC, определенного с помощью -d (переключение на дату DATE) и -t (переключение на файл)
-r ID удаление дедлайна с индексом ID
-m ID -t DATE задает дату дедлайна с индексом ID на время DATE, определенное переключением -t
-d DESC задает описание DESC
-t DATE задает дату DATE
Любые другие аргументы командной строки должны выдавать сообщение об ошибке и инструкции по использованию командной строки.
При добавлении нового дедлайна в файл генерируемый индекс ID этого нового дедлайна должен быть уникальным.
Формат:
Как уже упоминалось, программа должна сохранять задания в текстовый файл. Информация о дедлайнах должна сохраняться в следующем формате:
deadlinefile = 0*1000 deadline
deadline = index ";" timestamp ";" description (LF / CRLF)
index = 3*DIGIT
timestamp = year "-" month "-" day
year = 4*DIGIT
month = "01" / "02" / "03" / "04" / "05" / "06" / "07" / "08" / "09" / "10" / "11" / "12"
day = ( ("1"/"2") DIGIT) / ("0"("1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" )) / ("3" ("0"/"1"))
description = 1*95("%d16-58" / "%d60-127")
Один файл содержит 0...1000 строк.
Каждая строка должна содержать полную информацию об одном лишь дедлайне.
Длина строки варьируется от 22 до 128 символов.
Описание задания не должно содержать символа ";".
Подробнее об этом формате (называется ABNF), а также примерах, можно посмотреть тут:
Пример задания:
id (индекс задания): 002
дата создания: 2006 04 10
описание: "убраться в комнате"
-- все это должно трансформироваться в:
002;2006-10-04;убраться в комнате
Когда программа считывает задания из файла, на должна проверять, правильно ли задан формат задания. Если задание записано в неверном формате, программа должна выдавать ошибку (при этом сообщение об ошибке должно содержать номер строки, в которую записано задание неверного формата, и текст этой строки) и возвращать 1. В противном случае, программа должна работать как положено. Программа не должна "ломать" формат ни при каких обстоятельствах.
Заранее огромное спасибо всем, кто сможет помочь. Надеюсь, описание более или менее понятно
Срочно требуется помощь - мне дали задание написать код на С (я использую Dev-C++ 4.9.9.2). Программа называется Deadliner (возможно, это даже некий стандартный, сто раз написанный всеми кому не лень код, типа генератора случайных чисел, но искала - не нашла).
Суть в следующем:
Нужно написать программу, которая бы говорила юзеру, сколько дней осталось до того или иного дедлайна. Информация о дедлайнах должна сохраняться в файл "deadlines.txt". При запуске программы она должна отображать, сколько времени осталось до дедлайна, используя следующие правила:
1. Если дедлайн обозначен тем же днем, что текущая дата, то программа должна писать "сегодня"
2. Если дедлайн обозначен днем позже, чем текущая дата, то программа должна писать "завтра"
3. Если дедлайн пропущен - соответственно, должно высвечиваться "пропущен"
Юзер также должен иметь возможность добавлять и удалять дедлайны.
Программа:
Программа должна "понимать" командную строку - аргументы в короткой и длинной форме - в следующем порядке:
[-v]
[
( -a -d DESC -t DATE)|
(-r ID)
(-m ID -t DATE)|
(-h)|
]
Порядок этих опций не строго обязателен. Можно и по-другому сделать - лишь бы работало.
Аргументы:
-h Вывод на печать хелп-текста с именем скрипта, его целью, инструкциями по использованию командмой строки, какие/как использовать аргументы.
-v Вывод на печать вспомогательных слов при дебаге, типа "Parameters ok!", "Filename exist!" и т.п.
-a Добавление дедлайна с описанием DESC, определенного с помощью -d (переключение на дату DATE) и -t (переключение на файл)
-r ID удаление дедлайна с индексом ID
-m ID -t DATE задает дату дедлайна с индексом ID на время DATE, определенное переключением -t
-d DESC задает описание DESC
-t DATE задает дату DATE
Любые другие аргументы командной строки должны выдавать сообщение об ошибке и инструкции по использованию командной строки.
При добавлении нового дедлайна в файл генерируемый индекс ID этого нового дедлайна должен быть уникальным.
Формат:
Как уже упоминалось, программа должна сохранять задания в текстовый файл. Информация о дедлайнах должна сохраняться в следующем формате:
deadlinefile = 0*1000 deadline
deadline = index ";" timestamp ";" description (LF / CRLF)
index = 3*DIGIT
timestamp = year "-" month "-" day
year = 4*DIGIT
month = "01" / "02" / "03" / "04" / "05" / "06" / "07" / "08" / "09" / "10" / "11" / "12"
day = ( ("1"/"2") DIGIT) / ("0"("1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" )) / ("3" ("0"/"1"))
description = 1*95("%d16-58" / "%d60-127")
Один файл содержит 0...1000 строк.
Каждая строка должна содержать полную информацию об одном лишь дедлайне.
Длина строки варьируется от 22 до 128 символов.
Описание задания не должно содержать символа ";".
Подробнее об этом формате (называется ABNF), а также примерах, можно посмотреть тут:
Ссылка скрыта от гостей
Пример задания:
id (индекс задания): 002
дата создания: 2006 04 10
описание: "убраться в комнате"
-- все это должно трансформироваться в:
002;2006-10-04;убраться в комнате
Когда программа считывает задания из файла, на должна проверять, правильно ли задан формат задания. Если задание записано в неверном формате, программа должна выдавать ошибку (при этом сообщение об ошибке должно содержать номер строки, в которую записано задание неверного формата, и текст этой строки) и возвращать 1. В противном случае, программа должна работать как положено. Программа не должна "ломать" формат ни при каких обстоятельствах.
Заранее огромное спасибо всем, кто сможет помочь. Надеюсь, описание более или менее понятно