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

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

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

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

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

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

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

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

1272
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
30.07.2010, 15:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Freeman Посмотреть сообщение
Может самому Страуструпу письмо отправить, спросить, он то точно знает
Не факт. Все решает комитет по стандартизации. Просто сегодня ночью выяснилось, что в разных источниках приоритеты инкрементов то разные, то одинаковые. Я поэтому и спросил, почему Mr.X считает что приоритеты у них разные, ибо в стандарте я по этому поводу ничего не нашел, возможно, проглядел.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.07.2010, 15:54
Цитата Сообщение от Nameless One Посмотреть сообщение
Вот такая задачка:
Какой должен быть прототип у функции func, чтобы при передаче ей статического массива функция имела информацию о типе и размере массива:
C++
1
2
int arr[2][2] = {{0, 1}, {2, 3}};
func(arr);
Мое решение
//////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <typeinfo>
//////////////////////////////////////////////////////////////////////////////
template<class T>
void func(T& p)
{
std::cout << typeid(p).name()
<< std::endl;
}
//////////////////////////////////////////////////////////////////////////////
int main()
{
int arr[2][2] = {{0, 1}, {2, 3}};
func(arr);
return 0;
}

0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 15:57
Mr.X, в общем-то, использовать шаблон для информации о типе было достаточно. А как узнать размер массива для использования в программе (sizeof'ом пользоваться нельзя)?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.07.2010, 16:07
Цитата Сообщение от Nameless One Посмотреть сообщение
Mr.X, в общем-то, использовать шаблон для информации о типе было достаточно. А как узнать размер массива для использования в программе (sizeof'ом пользоваться нельзя)?
Давайте уточним. Размерность массива (одно, двух или трехмерный) у нас тоже считается неизвестной?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 16:15
Mr.X, размерность массива фиксирована (в данном случае - двумерный). Под размером здесь имеется в виду число строк и столбцов двумерного массива.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
30.07.2010, 16:28
жуткий код
зато информации об аргументе больше.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
template <typename T, const size_t cols, const size_t rows>
void func (T (&arr)[cols][rows])
{
   std::cout<< "cols: "    << cols << ", rows: " << rows << std::endl
            << "summ: "    << cols*rows << std::endl
            << "sizeof: "  << sizeof(arr) << std::endl;
}
 
int main() {
   int array[4][32];
   func(array);
   return 0;
}
http://liveworkspace.org/code/... 5e8ae012f4
1
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 16:32
niXman, в принципе, все правильно.
Вот само решение
C++
1
2
template<class T, size_t n, size_t m>
void func(T (&t)[n][m]);
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
30.07.2010, 16:36
никогда бы на практике такого не написал

Добавлено через 2 минуты
Цитата Сообщение от Nameless One Посмотреть сообщение
niXman, в принципе, все правильно.
Вот само решение
C++
1
2
template<class T, size_t n, size_t m>
void func(T (&t)[n][m]);
подкорректировал.
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 16:44
Еще на шаблоны. Написать программу, которая вычисляет значение факториала n, причем:
  1. n - константа времени компиляции;
  2. Искомое значение факториала должно быть вычислено еще на стадии компиляции.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.07.2010, 18:21
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 * (i - 1)
    };    
};
///////////////////////////////////////////////////////////////////////////////////
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 << "T_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;
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 18:23  [ТС]
Не знаю, что я тут натворил... Нужен макрос или не нужен... Нужен const или не нужен... Но как-то так. Если не прав - скажите.

Вот этого чуток не понял: Искомое значение факториала должно быть вычислено еще на стадии компиляции.
Функция должна быть константной или что?

Fact
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
#define Factorial(N,Factor) for(int i=1;i<=(int)N;i++){Factor=Factor*i;}
 
template<class T>
const T Fact (const T N)
{
    T Factor=1;
    Factorial(N,Factor);
    return Factor;
}
 
int main()
{
    const int N=7;
    std::cout<< Fact(N) <<'\n';
    return 0;
}
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 18:26
Цитата Сообщение от Lavroff Посмотреть сообщение
Функция должна быть константной или что?
Значение факториала должно быть вычислено еще до запуска программы.

Mr.X, 4! = 24, а не 12.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 18:26  [ТС]
Nameless One, Посмотрите мой код. Не верен?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 18:32
Lavroff, Если значение факториала - константа времени компиляции, значит, это значение может быть размером статического массива, т.е. запись "int arr[Fact(7)];" должна компилироваться. Так что у тебя не правильно, а вот Mr.X пошел по правильному пути, только вот напутал чего-то

Добавлено через 1 минуту
Цитата Сообщение от Lavroff Посмотреть сообщение
Функция должна быть константной или что?
Вызов функций может происходить только во время выполнения программы, так что вычисленное значение никак не может быть константой времени компиляции.
1
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
30.07.2010, 18:36
По мотивам кода Mr.X.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template<int n>
struct fact
{
    static const int val = n*fact<n-1>::val;
};
 
template<>
struct fact<0>
{
    static const int val = 1;   
};
 
int main()
{
    cout << fact<5>::val;
}
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.07.2010, 18:41
Да, пардон, вот так правильно:
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
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 18:41
Хохол, все верно.
А у меня с 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
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.07.2010, 18:42  [ТС]
Кстати. А в чем смысл на практике делать шаблон под вычисление факториала?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 18:55
Lavroff, это только пример, так что для него вряд ли найдется практическое примение (впрочем, как и для многих программ из этой темы). Что важно в нем - показать, что во время выполнения программы не тратится ни память, ни время для вычислений.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
30.07.2010, 22:20
Цитата Сообщение от 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.07.2010, 22:20
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
380
Закрытая тема Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru