Форум программистов, компьютерный форум, киберфорум
Наши страницы

Задачи для тренировки и лучшего понимания - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Возможно переписать программу? http://www.cyberforum.ru/cpp/thread153534.html
Есть программа Upgrade UA.exe хочу запустить ее на windows mobile 6. Возможно ли ее переписать.
C++ scanf Пусть нужно читать из текста слова, пропуская все символы, кроме a-z и A-Z. То есть из текста Hello, world! ololo O_o получить только Hello world ololo O o Меня интересует, можно ли это... http://www.cyberforum.ru/cpp/thread153153.html
C++ Вернуть stdin в консоль
Допустим я перенаправил поток stdin/stdout в файл с помощью функции freopen. Как заставить его снова работать с консолью? Добавлено через 9 минут Нашел. #include <cstdlib> #include <stdio.h>...
Прошу помочь.Подключение dll на неуправляемом С/С++ C++
Возникла проблема.Есть рабочая dll, необходимо подключить к CLR приложению. Подключение происходит нормально. Все функции работают нормально кроме одной(хотя dll проверял все работает в обычных...
C++ Не сразу закрывающаяся программа http://www.cyberforum.ru/cpp/thread152799.html
Есть команды в терминале.. вроде telnet или sql, эти программы запускаешь и они остаются открытыми пока не дашь команду, например, quit. Во время работы программы она показывает знак приглашения...
C++ Парсер на С вопшем есть файл с текстом..... в етом файле есть какие даные(мусор)...и есть дни: Понедельник,Вторник,среда......с етого файла нада вывести ети дни в порядке нахождениэ... ето походу несложная... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.07.2010, 21:31
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
//////////////////////////////////////////////////////////////////////////////////////
//Напишите программу, которая посчитает количество смайликов в заданном тексте. 
//Смайликом будем считать последовательность символов, удовлетворяющую условиям:
//
//    * Первым символом является либо ; (точка с запятой), либо : (двоеточие) ровно 
//один раз
//    * Далее может идти символ - (минус) сколько угодно раз (в том числе минус может 
//идти ноль раз)
//    * В конце обязательно идёт некоторое количество (не меньше одной) одинаковых 
//скобок из следующего набора: (, ), [, ].
//    * Внутри смайлика не может встречаться никаких других символов.
//////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <ctime>
#include <string>
#include <algorithm>
#include <iomanip>
 
typedef std::string  T_str;
 
enum T_smile_symb
{
    DVOETOCHIE        = ':',
    COMA_DOT          = ';',
    TIRE              = '-',
    SKOBKA_KRUGL_OTKR = '(',
    SKOBKA_KRUGL_ZAKR = ')',
    SKOBKA_KVADR_OTKR = '[',
    SKOBKA_KVADR_ZAKR = ']'
};
 
class T_count_smiles
{
    enum T_smile_state
    {
        NOT_SMILE_ST         = '!',        
        TIRE_ST              = TIRE,
        SKOBKA_KRUGL_OTKR_ST = SKOBKA_KRUGL_OTKR,
        SKOBKA_KRUGL_ZAKR_ST = SKOBKA_KRUGL_ZAKR,
        SKOBKA_KVADR_OTKR_ST = SKOBKA_KVADR_OTKR,
        SKOBKA_KVADR_ZAKR_ST = SKOBKA_KVADR_ZAKR
    };
    //------------------------------------------------------------------------------
    char   cur_smile_state_;
    int    smile_count_;
    T_str  cur_smile_;
    //------------------------------------------------------------------------------
public:
    //------------------------------------------------------------------------------
    T_count_smiles() : cur_smile_state_(NOT_SMILE_ST), smile_count_(0)
    {}
    //------------------------------------------------------------------------------
    void operator() (char symb)
    {
        switch(cur_smile_state_)
        {
        case NOT_SMILE_ST: 
            not_smile(symb);
            break;
        case TIRE_ST: 
            tire(symb);
            break;
        case SKOBKA_KRUGL_OTKR_ST: 
        case SKOBKA_KRUGL_ZAKR_ST: 
        case SKOBKA_KVADR_OTKR_ST: 
        case SKOBKA_KVADR_ZAKR_ST:             
            skobka(symb);
            break;
        }    
    }
    //------------------------------------------------------------------------------
    operator int ()
    {
        return  smile_count_;
    }
    //------------------------------------------------------------------------------
private:
    //------------------------------------------------------------------------------
    void  not_smile(char symb)
    {
        if(is_smile_glaza(symb))
        {
            cur_smile_.assign(1, symb);
            cur_smile_state_ = TIRE_ST;            
        }        
    }
    //------------------------------------------------------------------------------
    void  tire(char symb)
    {
        if(is_tire(symb))
        {
            cur_smile_ += symb;
        }
        else
        {
            if(is_skobka(symb))
            {
                cur_smile_       += symb;
                cur_smile_state_ =  symb;                            
            }            
            else
            {
                cur_smile_state_ = NOT_SMILE_ST;
                operator()(symb);
            }            
        }           
    }   
    //------------------------------------------------------------------------------
    void  skobka(char symb)
    {
        if(symb == cur_smile_state_)
        {
            cur_smile_ += symb;
        }
        else
        {
            ++smile_count_;            
            std::cout << std::setw(3)
                      << smile_count_
                      << ")  "
                      << cur_smile_
                      << std::endl;
            cur_smile_state_ = NOT_SMILE_ST; 
            operator()(symb);
        }
    }
    //------------------------------------------------------------------------------
    bool is_smile_glaza(char symb)
    {
        return    symb == DVOETOCHIE
               || symb == COMA_DOT;
    }
    //------------------------------------------------------------------------------
    bool is_tire(char symb)
    {
        return symb == TIRE_ST;
    }
    //------------------------------------------------------------------------------
    bool is_skobka(char symb)
    {
        return    symb == SKOBKA_KRUGL_OTKR_ST
               || symb == SKOBKA_KRUGL_ZAKR_ST
               || symb == SKOBKA_KVADR_OTKR_ST
               || symb == SKOBKA_KVADR_ZAKR_ST;        
    }
    //------------------------------------------------------------------------------
};
 
T_str  get_rand_smile_str(int size)
{   
    struct T_gen_smile_symb
    {
        T_str  smile_symbols_;
        T_gen_smile_symb()
        {
            smile_symbols_.push_back(DVOETOCHIE);
            smile_symbols_.push_back(COMA_DOT);
            smile_symbols_.push_back(TIRE);
            smile_symbols_.push_back(TIRE);
            smile_symbols_.push_back(TIRE);
            smile_symbols_.push_back(TIRE);
            smile_symbols_.push_back(SKOBKA_KRUGL_OTKR);
            smile_symbols_.push_back(SKOBKA_KRUGL_ZAKR);
            smile_symbols_.push_back(SKOBKA_KVADR_OTKR);
            smile_symbols_.push_back(SKOBKA_KVADR_ZAKR);        
        }
        char operator() ()
        {
            return smile_symbols_[rand() % smile_symbols_.length()];
        }
    };
 
    T_str rand_smile_str(size, 0);
    std::generate(rand_smile_str.begin(), rand_smile_str.end(), T_gen_smile_symb());
    return rand_smile_str += ' ';
}
 
int main()
{
    std::locale::global(std::locale(""));
    srand(static_cast<unsigned>(time(0)));
    const int SMILE_STR_LEN = 80;
    T_str  rand_smile_str = get_rand_smile_str(SMILE_STR_LEN);      
    std::cout << rand_smile_str
              << std::endl;
    int smile_count = std::for_each(rand_smile_str.begin(), rand_smile_str.end(), 
                                    T_count_smiles());
 
    std::cout << "Итого "
              << smile_count
              << " смайлов."
              << std::endl;
    return 0;
}
Добавлено через 21 минуту
Цитата Сообщение от alex_x_x Посмотреть сообщение
однако как я понимаю при описании
int chessboard[9][9];
при конструировании объекта вызовется конструктор по умолчанию, что в данном случае означает заполнение нулями
Неявный конструктор по умолчанию ведет себя как пустой, а по стандарту члены класса пользовательских типов, не инициализированные в конструкторе, остаются неинициализированными.
4
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru