Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/2345: Рейтинг темы: голосов - 2345, средняя оценка - 4.54
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562

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

15.07.2010, 05:53. Показов 501467. Ответов 1272
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят. Кто-нибудь может дать задачу для тренировки? Приблизительно по всему курсу С++. Буду благодарен за сложную задачу, но которую способен сделать новичок-любитель. Затраты сил-времени не важно. Главное, чтобы это было интересно и не слишком рутинно. + Если найдется человек который даст задачу просьба помогать с кодом, который я буду себя скидывать. Не переписывать за меня, но указывать на ошибки и желательно объяснять. Заранее спасибо.

Список задач, решение которых присутствует в данной теме:
44
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.07.2010, 05:53
Ответы с готовыми решениями:

Элементарные программы, для лучшего понимания языка...
Здравствуйте. Вот сегодня решил что пора изучать с++. Есть пару задач. Начал решать и уже на первой запоролся( суть в том чтобы определить...

Задачи для тренировки и лучшего понимания языка
Предлагаю в этой теме размещать задачи, которые помогут новичкам (и не только) более детально разобраться в основах языка. При размещении...

Литература для лучшего понимания сути программирования
Привет! Подскажите литературу, которая поможет разобраться в сути самого процесса программирования, поможет изучить теорию алгоритмов,...

1272
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 22:28  [ТС]
Студворк — интернет-сервис помощи студентам
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
#include <cstdio>
 
class BaseClass
{
    public:
        void func(int a) { puts("BaseClass::func(int)"); };
        void func(int a, int b) { puts("BaseClass::func(int, int)"); };
        void func(int a, int b, int c) { puts("BaseClass::func(int, int, int)"); };
        //...
};
 
class DerivedClass : public BaseClass
{
    public:        
        void func(int i){ puts("DerivedClass::func(int)"); }   
        //...             
};
 
int main()
{           
    DerivedClass*obj=new DerivedClass;
    obj->func(0);
    obj->BaseClass::func(0, 0);     // Работает
    obj->BaseClass::func(0, 0, 0);  // Работает    
   
    return 0;
}
2
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
30.07.2010, 22:31
Lavroff, а зачем указатель? И без него работает.
0
30.07.2010, 22:33  [ТС]

Не по теме:

Хохол, Хм. Сначала не работало, видимо что-то неправильно написал. Потом вспомнил, что это было в книжке, посмотрел. Сделал через указатели.

0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
30.07.2010, 22:34
В функции main меняться ничего естественно не должно.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 22:35  [ТС]
rangerx, А это должно было быть сказано сразу. Изменить только в классе?
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
30.07.2010, 22:41
Цитата Сообщение от Lavroff Посмотреть сообщение
Изменить только в классе?
0
34 / 34 / 8
Регистрация: 07.06.2010
Сообщений: 118
30.07.2010, 23:02
Цитата Сообщение от Lavroff Посмотреть сообщение
Ух. Намаялся с этой задачкой... Тупил что-т жутко.

Код
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
//Как известно, в небоскрёбах часто располагаются магазины, в которые ходят гламурные модницы. 
//Любимое занятие блондинки Анжелы — шоппинг. И сегодня у нее праздник — поход за покупками в новый небоскрёб Призма. 
//Для начала она решила обойти там все магазины. 
//Но, как оказалось, Призма настолько большая, что в ней встречаются магазины разных фирм по нескольку раз. 
//Каждый раз, когда Анжела видела магазин той же фирмы, что она уже посетила, то произносила: «БАЯН», — и шла дальше.
//Сколько раз Анжела сказала «БАЯН», пока обходила все магазины?
//Исходные данные
//В первой строке записано целое число N — количество магазинов в Призме (1 ≤ N ≤ 1000). 
//В каждой из следующих N строк записано название магазина — строка из латинских букв и пробелов длиной от 1 до 30. 
//Известно, что в Призме нет магазинов, названия которых отличаются только регистром. 
//Результат
//Выведите количество магазинов, которые не посетила Анжела. 
 
#include <stdio.h>
#include <string.h>
 
int main()
{
    int N=0, Bajan=0, count=0, i=0, j=0;
    char Name[1000][31], End[4]="End";
    scanf("%d", &N);
    while(getchar()!='\n');
    for(i=0;i<N;i++)
    {
        gets(Name[i]);
    }
    for(i=0;i<N;i++)
    {
        if(Name[i]==End)
            break;
        for(j=i+1;j<=N;j++)
        {
            if(strcmp(Name[j], End))
            if(!(strcmp(Name[i], Name[j])))
            {
                Bajan++;
                strcpy(Name[j], End);
            }
        }
    }
    printf("%d\n", Bajan);
    return 0;
}
Баян
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
#include <iostream>
#include <string>
using namespace std;
int main()
{
    int size, count=0;
    cout<<"Enter number of shops: ";
    cin>>size;   cin.get();
    string *shops, buf;
    shops=new string[size];
    for(int i=0;i<size;i++)
        getline(cin,shops[i]);
    
    for(int i=0;i<size;++i)
    {
        buf=shops[i];
        ///////////// проверка не обрабатывался
        int f=0;    //ли данный элемент ранее
        for(int t=0;t<i;++t)
            if(stricmp(shops[t].c_str(),buf.c_str())==0) 
                f=1;
        if(f)
            continue;
        /////////////////////
        for(int j=0;j<size;++j)
            if((stricmp(shops[j].c_str(),buf.c_str())==0) && j != i)
                ++count;
    }
 
    cout<<"Angella said Bajan "<<count<<" times\n";
    delete [] shops;
    system("Pause");    
    return 0;
}

В STL string нет функции для сравнения строк без учета регистра ?
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 23:04  [ТС]
[Freeman], А зачем? По задаче не может отличатся только регистром... А так... Сравнении без учета регистра с использованием функции tolower допустим
0
34 / 34 / 8
Регистрация: 07.06.2010
Сообщений: 118
30.07.2010, 23:15
Цитата Сообщение от Lavroff Посмотреть сообщение
[Freeman], А зачем? По задаче не может отличатся только регистром... А так... Сравнении без учета регистра с использованием функции tolower допустим
И правда, у меня в голове баг какой то произашел...О_о вначале везде стояло == потом заменил на stricmp

Добавлено через 4 минуты
Цитата Сообщение от rangerx Посмотреть сообщение
метод func из DerivedClass перекрывает метод func и все его перегрузки из BaseClass. Каким образом можно исправить данный код чтобы в конечном итоге на экран всё-таки было выведено:
DerivedClass::func(int)
BaseClass::func(int, int)
BaseClass::func(int, int, int)
Ну а если закоментировать строку
C++
1
//void func(int a){ puts("DerivedClass::func(int)"); }
то все работает, так можно?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 23:18  [ТС]
[Freeman], Первая должна выйти "DerivedClass:func(int)" по заданию насколько я понимаю

Добавлено через 1 минуту
Перекопал две книжки... Ничего не написано про то, что делать в таких случаях... Хм...
0
34 / 34 / 8
Регистрация: 07.06.2010
Сообщений: 118
30.07.2010, 23:23
Цитата Сообщение от Lavroff Посмотреть сообщение
[Freeman], Первая должна выйти "DerivedClass:func(int)" по заданию насколько я понимаю

Добавлено через 1 минуту
Перекопал две книжки... Ничего не написано про то, что делать в таких случаях... Хм...
Точно, не заметил
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.07.2010, 23:30
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
#include <iostream>
 
class BaseClass
{
public:
    virtual void func(int a) { puts("BaseClass::func(int)"); };
    virtual void func(int a, int b) { puts("BaseClass::func(int, int)"); };
    virtual void func(int a, int b, int c) { puts("BaseClass::func(int, int, int)"); };
    //...
};
 
class DerivedClass : public BaseClass
{
 
public: 
    using BaseClass::func;
    void func(int a){ puts("DerivedClass::func(int)"); }   
    //...             
};
 
int main()
{           
    DerivedClass obj;
    obj.func(0);
    obj.func(0, 0);     // ошибка
    obj.func(0, 0, 0);  // ошибка      
   
    return 0;
}
6
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 23:32  [ТС]
Mr.X, Браво! Кстати. Виртуал не нужны перед функциями. И без них шарашит
Вот ж блин) И виртуалки использовал, и юзинг, а совместить не догадался) Есть еще такие мозгодробительные задачки?)

ЗЫ как вариант, вместо using:
C++
1
public: BaseClass::func;
Но так не рекомендуется.
0
30.07.2010, 23:59

Не по теме:

Java
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
class Main {
    public static void main(String[] args) {
        DerivedClass c = new DerivedClass();
        c.func(1);
        c.func(1, 1);
        c.func(1, 1, 1);
    }
}
 
class BaseClass {
    void func(int a) {
        System.out.println("BaseClass::func(int)");
    }
 
    void func(int a, int b) {
        System.out.println("BaseClass::func(int, int)");
    }
 
    void func(int a, int b, int c) {
        System.out.println("BaseClass::func(int, int, int)");
    }
};
 
class DerivedClass extends BaseClass {
    void func(int a) {
        System.out.println("DerivedClass::func(int)");
    }
};
Ну разве это не прекрасно? Работает без бубна.

0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
31.07.2010, 12:04
Так лучше будет
Java
1
2
3
4
5
6
class DerivedClass extends BaseClass {
    @override
    void func(int a) {
        System.out.println("DerivedClass::func(int)");
    }
};
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
01.08.2010, 09:26
Цитата Сообщение от rangerx Посмотреть сообщение
Я уже предлагал написать калькулятор для вычисления выражений вводимых пользователем
Мое решение
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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
///////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
///////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
typedef double       T_num;
///////////////////////////////////////////////////////////////////////////////
bool  calculate                (const T_str&  s_inp, T_num& res);
void  remove_spaces            (T_str&  s);
bool  calc_expr                (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_summand             (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_line_of_summand     (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_factor              (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_minus_factor        (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_line_of_factor      (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_add_summand         (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_subtract_summand    (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_expr_in_brackets    (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_num                 (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_mult_to_factor      (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_div_into_factor     (const T_str&  s_inp, T_str&  s_out, T_num& res);
bool  calc_minus               (const T_str&  s_inp, T_str&  s_out);
bool  calc_plus                (const T_str&  s_inp, T_str&  s_out);
bool  calc_asterisk            (const T_str&  s_inp, T_str&  s_out);
bool  calc_slash               (const T_str&  s_inp, T_str&  s_out);
bool  calc_left_parenthesis    (const T_str&  s_inp, T_str&  s_out);
bool  calc_right_parenthesis   (const T_str&  s_inp, T_str&  s_out);
bool  calc_symb                (const char c, const T_str&  s_inp, T_str&  s_out);
///////////////////////////////////////////////////////////////////////////////
bool  calculate(T_str&  s_inp, T_num& res)
{
    const char FINISH_SYMB = '$';
    if(s_inp.empty()) return false;
    remove_spaces(s_inp);
    T_str  s_out;    
    return     calc_expr(s_inp + FINISH_SYMB, s_out, res)
            && s_out[0] == FINISH_SYMB;  
}
///////////////////////////////////////////////////////////////////////////////
void  remove_spaces(T_str&  s)
{    
    for(;;)
    {
        T_str::size_type  pos = s.find_first_of(" \t");   
        if(pos == T_str::npos)
        {
            break;
        }
        s = s.erase(pos, 1);
    }    
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_expr(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    if(s_inp.empty()) return false;
    return     calc_summand         (s_inp, s_out, res)
            && calc_line_of_summand (s_out, s_out, res);   
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_summand(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    if(s_inp.empty()) return false;
    return     calc_factor         (s_inp, s_out, res)
            && calc_line_of_factor (s_out, s_out, res);   
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_line_of_summand(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    bool  bool_res;
    if(s_inp.empty()) return true;    
    switch(s_inp[0])
    {
    case '+':
        return     calc_add_summand      (s_inp, s_out, res)
                && calc_line_of_summand  (s_out, s_out, res);
    case '-':
        return     calc_subtract_summand (s_inp, s_out, res)
                && calc_line_of_summand  (s_out, s_out, res);
    default:
        return  true;
    }
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_factor(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    bool  bool_res;
    if(s_inp.empty()) return false;
    switch(s_inp[0])
    {
    case '-':
        return  calc_minus_factor     (s_inp, s_out, res);
    case '(':
        return  calc_expr_in_brackets (s_inp, s_out, res);
    default:
        return  calc_num              (s_inp, s_out, res);
    }
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_minus_factor(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    if(s_inp.empty()) return false;
    bool   bool_res =    calc_minus  (s_inp, s_out)
                      && calc_factor (s_out, s_out, res);
    res *= -1;
    return  bool_res;
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_line_of_factor(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    bool  bool_res;
    if(s_inp.empty()) return true;    
    switch(s_inp[0])
    {
    case '*':
        return     calc_mult_to_factor  (s_inp, s_out, res)
                && calc_line_of_factor  (s_out, s_out, res);
    case '/':
        return     calc_div_into_factor (s_inp, s_out, res)
                && calc_line_of_factor  (s_out, s_out, res);
    default:
        return  true;
    }
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_add_summand(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    if(s_inp.empty()) return false;
    T_num  res_summand;
    bool    bool_res =     calc_plus    (s_inp, s_out)
                        && calc_summand (s_out, s_out, res_summand);
    res += res_summand;
    return  bool_res;
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_subtract_summand(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    if(s_inp.empty()) return false;
    T_num  res_summand;
    bool    bool_res =     calc_minus   (s_inp, s_out)
                        && calc_summand (s_out, s_out, res_summand);
    res -= res_summand;
    return  bool_res;
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_mult_to_factor(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    if(s_inp.empty()) return false;
    T_num  res_factor;
    bool    bool_res =     calc_asterisk (s_inp, s_out)
                        && calc_factor   (s_out, s_out, res_factor);
    res *= res_factor;
    return  bool_res;
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_div_into_factor(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    if(s_inp.empty()) return false;
    T_num  res_factor;
    bool    bool_res =     calc_slash    (s_inp, s_out)
                        && calc_factor (s_out, s_out, res_factor);
    res /= res_factor;
    return  bool_res;
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_plus(const T_str&  s_inp, T_str&  s_out)
{
    return  calc_symb('+', s_inp, s_out);
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_asterisk(const T_str&  s_inp, T_str&  s_out)
{
    return  calc_symb('*', s_inp, s_out);
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_slash(const T_str&  s_inp, T_str&  s_out)
{
    return  calc_symb('/', s_inp, s_out);
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_minus(const T_str&  s_inp, T_str&  s_out)
{
    return  calc_symb('-', s_inp, s_out);
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_expr_in_brackets(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    return     calc_left_parenthesis  (s_inp, s_out)
            && calc_expr              (s_out, s_out, res)
            && calc_right_parenthesis (s_out, s_out);
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_num(const T_str&  s_inp, T_str&  s_out, T_num& res)
{
    if(s_inp.empty()) return false;
    std::istringstream  in_potok(s_inp);    
    bool  bool_res = ((in_potok >> res) != 0);
    in_potok >> s_out;
    return  bool_res;
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_left_parenthesis(const T_str&  s_inp, T_str&  s_out)
{
    return  calc_symb('(', s_inp, s_out);
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_right_parenthesis(const T_str&  s_inp, T_str&  s_out)
{
    return  calc_symb(')', s_inp, s_out);
}
///////////////////////////////////////////////////////////////////////////////
bool  calc_symb(const char c, const T_str&  s_inp, T_str&  s_out)
{
    if(s_inp.empty()) return false;
    bool  res = (s_inp[0] == c);
    if(res)
    {        
        s_out = s_inp.substr(1);
    }
    return res;    
}
///////////////////////////////////////////////////////////////////////////////
int main()
{    
    for(;;)
    {
        std::cout << "-> ";
        T_str  s;
        std::getline(std::cin, s);
        T_num res;
        if(calculate(s, res))
        {
            std::cout << "Result = "
                      << res;
        }
        else
        {            
            std::cout << "Not correct expr."
                      << std::endl;
        }      
        std::cout << std::endl
                  << std::endl
                  << std::endl;
    }
    return 0;
}
6
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
01.08.2010, 13:33

Не по теме:

Mr.X, СУУУУПЕР!!!!!



Добавлено через 2 часа 8 минут
Задачка на "Римские цифры":
Даётся число n<1000. перевести и вывести на экран это число в "римской" записи. на пример:
Code
1
2
3
4
87 = LXXXVII 
219 = CCXIX 
1354 = MCCCLIV 
2673 = MMDCLXXIII
M = 1000, D =500, C =100, L=50, X=10, V=5, I=1.

---

Ещё одна задача:
Написать программу которая считывает число в двоичном формате, переводит его в десятичный, и выводит на экран (и наоборот - принимает в десятичном, и переводит в двочный)


вот решение на считывание в двоичном
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
#include <cstring>
int main()
{
    std::string s;    
    std::cin>>s;
    double sum=0;
    for(int i=s.size()-1;i>=0;i--)
    {
        if(s[s.size()-1-i]=='1') sum+=pow(2,i);
    }
    std::cout<<sum<<"\n";
    system("PAUSE");
    return 0;
}
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
01.08.2010, 14:04
Цитата Сообщение от nikkka Посмотреть сообщение
вот решение на считывание в двоичном
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
#include <cstring>
int main()
{
    std::string s;    
    std::cin>>s;
    double sum=0;
    for(int i=s.size()-1;i>=0;i--)
    {
        if(s[s.size()-1-i]=='1') sum+=pow(2,i);
    }
    std::cout<<sum<<"\n";
    system("PAUSE");
    return 0;
}
а мне вот так больше нравится:
C++
1
2
3
4
5
6
7
8
9
10
11
    std::string s;
 
    std::cin>>s;
 
    unsigned long sum = 0;
 
    for(std::string::size_type i = 0; i < s.length(); ++i)
    {
        if(s[i] == '1') 
            sum |= 1 << (s.length() - i - 1);
    }
кстати, зачем ты в своем варианте подключаешь cstring, а не string

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

C
1
2
3
4
5
6
7
8
9
10
11
12
void printwb(unsigned int X)
{
    for (int n = (sizeof(unsigned int)*8 - 1); n >= 0; n--)
    {
        printf("%x",((X>>n)&1));
        if(n%4 == 0)
        {
            printf(" ");
        }
    }
    printf("\n");
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
02.08.2010, 09:44  [ТС]
Я конечно понимаю, что это ядерный писец, но единственное что мне пришло в голову после бессонной ночи, тупо брутфорсом эту задачу делать. Пока только от 900 до 1000. Но я иду к успеху!!!

Рим. числа. Возможна острая головная боль
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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
#include <iostream>
 
int main()
{
    int x=0;
    std::cout<<"Enter n (<1000): ";
    std::cin>>x;
    int k=x/100;
    if(k)
    {
        if(x>=900&&x<1000)
        {
            std::cout<<"DCCCC";
            if(x==901)
                std::cout<<"I";
            else if(x==902)
                std::cout<<"II";
            else if(x==903)
                std::cout<<"III";
            else if(x==904)
                std::cout<<"IV";
            else if(x==905)
                std::cout<<"V";
            else if(x==906)
                std::cout<<"VI";
            else if(x==907)
                std::cout<<"VII";
            else if(x==908)
                std::cout<<"VIII";
            else if(x==909)
                std::cout<<"IX";
            if(x==910)
            {
                std::cout<<"X";
                if(x==911)
                    std::cout<<"I";
                else if(x==912)
                    std::cout<<"II";
                else if(x==913)
                    std::cout<<"III";
                else if(x==914)
                    std::cout<<"IV";
                else if(x==915)
                    std::cout<<"V";
                else if(x==916)
                    std::cout<<"VI";
                else if(x==917)
                    std::cout<<"VII";
                else if(x==918)
                    std::cout<<"VIII";
                else if(x==919)
                    std::cout<<"IX";
            }
            else if(x==920)
            {
                std::cout<<"XX";
                if(x==921)
                    std::cout<<"I";
                else if(x==922)
                    std::cout<<"II";
                else if(x==923)
                    std::cout<<"III";
                else if(x==924)
                    std::cout<<"IV";
                else if(x==925)
                    std::cout<<"V";
                else if(x==926)
                    std::cout<<"VI";
                else if(x==927)
                    std::cout<<"VII";
                else if(x==928)
                    std::cout<<"VIII";
                else if(x==929)
                    std::cout<<"IX";
            }
            else if(x==930)
            {
                std::cout<<"XXX";
                if(x==931)
                    std::cout<<"I";
                else if(x==932)
                    std::cout<<"II";
                else if(x==933)
                    std::cout<<"III";
                else if(x==934)
                    std::cout<<"IV";
                else if(x==935)
                    std::cout<<"V";
                else if(x==936)
                    std::cout<<"VI";
                else if(x==937)
                    std::cout<<"VII";
                else if(x==938)
                    std::cout<<"VIII";
                else if(x==939)
                    std::cout<<"IX";
            }
            else if(x==940)
            {
                std::cout<<"XL";
                if(x==941)
                    std::cout<<"I";
                else if(x==942)
                    std::cout<<"II";
                else if(x==943)
                    std::cout<<"III";
                else if(x==944)
                    std::cout<<"IV";
                else if(x==945)
                    std::cout<<"V";
                else if(x==946)
                    std::cout<<"VI";
                else if(x==947)
                    std::cout<<"VII";
                else if(x==948)
                    std::cout<<"VIII";
                else if(x==949)
                    std::cout<<"IX";
            }
            else if(x==950)
            {
                std::cout<<"L";
                if(x==951)
                    std::cout<<"I";
                else if(x==952)
                    std::cout<<"II";
                else if(x==953)
                    std::cout<<"III";
                else if(x==954)
                    std::cout<<"IV";
                else if(x==955)
                    std::cout<<"V";
                else if(x==956)
                    std::cout<<"VI";
                else if(x==957)
                    std::cout<<"VII";
                else if(x==958)
                    std::cout<<"VIII";
                else if(x==959)
                    std::cout<<"IX";
            }
            else if(x==960)
            {
                std::cout<<"LX";
                if(x==961)
                    std::cout<<"I";
                else if(x==962)
                    std::cout<<"II";
                else if(x==963)
                    std::cout<<"III";
                else if(x==964)
                    std::cout<<"IV";
                else if(x==965)
                    std::cout<<"V";
                else if(x==966)
                    std::cout<<"VI";
                else if(x==967)
                    std::cout<<"VII";
                else if(x==968)
                    std::cout<<"VIII";
                else if(x==969)
                    std::cout<<"IX";
            }
            else if(x==970)
            {
                std::cout<<"LXX";
                if(x==971)
                    std::cout<<"I";
                else if(x==972)
                    std::cout<<"II";
                else if(x==973)
                    std::cout<<"III";
                else if(x==974)
                    std::cout<<"IV";
                else if(x==975)
                    std::cout<<"V";
                else if(x==976)
                    std::cout<<"VI";
                else if(x==977)
                    std::cout<<"VII";
                else if(x==978)
                    std::cout<<"VIII";
                else if(x==979)
                    std::cout<<"IX";
            }
            else if(x==980)
            {
                std::cout<<"LXXX";
                if(x==981)
                    std::cout<<"I";
                else if(x==982)
                    std::cout<<"II";
                else if(x==983)
                    std::cout<<"III";
                else if(x==984)
                    std::cout<<"IV";
                else if(x==985)
                    std::cout<<"V";
                else if(x==986)
                    std::cout<<"VI";
                else if(x==987)
                    std::cout<<"VII";
                else if(x==988)
                    std::cout<<"VIII";
                else if(x==989)
                    std::cout<<"IX";
            }
            else if(x==990)
            {
                std::cout<<"XC";
                if(x==991)
                    std::cout<<"I";
                else if(x==992)
                    std::cout<<"II";
                else if(x==993)
                    std::cout<<"III";
                else if(x==994)
                    std::cout<<"IV";
                else if(x==995)
                    std::cout<<"V";
                else if(x==996)
                    std::cout<<"VI";
                else if(x==997)
                    std::cout<<"VII";
                else if(x==998)
                    std::cout<<"VIII";
                else if(x==999)
                    std::cout<<"IX";
            }
        }
        else if(x>=800&&x<900)
            std::cout<<"DCCC";
        else if(x>=700&&x<800)
            std::cout<<"DCC";
        else if(x>=600&&x<700)
            std::cout<<"DC";
        else if(x>=500&&x<600)
            std::cout<<"D";
        else if(x>=400&&x<500)
            std::cout<<"CCCC";
        else if(x>=300&&x<400)
            std::cout<<"CCC";
        else if(x>=200&&x<300)
            std::cout<<"CC";
        else if(x>=100&&x<200)
            std::cout<<"C";
    }
    return 0;
}
0
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
02.08.2010, 10:15
Lavroff, ну ничего себе...
слушай, а давай тогда прямо все числа от 1 до 1000 закодиируем, и будим писать 1000 case-ов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.08.2010, 10:15
Помогаю со студенческими работами здесь

Набор задачь для тренировки и улучшения понимания программирования
Добрый вечер всем. Если кто знает модскажите где можно найти подобный набор задачь...

Проверить на правильность и закомментировать весь код для лучшего понимания
Всем здравствуйте. Условие задачи - Заданная матрица целых чисел размером (N, N). Найти среднее арифметическое элементов в окрашенной...

Нужны задачи для тренировки
Киньте задачки на классы......а то в самоучителе, по которому я учу Сишку....приведены задачки, касающиеся только математики.....сами...

Нужны задачи для тренировки
Здравствуйте киньте пожалуйста задания по с++ для человека начинающего изучать Turbo с++

Нужны задачи для тренировки
Вот не давно был школьный этап по программирование в школе(олимпиады). Меня закинули на городскую, вот только писал ту олимпиаду на...


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

Или воспользуйтесь поиском по форуму:
400
Закрытая тема Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru