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

Записать парадигму - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алфавитная соритровка структур из файла http://www.cyberforum.ru/cpp-beginners/thread263149.html
Всем доброе утро. struct zapchasti { char firma; char tovar; int kol; int cena; int garantia;
C++ Функции по обработке строк! Записать числа от 1 до 100 словами. http://www.cyberforum.ru/cpp-beginners/thread263148.html
Вывести числа от 1 до 100 словами используя строки C++
НАдо вывести числа от 1 до 100 словами используя строки. При чём предусмотреть возможность ввода числа, и вывода его названия. Обязательна кирилица.
Записать время (час: мин) словами. C++
Записать время (час: мин) словами. C++
C++ Проверка символов и чисел http://www.cyberforum.ru/cpp-beginners/thread263123.html
Определить, в каком формате записан номер мобильного телефона для номеров операторов UMC и Киевстар. (Международный, национальный, оператора, неправильный). код на Си.. Добавлено через 48 минут например дан рядок, +380985005060 проверить или первые 3 символа =+380 то вывести правильно, а 4 5 6 - 098 оператор....как это сделать в Си?
C++ Реализовать простейшую базу данных, используя пользовательские типы (структуры) Помогите написать простую программу с помощью структур подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
3011 / 1667 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
24.03.2011, 16:17     Записать парадигму
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/////////////////////////////////////////////////////////////////////////////////////////
//Записать парадигму (все падежи) для прилагательного мужского рода
//C++
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <locale>
#include <string>
#include <windows.h> 
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
/////////////////////////////////////////////////////////////////////////////////////////
T_str  from_DOS(const T_str&  DOS_string)
{    
    char buf[100];   
    OemToCharA(DOS_string.c_str(), buf);
    return buf;
}
/////////////////////////////////////////////////////////////////////////////////////////
void  str_tolower(T_str&  string)
{
    struct  T_rus_tolower
    {
        char  operator() (char  c)
        {
            return  std::tolower(c, std::locale(""));
        }        
    };
    std::transform(string.begin(), string.end(), string.begin(), T_rus_tolower());
}
/////////////////////////////////////////////////////////////////////////////////////////
void  print_adjective_paradigm
    (
        const T_str&  adj_base,
        const T_str&  adj_ending
    )
{
    std::cout << std::endl
              <<     "И. "    << adj_base + adj_ending 
                                                   << std::endl;
 
    if(adj_ending == "ый")
    {
        std::cout << "Р. "    << adj_base + "ого"  << std::endl
                  << "Д. "    << adj_base + "ому"  << std::endl
                  << "В. "    << adj_base + "ого"  << std::endl
                  << "Т. "    << adj_base + "ым"   << std::endl
                  << "П. о "  << adj_base + "ом"   << std::endl;    
    }
    else if(adj_ending == "ий")
    {
        std::cout << "Р. "    << adj_base + "его"  << std::endl
                  << "Д. "    << adj_base + "ему"  << std::endl
                  << "В. "    << adj_base + "его"  << std::endl
                  << "Т. "    << adj_base + "им"   << std::endl
                  << "П. о "  << adj_base + "ем"   << std::endl;
    
    }
    else if(adj_ending == "ой")
    {
        char  last_adj_base_symb = adj_base[adj_base.size() - 1];
        std::cout << "Р. "    << adj_base + "ого"  << std::endl
                  << "Д. "    << adj_base + "ому"  << std::endl
                  << "В. "    << adj_base + "ого"  << std::endl
                  << "Т. "    << adj_base 
                                     + (T_str("гкхцжшчщ").find(last_adj_base_symb) != T_str::npos 
                                           ? "им" : "ым")   
                                                   << std::endl
                  << "П. о "  << adj_base + "ом"   << std::endl;    
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    T_str  DOS_adjective;
    T_str  adjective;
    T_str  adj_base;
    T_str  adj_ending;
    do
    {
        std::cout << std::endl
                  << "Введите прилагательное мужского рода единственного числа, "
                     "например \"серый\": "
                  << std::endl;
        
        std::cin >> DOS_adjective;
        adjective = from_DOS(DOS_adjective);
        str_tolower(adjective);
        adj_base    = adjective.substr(0, adjective.size() - 2);
        adj_ending  = adjective.substr(adjective.size()    - 2);    
    }while(   adj_ending != "ый"
           && adj_ending != "ий"
           && adj_ending != "ой");
 
    print_adjective_paradigm(adj_base, adj_ending);
}
 
Текущее время: 03:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru