Форум программистов, компьютерный форум CyberForum.ru

Перевести "дату" в число - C++

Восстановить пароль Регистрация
 
Insane__
43 / 42 / 4
Регистрация: 10.09.2013
Сообщений: 292
13.03.2014, 16:14     Перевести "дату" в число #1
Допустим пользователь ввел двадцать первое ноября а программа должна вывести 21.11. Диапазон значения от 1 и до 31. Как это можно реализовать? С переводом месяца проблем нет вот с числом немного тяжеловато..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2014, 16:14     Перевести "дату" в число
Посмотрите здесь:

Дано натуральное число. Найти сумму последних "n" цифр "n" числа, не применяя переменых значений C++
C++ дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no"
Game "Угадай число" как зделать запрет на "букви" ???? C++
C++ Дано целое число , лежащие в диапазоне от -999 до 999.Вывести строку - словесного описание данного числа вида "отрицательное двухзначное число", "отри
C++ Превратить заданную пользователем дату в формате "дд.мм.гг" в формат "месяц дд. год"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
13.03.2014, 16:56     Перевести "дату" в число #2
Цитата Сообщение от Insane__ Посмотреть сообщение
с числом немного тяжеловато..
Все можно различать по нескольким первым буквам. Вот это функция определяет начинается ли s с букв t
C++
1
2
3
4
int strcmlen(char *s, char *t)
{ while(*t) if (*(s++) != *(t++)) return 1;
   return 0;
}
Теперь составляешь массив
C++
1
char *suf[] = { "дес", "один", "две", "трин", .... "перв", "втор", "тре"... NULL };
и циклом находишь, с чем у тебя совпадает первое слово числа. Если совпало с "двад", "трид", значит может быть следующее слово, обозначающее единицы (а может и не быть)
Программка интересная, но не очень сложная.
Надо, конечно, предвидеть и то, что пользователь ошибется, с ними это бывает
Insane__
43 / 42 / 4
Регистрация: 10.09.2013
Сообщений: 292
13.03.2014, 17:24  [ТС]     Перевести "дату" в число #3
Вот пробую использовать ваш метод. Но при использовании strtok переменная token принимает значения не из строки s а с масиву edm. В чем может быть проблема?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
char* trim(char *src){
    strcpy(temp,src);
    int i, j;
 
    
    for(i = j = 0; src[i] != '\0'; i++)
        if(src[i] != ' ')
            temp[j++] = src[i];
    temp[j] = '\0';
    return temp;
}
 
int strcmlen(char *s, char *t)
{ 
    while(*t) if (*(s++) != *(t++)) return 1;
    return 0;
}
 
char* getDayAndMonth(char* s){
    
    
    strcpy(temp,s);
    char* token = strtok(temp," ");
    
    while(token != NULL){
        for(int i = 1; i < 4; i++){
            char temp2[256];
            strcpy(temp2,token);
            if(strcmlen(temp2,trim(edm[i]))){
                printf("%d\n",i);
            }
            printf("%s : %s\n",token,edm[i]);
        }
        
        token = strtok(NULL," ");
    }
    return result;
}
 
void main()
{
    
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char *s = "друге листопада";
    printf("%s",getDayAndMonth(s));
    system("pause");
}
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
13.03.2014, 17:39     Перевести "дату" в число #4
Можно еще готовые библиотеки для этого юзать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
 
using namespace boost::gregorian;
 
int main()
{
   date d;
   std::cout << "Enter your date (example: \"YYYY MM DD\"): -> ";
 
   date_input_facet* input_facet(new date_input_facet("%Y %m %d"));
   std::cin.imbue(std::locale(std::cin.getloc(), input_facet));
   std::cin >> d;
 
   date_facet* facet(new date_facet("%d.%m"));
   std::cout.imbue(std::locale(std::cout.getloc(), facet));
   std::cout << "You entered: " << d << "\n";
 
   return 0;
}
Insane__
43 / 42 / 4
Регистрация: 10.09.2013
Сообщений: 292
13.03.2014, 17:41  [ТС]     Перевести "дату" в число #5
DiffEreD, готовые библиотеки это конечно хорошо но нужно написать самому..
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
13.03.2014, 19:39     Перевести "дату" в число #6
Insane__, Кто такой tmp ? Объявления не вижу...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 19:59     Перевести "дату" в число
Еще ссылки по теме:

C++ "Перевести натуральное число из 8-ричной в 10-чную систему счисления"
C++ Дано натуральное число. Верно ли, что цифра "a" встречается в нем реже, чем цифра "b"?
Вернуть строку, содержащую дату в формате "Сегодня 22 января 2015 года" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Insane__
43 / 42 / 4
Регистрация: 10.09.2013
Сообщений: 292
13.03.2014, 19:59  [ТС]     Перевести "дату" в число #7
Цитата Сообщение от Байт Посмотреть сообщение
Кто такой tmp ?
Это просто глобальные массив типа char.
C++
1
char temp[256];
Yandex
Объявления
13.03.2014, 19:59     Перевести "дату" в число
Ответ Создать тему
Опции темы

Текущее время: 00:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru