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

Вывести дату в заданном формате - C++

Восстановить пароль Регистрация
 
Mediaplay
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
26.04.2010, 20:31     Вывести дату в заданном формате #1
В это задаче надо ввести дату 21/07/55 и что бы вывело в формате July 21, 1955
Но я не понимаю почемы выводит 21, 1955?Почему месяц не выводится?

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
49
50
51
52
53
54
55
56
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
int main() 
{
        enum month { January, February, March, April, May, June, July, August, September, October, November, December };
        
        string date;
        cin >> date;
        int mon = atoi(date.c_str());
        switch(mon-1)
        {
        case January:
                cout << "January ";
                break;
        case February:
                cout << "February ";
                break;
        case March:
                cout << "March ";
                break;
        case April:
                cout << "April ";
                break;
        case May:
                cout << "May ";
                break;
        case June:
                cout << "June ";
                break;
        case July:
                cout<< "July ";
                break;
        case August:
                cout << "August ";
                break;
        case September:
                cout << "September ";
                break;
        case October:
                cout << "October ";
                break;
        case November:
                cout << "November ";
                break;
        case December:
                cout << "December ";
                break;
        }
        cout << date[0] << date[1] ;
       cout << ", 19"  << date[6]<< date[7] << endl;
       system("pause");
       return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2010, 20:31     Вывести дату в заданном формате
Посмотрите здесь:

Строки и функции пользователя. Преобразовать заданную пользователем дату в формате «дд.мм.гг» в формат «месяц дд, год» C++
Строки с Чаром (преобразовать заданную пользователем дату в формате «дд.мм.гг» в формат «месяц дд, год») C++
C++ Записать число в строку в заданном формате
Вывести двоичный код в массив в заданном формате C++
C++ Нужно ввести дату в формате dd.mm.yyyy - не работает присваивание
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mediaplay
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
27.04.2010, 20:40  [ТС]     Вывести дату в заданном формате #2
Не у кого нет идей?
Ну или может кто то уже делал такую задачу, то пришлите свой вариант решения.
yanyk1n
 Аватар для yanyk1n
4324 / 1455 / 152
Регистрация: 12.03.2009
Сообщений: 5,310
27.04.2010, 20:53     Вывести дату в заданном формате #3
Mediaplay, хм... А перечисляемый тип кодируется как целые числа, начиная с нуля

Добавлено через 59 секунд
C++
1
2
3
4
5
6
int mon;
cin >> mon;
switch(mon)
{
...
}
Mediaplay
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
27.04.2010, 21:09  [ТС]     Вывести дату в заданном формате #4
Непонял тебя.
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
27.04.2010, 21:30     Вывести дату в заданном формате #5
atoi("21/07/55") = 21
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
27.04.2010, 21:32     Вывести дату в заданном формате #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
49
50
51
52
53
54
55
56
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
int main() 
{
        enum month {January = 1, February, March, April, May, June, July, August, September, October, November, December };
                
        string date;
        cin >> date;
        int mon = atoi(date.c_str());
        switch(mon)
        {
        case January:
                cout << "January ";
                break;
        case February:
                cout << "February ";
                break;
        case March:
                cout << "March ";
                break;
        case April:
                cout << "April ";
                break;
        case May:
                cout << "May ";
                break;
        case June:
                cout << "June ";
                break;
        case July:
                cout<< "July ";
                break;
        case August:
                cout << "August ";
                break;
        case September:
                cout << "September ";
                break;
        case October:
                cout << "October ";
                break;
        case November:
                cout << "November ";
                break;
        case December:
                cout << "December ";
                break;
        }
       cout << date[3] << date[4] ;
       cout << ", 19"  << date[6]<< date[7] << endl;
       system("pause");
       return 0;
}
не выводило, т.к. в месяц преобразовывались первые цифры до знака, не принадлежащего к цифрам
т.е. вы вводили 12/23/78
и в месяц преобразовывались первые 2 цифры (12)
в новом варианте при вводе 12/23/78 либо 12.23.78 либо 12!23!78, вобщем что угодно можо ставить между цифрами кроме пробела и на экране появится: December 23, 1978
kukuruku310
197 / 184 / 6
Регистрация: 14.02.2010
Сообщений: 535
27.04.2010, 21:35     Вывести дату в заданном формате #7
Цитата Сообщение от Mediaplay Посмотреть сообщение
int mon = atoi(date.c_str());
выведите на экран результат этого присваивания и все поймете
или добавьте default в switch
Mediaplay
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
27.04.2010, 22:36  [ТС]     Вывести дату в заданном формате #8
Vorona но мне то радо вначале чисто а потом месяц 21/07/55
kukuruku310 про atoi я понял что эта функция делает. Но можно ли сделать чтобы функция начиналась с 3 позиции?
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
27.04.2010, 22:42     Вывести дату в заданном формате #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
в 13 - 15 строках происходит преобразование 4 и 5ого символов в число
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
49
50
51
52
53
54
55
56
57
58
59
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
int main() 
{
        enum month {January = 1, February, March, April, May, June, July, August, September, October, November, December };
                
        string date;
        cin >> date;
        int mon, i, i1;
    i = date[3] - 48;
    i1 = date[4] - 48;
    mon = i*10 + i1;
        switch(mon)
        {
        case January:
                cout << "January ";
                break;
        case February:
                cout << "February ";
                break;
        case March:
                cout << "March ";
                break;
        case April:
                cout << "April ";
                break;
        case May:
                cout << "May ";
                break;
        case June:
                cout << "June ";
                break;
        case July:
                cout<< "July ";
                break;
        case August:
                cout << "August ";
                break;
        case September:
                cout << "September ";
                break;
        case October:
                cout << "October ";
                break;
        case November:
                cout << "November ";
                break;
        case December:
                cout << "December ";
                break;
        }
       cout << date[0] << date[1] ;
       cout << ", 19"  << date[6]<< date[7] << endl;
       system("pause");
       return 0;
}
теперь вводите: число/месяц/год
Mediaplay
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
27.04.2010, 22:54  [ТС]     Вывести дату в заданном формате #10
Спасибо! Только зачем тут -48?
Цитата Сообщение от Vorona Посмотреть сообщение
i = date[3] - 48;
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
27.04.2010, 22:58     Вывести дату в заданном формате #11
код "0" - 48, "1" - 49, ....
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
27.04.2010, 23:05     Вывести дату в заданном формате #12
так преобразовываются элементы типа char в элементы типа int
можно и так:
C
1
i = date[3] - '0';
см.таблицу символов ASCII
ASCII код символа 0: 48, 1: 49, 2: 50
т.е, если
char a = 48;
или char a = '0';
int i = a;
то i будет равно 48, а если i = a-48, то получим 0
так же и с другими цифрами
если код цифры 6 = 54, то 54-48 = 6, что нам и нужно получить)
Mediaplay
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
27.04.2010, 23:16  [ТС]     Вывести дату в заданном формате #13
i = date[3]
Козалось если так написано то это уже и есть 3-я позиция.
Но всеравно теперь более понятно)))
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
27.04.2010, 23:22     Вывести дату в заданном формате #14
просто date[3] это элемент типа char(символы), а i - элемент типа int(только цифры)
и чтобы перевести символ в цифру, с которой можно будет производить математические операции, нам нужно провести немного махинаций
поскольку int не может иметь дела с символами типа char, то передается не сам символ, а его ASCII код, и вот если от этого кода отнять число 48, то в переменную типа int будет передана цифра, которая нам нужна)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2010, 12:15     Вывести дату в заданном формате
Еще ссылки по теме:

C++ Определить дату Дня Учителя в заданном году
Ввести одну дату и вывести дату следующего дня C++
Написать функцию, выводящую время, введённое пользователем, в заданном формате C++

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

Или воспользуйтесь поиском по форуму:
kukuruku310
197 / 184 / 6
Регистрация: 14.02.2010
Сообщений: 535
28.04.2010, 12:15     Вывести дату в заданном формате #15
Цитата Сообщение от Mediaplay Посмотреть сообщение
Но можно ли сделать чтобы функция начиналась с 3 позиции
так и укажите, откуда ей начинать atoi((const char *) &date[3])
Yandex
Объявления
28.04.2010, 12:15     Вывести дату в заданном формате
Ответ Создать тему
Опции темы

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