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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Insane__
43 / 43 / 4
Регистрация: 10.09.2013
Сообщений: 293
#1

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

13.03.2014, 16:14. Просмотров 483. Ответов 6
Метки нет (Все метки)

Допустим пользователь ввел двадцать первое ноября а программа должна вывести 21.11. Диапазон значения от 1 и до 31. Как это можно реализовать? С переводом месяца проблем нет вот с числом немного тяжеловато..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2014, 16:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевести "дату" в число (C++):

Двусвязный список с объектом трех типов: "целое число", "вещественное число", "строка" - C++
Есть проблема. Реализовать двухсвязный список. Каждый элемент списка может содержать один объект. Объект может быть трех типов: "целое...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Превратить заданную пользователем дату в формате "дд.мм.гг" в формат "месяц дд. год" - C++
Помогите пожалуйста написать программу на рядки. Условие Превратить заданную пользователем дату в формате "дд.мм.гг" в формат "месяц...

"Перевести натуральное число из 8-ричной в 10-чную систему счисления" - C++
Добрый вечер) Друзья помогите пожалуйста составить программку) Условие задачи: Целое длинное число A задается в диалоговом режиме. ...

Перегрузка функций "ввести в поток", "вывести с потока", "умножить вектор на число" - C++
Подскажите пожалуйста, как убрать ошибки с этой программы? (делала перегрузку "ввести в поток" и "вывести с потока", а также "умножить...

Вывести на экран монитора число с наименованием "год","года", "лет" - C++
Прошу прогу в С++. Дано натуральное число n (n<=100), определяющее в годах возраст человека. Составить программу, по которой на экран...

6
Байт
Эксперт C
16328 / 10604 / 1587
Регистрация: 24.12.2010
Сообщений: 20,217
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 };
и циклом находишь, с чем у тебя совпадает первое слово числа. Если совпало с "двад", "трид", значит может быть следующее слово, обозначающее единицы (а может и не быть)
Программка интересная, но не очень сложная.
Надо, конечно, предвидеть и то, что пользователь ошибется, с ними это бывает
2
Insane__
43 / 43 / 4
Регистрация: 10.09.2013
Сообщений: 293
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");
}
0
DiffEreD
1431 / 768 / 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;
}
0
Insane__
43 / 43 / 4
Регистрация: 10.09.2013
Сообщений: 293
13.03.2014, 17:41  [ТС] #5
DiffEreD, готовые библиотеки это конечно хорошо но нужно написать самому..
0
Байт
Эксперт C
16328 / 10604 / 1587
Регистрация: 24.12.2010
Сообщений: 20,217
13.03.2014, 19:39 #6
Insane__, Кто такой tmp ? Объявления не вижу...
0
Insane__
43 / 43 / 4
Регистрация: 10.09.2013
Сообщений: 293
13.03.2014, 19:59  [ТС] #7
Цитата Сообщение от Байт Посмотреть сообщение
Кто такой tmp ?
Это просто глобальные массив типа char.
C++
1
char temp[256];
0
13.03.2014, 19:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 19:59
Привет! Вот еще темы с ответами:

Для каждого элемента последовательности вывести на экран "true" если число чётное и "false" если число нечёное - C++
Задана последовательность из 5 цифр. Для каждого числа вывести на экран &quot;true&quot; - если число четное и &quot;false&quot; - если не четное. ...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Дано натуральное число. Найти сумму последних "n" цифр "n" числа, не применяя переменых значений - C++
Здравствуйте, помогите написать две программы. 1) Дано натуральное число. Найти сумму последних &quot;n&quot; цифр &quot;n&quot; числа, не применяя...

дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no" - C++
Вот попробовал написать код но ошибку выдает: #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; int main() { ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru