Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39

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

26.04.2010, 20:31. Показов 1264. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В это задаче надо ввести дату 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;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.04.2010, 20:31
Ответы с готовыми решениями:

Вывести содержимое файла в заданном формате
2: У вас есть файл input.txt содержащий строки вида qwe:as ewq1:f312 … Необходимо открыть файл и вывести содержимое в формате ...

Вывести информацию о каждом url в заданном формате
Допустим есть vector&lt;string&gt; содержащий url. Например: std::vector&lt;std::string&gt; url; ...

Вывести двоичный код в массив в заданном формате
Необходимо вывести двоичный код в массив в таком формате 1 10 11 100 101 и т.д. до N-ого раза я пытался решить это 3...

14
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
27.04.2010, 20:40  [ТС]
Не у кого нет идей?
Ну или может кто то уже делал такую задачу, то пришлите свой вариант решения.
0
 Аватар для yanyk1n
4342 / 1474 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
27.04.2010, 20:53
Mediaplay, хм... А перечисляемый тип кодируется как целые числа, начиная с нуля

Добавлено через 59 секунд
C++
1
2
3
4
5
6
int mon;
cin >> mon;
switch(mon)
{
...
}
0
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
27.04.2010, 21:09  [ТС]
Непонял тебя.
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
27.04.2010, 21:30
atoi("21/07/55") = 21
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
27.04.2010, 21:32
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
27.04.2010, 21:35
Цитата Сообщение от Mediaplay Посмотреть сообщение
int mon = atoi(date.c_str());
выведите на экран результат этого присваивания и все поймете
или добавьте default в switch
0
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
27.04.2010, 22:36  [ТС]
Vorona но мне то радо вначале чисто а потом месяц 21/07/55
kukuruku310 про atoi я понял что эта функция делает. Но можно ли сделать чтобы функция начиналась с 3 позиции?
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
27.04.2010, 22:42
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

в 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;
}
теперь вводите: число/месяц/год
1
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
27.04.2010, 22:54  [ТС]
Спасибо! Только зачем тут -48?
Цитата Сообщение от Vorona Посмотреть сообщение
i = date[3] - 48;
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
27.04.2010, 22:58
код "0" - 48, "1" - 49, ....
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
27.04.2010, 23:05
так преобразовываются элементы типа 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, что нам и нужно получить)
0
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
27.04.2010, 23:16  [ТС]
i = date[3]
Козалось если так написано то это уже и есть 3-я позиция.
Но всеравно теперь более понятно)))
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
27.04.2010, 23:22
просто date[3] это элемент типа char(символы), а i - элемент типа int(только цифры)
и чтобы перевести символ в цифру, с которой можно будет производить математические операции, нам нужно провести немного махинаций
поскольку int не может иметь дела с символами типа char, то передается не сам символ, а его ASCII код, и вот если от этого кода отнять число 48, то в переменную типа int будет передана цифра, которая нам нужна)
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
28.04.2010, 12:15
Цитата Сообщение от Mediaplay Посмотреть сообщение
Но можно ли сделать чтобы функция начиналась с 3 позиции
так и укажите, откуда ей начинать atoi((const char *) &date[3])
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2010, 12:15
Помогаю со студенческими работами здесь

Вывести информацию о каждом url в заданном формате
Допустим есть vector&lt;string&gt; содержащий url. Например: std::vector&lt;std::string&gt; url; ...

Вывести значение n-го члена арифметической прогрессии в заданном формате
На вход программы подаются три целых числа a1, a2 и n. a1 и a2 - первые два члена арифметической прогрессии. Вывести значение n-го члена в...

Вывести информацию в заданном формате без регулярных выражений
Задан vector&lt;string&gt; содержащий url. Например: std::vector&lt;std::string&gt; url; url.push_back(&quot;http://example.com/index.html&quot;); ...

Запросить на ввод значения часов и минут и вывести их в заданном формате
Доброго времени суток, форумчане. Просьба помочь с простыми программами на С++. Только начал изучать, но путаюсь, где какой оператор и...

Написать программу, которая предлагает пользователю ввести дату в формате YYYY MM DD и выводит в консоль, следующую за ней дату
вот еще одно =) Написать программу, которая предлагает пользователю ввести дату в формате YYYY MM DD и выводит в консоль, следующую за...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru