|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.12.2011, 18:36 | #1 |
Новичок
Джуниор
Регистрация: 16.05.2011
Сообщений: 2
|
Перевод даты в строковый формат
Уважаемые программисты, хотел бы почитать ваши советы по данной программе. Задача такова: Необходимо написать программу, переводящую дату из формата дд.мм.гггг в строковый формат дд. месяц гггг. В принципе написал прогу, но не могу никак осуществить проверку исходных данных. Каким образом наложить ограничения на ввод левых символов и ненужных чисел? Заранее благодарен
#include <iostream> #include <iomanip> #include <conio.h> #include <string.h> #include <stdlib.h> #include <windows.h> using namespace std; void main( void ) { char str[11]; // объявление строки символов setlocale(LC_ALL,"rus"); // просим пользователя ввести строку символов cout << "\nВведите дату в формате дд.мм.гггг: "; cin >> str; cout <<str[0]<<str[1]<<"\t"; if ((str[3]=='0') && (str[4]=='1')) {cout << "Январь\t"<< str[6]<<str[7]<< str[8]<<str[9];} if ((str[3]=='0') &&(str[4]=='2')) {cout << "Февраль\t"<< str[6]<<str[7]<< str[8]<<str[9];} if ((str[3]=='0') && (str[4]=='3')) {cout << "Март\t"<< str[6]<<str[7]<< str[8]<<str[9];} if ((str[3]=='0') && (str[4]=='4')) {cout << "Апрель\t"<< str[6]<<str[7]<< str[8]<<str[9];} if ((str[3]=='0')&& (str[4]=='5')) {cout << "Май\t"<< str[6]<<str[7]<< str[8]<<str[9];} if ((str[3]=='0') && (str[4]=='6')) {cout << "Июнь\t"<< str[6]<<str[7]<< str[8]<<str[9];} if ((str[3]=='0') && (str[4]=='7')) {cout << "Июль\t"<< str[6]<<str[7]<< str[8]<<str[9];} if ((str[3]=='0') &&(str[4]=='8')) {cout << "Август\t"<< str[6]<<str[7]<< str[8]<<str[9];} if ((str[3]=='0') && (str[4]=='9')) {cout << "Сентябрь\t"<< str[6]<<str[7]<< str[8]<<str[9];} if ((str[3]=='1') && (str[4]=='0')) {cout << "Октябрь\t"<< str[6]<<str[7]<< str[8]<<str[9];} if ((str[3]=='1') && (str[4]=='1')) {cout << "Ноябрь\t"<< str[6]<<str[7]<< str[8]<<str[9];} if ((str[3]=='1') && (str[4]=='2')) {cout << "Декабрь\t"<< str[6]<<str[7]<< str[8]<<str[9];} // выводим результат на экран _getch(); } |
27.12.2011, 01:13 | #2 |
Пользователь
Регистрация: 31.05.2008
Сообщений: 34
|
Код:
Последний раз редактировалось Mikola-TEAM; 27.12.2011 в 20:05. |
28.12.2011, 14:07 | #3 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Для уменьшения строк кода, предлагаю замену (как у K&R).
Вот этот код: Код:
Код:
Код:
|
29.12.2011, 00:08 | #4 |
Пользователь
Регистрация: 31.05.2008
Сообщений: 34
|
Хм, прикольное решение. Делаем массив из строк и выводим строку, соответствующую номеру месяца.
Ещё чуток "оптимизировал" и получим вот так (0-й месяц "" не нужен, просто отнимем от номера месяца 1 при выборе name) Код:
Последний раз редактировалось Mikola-TEAM; 29.12.2011 в 00:12. |
29.12.2011, 00:32 | #5 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
Raspad
Необходимо написать программу, переводящую дату из формата дд.мм.гггг в строковый формат дд. месяц гггг. В принципе написал прогу ... [десятки строк абсолютно ненужного кода поскипаны] мдэ... и на что только не идут люди, лишь бы не использовать функцию strftime... :lol: Код:
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
29.12.2011, 18:43 | #6 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Rififi, не могу придумать, как грамотно заполнить структуру locale, имея строку с датой (инициализация остальных полей). Есть ли какая-нибудь функция для этого?
И ещё, чуть не забыл, нужно будет менять "Декабрь" на "декабря". А это дополнительные затраты на строки кода. Хотя можно подумать, как это сделать с минимальными затратами. А пока бы инициализировать locale. Mikola-TEAM, проверка у вас отличная получилась. Последний раз редактировалось 8Observer8; 29.12.2011 в 19:05. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод даты в строковый формат | Raspad | Общие вопросы C/C++ | 1 | 29.12.2011 00:19 |
Как перевести число в строковый формат. в PHP | Ast | Помощь студентам | 8 | 12.06.2011 08:52 |
Формат даты. | agregator | Microsoft Office Excel | 3 | 21.01.2011 14:55 |
VBA,преобразование в строковый формат | DimR | Помощь студентам | 0 | 07.04.2010 23:03 |
Формат даты | Iskin | Microsoft Office Excel | 5 | 16.04.2009 14:49 |