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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Pasha_0057
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 10
#1

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

23.04.2013, 20:30. Просмотров 1699. Ответов 32
Метки нет (Все метки)

Напишите программу, которая считает даты в первом формате и печатет их во втором!
07/21/55 и Июль 21, 1995

Добавлено через 19 минут
Кто знает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 20:30     Печать даты в различных форматах
Посмотрите здесь:
Создать класс для хранения календарных дат. Обеспечить возможность работы с датами в различных форматах C++
Вывод символа в форматах c, d, o, x C++
3ds Max Сохранение в различных форматах
Сохранение изображения в различных форматах (jpg, png, bmp) C#
Создайте дату по введенным числовым значениям (в различных форматах) VBA
Печать строчки адреса на различных конвертах C++ Builder
1С Печать системной даты
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
23.04.2013, 20:35     Печать даты в различных форматах #2
хранить в контейнере элементы парами "название месяца" - "порядковый номер месяца", ну а дальше понятно думаю
Pasha_0057
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 10
24.04.2013, 14:08  [ТС]     Печать даты в различных форматах #3
Цитата Сообщение от Кудаив Посмотреть сообщение
хранить в контейнере элементы парами "название месяца" - "порядковый номер месяца", ну а дальше понятно думаю
А код программы написать можете?

Добавлено через 17 часов 20 минут
Кто сможет написать код программы?
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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++
3586 / 1366 / 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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.04.2013, 15:45     Печать даты в различных форматах #12
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
никогда не замечал за ctime склонность к русскому
Тем не менее, на русской W7 VS2010 выводит.
P.S. Жалко, не знаю какую локаль надо (и можно ли) подпихнуть ideone.com чтобы скушала
MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,822
26.04.2013, 15:46     Печать даты в различных форматах #13
Зачем извращаться и писать велосипеды? Все же давно готово и на блюдечке с голубой каемочкой.
http://www.boost.org/doc/libs/1_45_0...date_time.html
go
Эксперт C++
3586 / 1366 / 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 включительно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2013, 16:31     Печать даты в различных форматах
Еще ссылки по теме:
Печать даты на документе
MS Access Печать в отчете "пустой" даты
MS Access О форматах полей
Flash вопрос о форматах файлов
О форматах констант в Linux C++ Linux

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

Или воспользуйтесь поиском по форуму:
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;
Yandex
Объявления
26.04.2013, 16:31     Печать даты в различных форматах
Ответ Создать тему
Опции темы

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