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

Печать даты в различных форматах - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Pasha_0057
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 10
23.04.2013, 20:30     Печать даты в различных форматах #1
Напишите программу, которая считает даты в первом формате и печатет их во втором!
07/21/55 и Июль 21, 1995

Добавлено через 19 минут
Кто знает?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
23.04.2013, 20:35     Печать даты в различных форматах #2
хранить в контейнере элементы парами "название месяца" - "порядковый номер месяца", ну а дальше понятно думаю
Pasha_0057
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 10
24.04.2013, 14:08  [ТС]     Печать даты в различных форматах #3
Цитата Сообщение от Кудаив Посмотреть сообщение
хранить в контейнере элементы парами "название месяца" - "порядковый номер месяца", ну а дальше понятно думаю
А код программы написать можете?

Добавлено через 17 часов 20 минут
Кто сможет написать код программы?
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
24.04.2013, 14:15     Печать даты в различных форматах #4
с нуля за так наврядли кто то напишет, наработки пожалста или в раздел фриланс
-=ЮрА=-
Заблокирован
Автор FAQ
24.04.2013, 14:36     Печать даты в различных форматах #5
Цитата Сообщение от Pasha_0057 Посмотреть сообщение
Напишите программу, которая считает даты в первом формате и печатет их во втором!
07/21/55 и Июль 21, 1995
- что значит считает даты?
Суть проста заведи 12-ть строковых литералов с названиями месяцев и когда скажем видишь 3-й месяц бери литерал март
вот немного кода чтобы было понятно
C++
1
2
char *pMONTH[] = {"jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"};
cout<<pMONTH[3 - 1]<<endl;
Pasha_0057
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 10
26.04.2013, 12:12  [ТС]     Печать даты в различных форматах #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
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "rus");
int a,b,c;  
cout<<"Введите дату:"<<endl;
char *pMONTH[] = {"","Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"};
 
    cout<<"Месяц: ";
    cin>>a;
    cout<<"День: ";
    cin>>b;
    cout<<"Год: ";
    cin>>c;
 
cout<<pMONTH[a]<<" "<<b<<" "<<"19"<<c<<endl;
 
    return 0;
}
Как сделать чтобы при вводе даты например от 1 до 20 он приписывал 20.
А при вводе от 80 до 99 он приписывал 19.
__________
Вот тут
C++
1
cout<<pMONTH[a]<<" "<<b<<" "<<"19"<<c<<endl;
он просто переписывает 19!
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.04.2013, 13:08     Печать даты в различных форматах #7
А что, стандартные функции уже отменили? http://www.cplusplus.com/reference/ctime/
-=ЮрА=-
Заблокирован
Автор FAQ
26.04.2013, 14:20     Печать даты в различных форматах #8

Не по теме:

Tulosba, а они по русски месяцы печатают?


Цитата Сообщение от Pasha_0057 Посмотреть сообщение
07/21/55 и Июль 21, 1995
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.04.2013, 14:41     Печать даты в различных форматах #9
-=ЮрА=-, печатают.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <ctime>
#include <iostream>
 
int main()
{
    setlocale (LC_ALL, "");
    char buf[100];
    time_t t = time(0);
    
    strftime( buf, sizeof(buf), "%B", localtime( &t ) );
    std::cout << buf << std::endl;
    system( "pause" );
}
-=ЮрА=-
Заблокирован
Автор FAQ
26.04.2013, 15:08     Печать даты в различных форматах #10
Tulosba, никогда не замечал за ctime склонность к русскому
http://codepad.org/IE18UaOy
Output: April
http://www.cplusplus.com/reference/ctime/strftime/
%B Full month name * - опять же английское отображение месяца.

Добавлено через 3 минуты

Не по теме:

Если бы автор темы дал внятный ответ что он понимает под словосочетанием

Цитата Сообщение от Pasha_0057 Посмотреть сообщение
которая считает даты
можно было что то написать, но по всей видимости в теме случай когда сам автор не знает чего такое надо

go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.04.2013, 15:43     Печать даты в различных форматах #11
Pasha_0057, как-то так. Писал "на коленке". Должно работать. Но нет проверки на ввод не корректной даты.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
std::string month[] =  {
        "jun", "feb", "mar", "apr", "may", "jn", "jl", "aug", "sept", "oct", "nov", "dec"
    };
 
    std::string data("a 07/21/55 sadas12 324355 08/20/d00 0/20/95 08/20/95");
 
    std::smatch m;
    std::regex e("(\\d{2})/(\\d{2})/(\\d{2})");
 
    while (std::regex_search(data, m, e))
    {
        std::cout << month[std::stoi(m[0]) - 1] << " " << m[1] << " 19" << m[2] << std::endl;
        data = m.suffix().str();
    }
Добавлено через 11 минут
Цитата Сообщение от go Посмотреть сообщение
Но нет проверки на ввод не корректной даты.
Ладно. Вот так можно
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
#include <regex>
#include <string>
#include <vector>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::string month[] =  {
        "jun", "feb", "mar", "apr", "may", "jn", "jl", "aug", "sept", "oct", "nov", "dec"
    };
 
    std::string data("a 07/21/55 sadas12 13/21/55 00/21/55 13/32/55 324355 08/20/d00 0/20/95 08/20/95");
 
    std::smatch m;
    std::regex e("(0[1-9]|1[012])/(0[1-9]|1[0-9]|2[0-9]|3[01])/(\\d{2})");
 
    while (std::regex_search(data, m, e))
    {
        std::cout << month[std::stoi(m[0]) - 1] << " " << m[1] << " 19" << m[2] << std::endl;
        data = m.suffix().str();
    }
    
    return 0;
}
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.04.2013, 15:45     Печать даты в различных форматах #12
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
никогда не замечал за ctime склонность к русскому
Тем не менее, на русской W7 VS2010 выводит.
P.S. Жалко, не знаю какую локаль надо (и можно ли) подпихнуть ideone.com чтобы скушала
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4924 / 2667 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
26.04.2013, 15:46     Печать даты в различных форматах #13
Зачем извращаться и писать велосипеды? Все же давно готово и на блюдечке с голубой каемочкой.
http://www.boost.org/doc/libs/1_45_0...date_time.html
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.04.2013, 15:50     Печать даты в различных форматах #14
Вот так.
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
#include <regex>
#include <string>
#include <vector>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::string month[] =  {
        "jun", "feb", "mar", "apr", "may", "jn", "jl", "aug", "sept", "oct", "nov", "dec"
    };
 
    std::string data("a 07/21/55 sadas12 13/21/55 00/21/55 13/32/55 324355 08/20/d00 0/20/95 08/20/95");
 
    std::smatch m;
    std::regex e("(0[1-9]|1[012])/(0[1-9]|1[0-9]|2[0-9]|3[01])/(\\d{2})");
 
    while (std::regex_search(data, m, e))
    {
        std::cout << month[std::stoi(m[1]) - 1] << " " << m[2] << " 19" << m[3] << std::endl;
        data = m.suffix().str();
    }
    
    return 0;
}
Опять же. Нет проверки какой это год, т.е. кол-во дней в месяце. По дефолту от 1 до 31 включительно.
Pasha_0057
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 10
26.04.2013, 16:31  [ТС]     Печать даты в различных форматах #15
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

Tulosba, а они по русски месяцы печатают?

Да по Русски считают даты.
там же написал
C++
1
setlocale(LC_ALL, "rus");
он и распознает Русский

Добавлено через 9 минут
Цитата Сообщение от go Посмотреть сообщение
Вот так.
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
#include <regex>
#include <string>
#include <vector>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::string month[] =  {
        "jun", "feb", "mar", "apr", "may", "jn", "jl", "aug", "sept", "oct", "nov", "dec"
    };
 
    std::string data("a 07/21/55 sadas12 13/21/55 00/21/55 13/32/55 324355 08/20/d00 0/20/95 08/20/95");
 
    std::smatch m;
    std::regex e("(0[1-9]|1[012])/(0[1-9]|1[0-9]|2[0-9]|3[01])/(\\d{2})");
 
    while (std::regex_search(data, m, e))
    {
        std::cout << month[std::stoi(m[1]) - 1] << " " << m[2] << " 19" << m[3] << std::endl;
        data = m.suffix().str();
    }
    
    return 0;
}
Опять же. Нет проверки какой это год, т.е. кол-во дней в месяце. По дефолту от 1 до 31 включительно.
Дни он просто выводит число которое вводим.
Месяцы он правильно выводит.
А вот на счет года надо сделать чтобы он с 80 по 99 считал что это 1990.год
А с 1 по 20 он считал что это 2000.год
_________
А зачем все время писать STD?
Его можно же в начале написать using namespace std;
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.04.2013, 16:34     Печать даты в различных форматах #16

Не по теме:

Цитата Сообщение от Pasha_0057 Посмотреть сообщение
А зачем все время писать STD?
Его можно же в начале написать using namespace std;
вопрос, ставший классикой


Краткий ответ: чтобы не напороться случайно на что-то из std, задавая свои собственные имена.
-=ЮрА=-
Заблокирован
Автор FAQ
26.04.2013, 16:38     Печать даты в различных форматах #17
Цитата Сообщение от Pasha_0057 Посмотреть сообщение
он и распознает Русский
- ну попробуй как нибудь проделать это в неруссифицированной версии студии (я писал именно о русском у стандартной библиотеки ctime, которого нет а не о русском в рашинєдишн, в японской версии аналогично не будет русских дат будут японские)
Цитата Сообщение от Pasha_0057 Посмотреть сообщение
Да по Русски считают даты.
Опять же никак у тебя не добьюсь что ты подразумеваешь под словом считать даты, неужели нельзя подобрать нормальный эпитет чтобы сформулировать задание чего тебе надо?Напиши конкретно какой должен быть ввод какой вывод, тогда въеду наконец чего там такое от тебя хотят.

Не по теме:

Добавлено через 2 минуты

Цитата Сообщение от Tulosba Посмотреть сообщение
А зачем все время писать STD?
Его можно же в начале написать using namespace std;
- прочти, поймёшь почему using namespace std не только можно но и нужно для облегчения жизни using namespace std и std:: надоело смотреть!

Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.04.2013, 16:44     Печать даты в различных форматах #18
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ну попробуй как нибудь проделать это в неруссифицированной версии студии
Мой код проверен в английской студии, но на русской винде.
-=ЮрА=-
26.04.2013, 16:48
  #19

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
ой код проверен в английской студии, но на русской винде.
- а у меня видимо китайская студия и грузинская ХРюша
Хорошо вечером гляну в 11-й на счёт этого момента

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2013, 16:51     Печать даты в различных форматах
Еще ссылки по теме:

Ридеры различных форматов на С++ C++
На основе введенной даты рождения и текущей даты сообщить пользователю, сколько он прожил дней C++
Вывод символа в форматах c, d, o, x C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
26.04.2013, 16:51     Печать даты в различных форматах
  #20

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- а у меня видимо китайская студия и грузинская ХРюша
не знаю, у нас даже страны разные, так что не удивлюсь

Yandex
Объявления
26.04.2013, 16:51     Печать даты в различных форматах
Ответ Создать тему
Опции темы

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