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

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

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

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

Список задач, решение которых присутствует в данной теме:
44
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2010, 05:53
Ответы с готовыми решениями:

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

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

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

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

1272
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 22:28  [ТС] 381
Author24 — интернет-сервис помощи студентам
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 382
Lavroff, а зачем указатель? И без него работает.
0
ForEveR
30.07.2010, 22:33  [ТС]
  #383

Не по теме:

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

0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
30.07.2010, 22:34 384
В функции main меняться ничего естественно не должно.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 22:35  [ТС] 385
rangerx, А это должно было быть сказано сразу. Изменить только в классе?
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
30.07.2010, 22:41 386
Цитата Сообщение от Lavroff Посмотреть сообщение
Изменить только в классе?
0
34 / 34 / 8
Регистрация: 07.06.2010
Сообщений: 118
30.07.2010, 23:02 387
Цитата Сообщение от 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
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 23:04  [ТС] 388
[Freeman], А зачем? По задаче не может отличатся только регистром... А так... Сравнении без учета регистра с использованием функции tolower допустим
0
34 / 34 / 8
Регистрация: 07.06.2010
Сообщений: 118
30.07.2010, 23:15 389
Цитата Сообщение от 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
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 23:18  [ТС] 390
[Freeman], Первая должна выйти "DerivedClass:func(int)" по заданию насколько я понимаю

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

Добавлено через 1 минуту
Перекопал две книжки... Ничего не написано про то, что делать в таких случаях... Хм...
Точно, не заметил
0
Эксперт С++
3224 / 1751 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.07.2010, 23:30 392
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
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 23:32  [ТС] 393
Mr.X, Браво! Кстати. Виртуал не нужны перед функциями. И без них шарашит
Вот ж блин) И виртуалки использовал, и юзинг, а совместить не догадался) Есть еще такие мозгодробительные задачки?)

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

Не по теме:

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Эксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
31.07.2010, 12:04 395
Так лучше будет
Java
1
2
3
4
5
6
class DerivedClass extends BaseClass {
    @override
    void func(int a) {
        System.out.println("DerivedClass::func(int)");
    }
};
0
Эксперт С++
3224 / 1751 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
01.08.2010, 09:26 396
Цитата Сообщение от 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 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
01.08.2010, 13:33 397

Не по теме:

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



Добавлено через 2 часа 8 минут
Задачка на "Римские цифры":
Даётся число n<1000. перевести и вывести на экран это число в "римской" записи. на пример:
Код
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
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
01.08.2010, 14:04 398
Цитата Сообщение от 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
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
02.08.2010, 09:44  [ТС] 399
Я конечно понимаю, что это ядерный писец, но единственное что мне пришло в голову после бессонной ночи, тупо брутфорсом эту задачу делать. Пока только от 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 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
02.08.2010, 10:15 400
Lavroff, ну ничего себе...
слушай, а давай тогда прямо все числа от 1 до 1000 закодиируем, и будим писать 1000 case-ов
0
02.08.2010, 10:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2010, 10:15
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
400
Закрытая тема Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru