| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Ввод даты в список |
| Автор: ALI46 5.5.2008, 12:12 | ||
| В текстовом файле в табличном виде хранится информация о количестве и ценах товаров на складе. Добавить в таблицу графу с датами проводимых проверок, а также графу с общими суммами по каждому виду товара. я написал так:
но препода не устроило, то что дата вводится в виде строки и нет никакой проверки является ли данная строка датой(т.е. можно ввести 50.40.08 и т.п. и программа ругаться не будет) Как реализовать проверку, что у нас вводится - дата или абракадабра? |
| Автор: bsa 5.5.2008, 12:18 | ||
ALI46, распарси ее как-нибудь так:
|
| Автор: Rififi 5.5.2008, 12:30 |
| ALI46, например можно передать полученные значения функции формирования времени в виде текстовой строки (_tcsftime), или применить регулярное выражение. |
| Автор: ALI46 5.5.2008, 13:34 | ||||
а как это в поле dat запихнуть? |
| Автор: bsa 5.5.2008, 13:51 |
| ALI46, а тебе обязательно, чтобы поле dat было строковым (с ним сложней работать в дальнейшем, имхо)? тебе никто не мешает вводить дату в виде строки и применять к ней sscanf, вместо scanf для ввода и разборки. |
| Автор: Alek86 5.5.2008, 13:53 |
| лучше все же используй strftime а для даты можно или свою структуру написать, или стандартную использовать |
| Автор: ALI46 5.5.2008, 14:45 | ||
вот так что ли присвоить?
и как дату саму вводить теперь? чёто я не понял... |
| Автор: Alek86 5.5.2008, 14:49 |
| http://msdn.microsoft.com/en-us/library/fe06s4ak.aspx если по-ангельски не очень читаешь, то все равно паопытайся разобраться. что непонятно - спрашуй |
| Автор: ALI46 5.5.2008, 15:37 | ||
непонятно, как дату ввести ручками с клавиатуры чтобы присвоить его полю в структуре
как я понял этот код мне запишет в поле dat дату в формате день.месяц.год. но каким должен быть последний параметр я не понимаю |
| Автор: JackYF 5.5.2008, 15:49 |
В документации посмотри. |
| Автор: Alek86 5.5.2008, 15:52 | ||
| ошибся - strftime из tm в строку преобразует, а не наоборот... тогда придется
|
| Автор: ALI46 5.5.2008, 16:40 | ||
| Всем большое спасибо!! вот код
|
| Автор: Alek86 5.5.2008, 16:43 |
| нуну не все так просто введи-ка "31.02.01" в дату |
| Автор: ALI46 5.5.2008, 16:54 |
| у нас в феврале 31 день |
| Автор: ALI46 5.5.2008, 19:33 | ||
исправил код теперь проверяет сответствие месяц-количество дней
вот только снова возник очередной вопрос, как заставить выводить в дате недостающие нули для дней, месяцев, годов меньше 10 ? а то вводишь "02.03.04" а в файле выдаёт "2.3.4" |
| Автор: bsa 5.5.2008, 22:24 |
| ALI46, ты документацию на функции по религиозным мотивам не читаешь? Даю прямую наводку - читай про спецификаторы функции printf. |
| Автор: ALI46 5.5.2008, 22:44 | ||
| bsa, читаю, и религиозные мотивы тут не при чём, вот я так и подумал что в printf есть то что мне нужно, но видимо плохо искал, спасибо, что подсказал! код (надеюсь что окончательный
|
| Автор: ALI46 6.5.2008, 15:25 |
| сегодня показал преподу прогу, ему не понравилось что нет проверки на високосность года(ну это ещё ладно), но главная претензия меня окончательно добила - "вы программируете на C++, а не на C поэтому чтоб никаких printf() scanf() fprintf() fscanf() и т.п. не было!" как реализовать ввод/вывод даты через потоки? |
| Автор: Alek86 6.5.2008, 15:48 |
| молодец препод!!! подключай iostream, читай доки |
| Автор: ALI46 6.5.2008, 19:07 |
Alek86, ага молодец... fstream использую вот тока дату в формате dd.mm.yy ввести не получается... |
| Автор: ALI46 6.5.2008, 21:51 | ||
написал с потоками, но как описать ввод даты не знаю((((((
|
| Автор: bsa 6.5.2008, 22:28 | ||
ALI46, ты не поверишь!
|
| Автор: ALI46 6.5.2008, 23:08 | ||
| bsa, действительно бы не поверил))) спасибо большое всем кто помогал!!! теперь високосные тоже учитывает
|