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

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 2744, средняя оценка - 4.89
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
#1

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

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

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

Список задач, решение которых присутствует в данной теме:
41
Лучшие ответы (59)
Сообщение: #857841 Сообщение: #857861 Сообщение: #858352 Сообщение: #859371 Сообщение: #860160 Сообщение: #860255 Сообщение: #860259 Сообщение: #860317 Сообщение: #860368 Сообщение: #860466 Сообщение: #860508 Сообщение: #860720 Сообщение: #861091 Сообщение: #862174 Сообщение: #862617 Сообщение: #867259 Сообщение: #870298 Сообщение: #872053 Сообщение: #876456 Сообщение: #880114 Сообщение: #882889 Сообщение: #884418 Сообщение: #886414 Сообщение: #886989 Сообщение: #887733 Сообщение: #888464 Сообщение: #888487 Сообщение: #888941 Сообщение: #888947 Сообщение: #889040 Сообщение: #889450 Сообщение: #889587 Сообщение: #891772 Сообщение: #891790 Сообщение: #891862 Сообщение: #897758 Сообщение: #897782 Сообщение: #906325 Сообщение: #907991 Сообщение: #943672 Сообщение: #943700 Сообщение: #967735 Сообщение: #1053777 Сообщение: #1054209 Сообщение: #1083853 Сообщение: #1083928 Сообщение: #1131058 Сообщение: #1131359 Сообщение: #1273743 Сообщение: #1275465 Сообщение: #1276743 Сообщение: #1279215 Сообщение: #1282583 Сообщение: #1309088 Сообщение: #1315633 Сообщение: #1366395 Сообщение: #1550164 Сообщение: #1603678 Сообщение: #1604364
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2010, 05:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задачи для тренировки и лучшего понимания (C++):

Прошу примеров для понимания INDY - C++ Builder
Уважаемые коллеги и братья по интересу. Прошу примеров использования Indy UDP Server (TIdUDPServer) и Indy UDP Client (TIdUDPClient) для...

Ищу примеры для понимания взаимодействия Callback + event - C++ WinAPI
Господа, подкиньте плиз какой-нибудь пример для понимания взаимодействия Callback+event С самими Callback функциями вроде разобрался, а...

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

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

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

Нужны простые задачи для тренировки - C++
Добрый день всем:) Наверное подобных тем как я тут сотни,но всё же. Начал изучать С++(так как необходим для универа)в дальнейшем...

1272
Mr.X
Эксперт С++
3050 / 1695 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
30.07.2010, 18:41 #376
Да, пардон, вот так правильно:
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
///////////////////////////////////////////////////////////////////////////////////
//Написать программу, которая вычисляет значение факториала n, причем:
//
//   1. n - константа времени компиляции;
//   2. Искомое значение факториала должно быть вычислено еще на стадии компиляции.
///////////////////////////////////////////////////////////////////////////////////
#include <iostream>
///////////////////////////////////////////////////////////////////////////////////
template<int i, int j = i >
struct T_fact
{
    enum 
    {        
        result  = i * T_fact<i - 1>::result
    };    
};
///////////////////////////////////////////////////////////////////////////////////
template<int i>
struct T_fact<i, 0>
{    
    enum {result = 1};        
};
///////////////////////////////////////////////////////////////////////////////////
template<int i>
struct T_fact<i, 1>
{    
    enum {result = 1};        
};
///////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::cout << "fact<0>::result = "
              << T_fact<0>::result
              << std::endl;
    
    std::cout << "T_fact<1>::result = "
              << T_fact<1>::result
              << std::endl;
 
    std::cout << "T_fact<3>::result = "
              << T_fact<3>::result
              << std::endl;
 
    std::cout << "T_fact<4>::result = "
              << T_fact<4>::result
              << std::endl;  
    return 0;
}
1
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 18:41 #377
Хохол, все верно.
А у меня с enum'ами
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 <iostream>
 
template<const unsigned n>
struct fact
{
    enum
    {
        value = n * fact<n - 1>::value
    };
};
 
template<>
struct fact<0>
{
    enum
    {
        value = 1
    };
};
 
int main()
{
    const unsigned n = 12;
    std::cout << fact<n>::value << std::endl;
    system("pause");
    return EXIT_SUCCESS;
}
2
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
30.07.2010, 18:42  [ТС] #378
Кстати. А в чем смысл на практике делать шаблон под вычисление факториала?
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 18:55 #379
Lavroff, это только пример, так что для него вряд ли найдется практическое примение (впрочем, как и для многих программ из этой темы). Что важно в нем - показать, что во время выполнения программы не тратится ни память, ни время для вычислений.
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
30.07.2010, 22:20 #380
Цитата Сообщение от 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
#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 a){ puts("DerivedClass::func(int)"); }   
        //...             
};
 
int main()
{           
    DerivedClass obj;
    obj.func(0);
    obj.func(0, 0);     // ошибка
    obj.func(0, 0, 0);  // ошибка      
   
    return 0;
}
метод func из DerivedClass перекрывает метод func и все его перегрузки из BaseClass. Каким образом можно исправить данный код чтобы в конечном итоге на экран всё-таки было выведено:
DerivedClass::func(int)
BaseClass::func(int, int)
BaseClass::func(int, int, int)
2
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
30.07.2010, 22:28  [ТС] #381
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
Хохол
Эксперт С++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
30.07.2010, 22:31 #382
Lavroff, а зачем указатель? И без него работает.
0
ForEveR
30.07.2010, 22:33  [ТС]
  #383

Не по теме:

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

0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
30.07.2010, 22:34 #384
В функции main меняться ничего естественно не должно.
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
30.07.2010, 22:35  [ТС] #385
rangerx, А это должно было быть сказано сразу. Изменить только в классе?
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
30.07.2010, 22:41 #386
Цитата Сообщение от Lavroff Посмотреть сообщение
Изменить только в классе?
0
[Freeman]
34 / 34 / 6
Регистрация: 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
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
30.07.2010, 23:04  [ТС] #388
[Freeman], А зачем? По задаче не может отличатся только регистром... А так... Сравнении без учета регистра с использованием функции tolower допустим
0
[Freeman]
34 / 34 / 6
Регистрация: 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
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
30.07.2010, 23:18  [ТС] #390
[Freeman], Первая должна выйти "DerivedClass:func(int)" по заданию насколько я понимаю

Добавлено через 1 минуту
Перекопал две книжки... Ничего не написано про то, что делать в таких случаях... Хм...
0
30.07.2010, 23:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2010, 23:18
Привет! Вот еще темы с ответами:

Какая база требуется для понимания C++? - C++
Доброго времени суток! Возникло желание научиться работать в Си, но одолели смутные сомнения. Каюсь, ничего сложнее Pascal ABC в школьные...

Нужен пример рекурсивной функции для понимания ее назначения и практической пользы - C++
Не могу понять пользу рекурсии, может ли кто привести код в пример.

Киньте задачки для тренировки - C++
Хочу порешать задачки по C++......нужны либо книжки с задачками - либо ваши примеры.....желательно (если книжки) - чтобы там и решение...

Дайте задания для тренировки - C++
День добрый. Учу C++. Я уверен, что тут есть люди которые с ним отлично знаком и работают. Можете ли вы накидать заданий, возможно из...


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

Или воспользуйтесь поиском по форуму:
390
Закрытая тема Создать тему
Опции темы

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