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

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

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

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

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

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

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

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

1272
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
21.01.2011, 01:17
Студворк — интернет-сервис помощи студентам
Данный код,
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
void func(int i) { std::cout << "f(int)"; }
void func(char* ch) { std::cout << "f(char*)"; }
 
int main()
{
    func(0)
    func(NULL);
    return 0;
}
без явного приведения типа, вызовет функцию void func(int i) дважды. Как нетрудно заметить макрос NULL со своей задачей(нулевого указателя) не справился. В грядущем Стандарте будет такая штука как nullptr, которая решит эту проблему. Собственно задание: реализовать нечто подобное nullptr средствами самого C++, чтобы в итоге func(nullptr); всётаки вызвал функцию void func(char* ch)
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
21.01.2011, 01:42
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
#include <iostream>
 
void func(int i) { std::cout << "f(int)"; }
void func(char* ch) { std::cout << "f(char*)"; }
 
class NullptrType
{
public:
    template <class X>
    operator X* () const
    {
        return 0;
    }
 
    template <class T, class C>
    operator T C::* () const
    {
        return 0;
    }
 
    static NullptrType const& _the()
    {
        static NullptrType const the;
        return the;
    }
 
private:
    NullptrType()
    {
    }
 
    void operator &();
};
 
namespace
{
    NullptrType const& _nullptr = NullptrType::_the();
}
 
int main()
{
    func(0);
    func(_nullptr);
    return 0;
}
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
21.01.2011, 02:11
Цитата Сообщение от asics Посмотреть сообщение
Посмтори(чесно, код не мой)
А подумать самому? Вообще, приведённый код в принципе правильный(как вариант) за исключением 32 строки.
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
21.01.2011, 15:08
rangerx, а разбор данной задачи будет?
0
22.01.2011, 13:48

Не по теме:

no0ker, разбаловал вас valeriikozlov)))

0
22.01.2011, 14:54

Не по теме:

silent_1991,есть маленько. хотя присутствие в этом разделе разбора задачи, не считаю чем то уж совсем выходящим за рамки приличия. тем более, что ажиотажа среди пытающихся ее решить не наблюдаю.

0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
22.01.2011, 19:25
Цитата Сообщение от no0ker Посмотреть сообщение
а разбор данной задачи будет?
А что собственно тут разбирать? asics код привёл, там всё довольно просто. Могу немного другой вариант написать разве что...
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
22.01.2011, 19:36
rangerx, ну, в двух словах объяснить почему null не справляется со своей задачей. и в чем основная идея кода asics. может быть ссылку дать по теме. или предложить свой вариант решения проблемы.
хотя, конечно же, можно просто отослать на яндекс.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
22.01.2011, 21:35
Цитата Сообщение от no0ker Посмотреть сообщение
ну, в двух словах объяснить почему null не справляется со своей задачей.
Потому что NULL это обычный макрос, в C++ имеющий вид
C++
1
#define NULL 0
Т.е. обычный 0. Между вызовом func(0) и func(NULL) нет никакой разницы.
Цитата Сообщение от no0ker Посмотреть сообщение
и в чем основная идея кода asics
Идея состоит в создании класса с шаблонными операторами преобразования: один для простого указателя, другой для указателя на член класса. Адрес у объекта этого класса(нулевого указателя) брать нельзя поэтому функция operator& помещена в секцию private и оставлена без реализации. Объект данного класса должен иметься только в одном экземпляре, для этого конструктор объявлен в закрытой части класса, а сам объект создаётся с помощью статической функции, которая возвращает константную ссылку на объявленный в ней статический константный объект. Вот собственно и всё. В результате:
1)_nullptr автоматичеки преобразуется в тип указателя, которому его пытаются присвоить;
2) сам объект на который ссылается _nullptr сущетсвует в единственном экземпляре(в виде статической локальной переменной, которую возвращает соответствующая статическая функция), других объектов, за счёт помещённого в секцию private конструктора, создать нельзя;
3) функция взятия адреса у объекта на который ссылкется _nullptr запрещена.
Надеюсь объяснил понятно...
У Майерса в книге "Эффективное использование C++" есть более простая реализация подобного класса.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const class
{
    private:
        void operator&() const; // в предыдущем варианте это функция объявлена без const
 
    public:
        template<typename T>
        operator T*() const
        {
            return 0;
        }
 
        template<typename T, typename C>
        operator T C::*() const
        {
            return 0;
        }
}nullptr = {};
7
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
24.01.2011, 21:01
Апельсины
(Время: 1 сек. Память: 16 Мб Сложность: 31%)

Катя решила пригласить к себе в гости n друзей. Так как ее друзья очень любят фрукты, то в качестве угощения для них она купила m одинаковых апельсинов.

Она хочет разрезать каждый апельсин на одинаковое число равных долек так, чтобы их можно было распределить между гостями (сама Катя апельсины есть не будет), и всем гостям досталось поровну долек.

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

Входной файл INPUT.TXT содержит два положительных целых числа n и m (1 <= n, m <= 10^9).
Выходные данные

В выходной файл OUTPUT.TXT выведите ответ на задачу.
Пример:
INPUT.TXT

2 5
OUTPUT.TXT
2

Пример:
INPUT.TXT

2 4
OUTPUT.TXT
1
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
24.01.2011, 21:19
Если так:
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
#include <iostream>
#include <fstream>
 
typedef long int T_num;
 
T_num NOD(T_num a, T_num b)
{
    while(a > 0 && b > 0)
 
        if(a > b)
            a %= b;
 
        else
            b %= a;
 
    return a + b;
}
 
int main()
{
    T_num n, m;
    std::ifstream ifs("INPUT.TXT");
    std::ofstream ofs("OUTPUT.TXT");
 
    ifs >> n >> m;
    ofs << ( n / NOD(n, m));
    return 0;
}
1
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
24.01.2011, 21:35
asics, Все тесты пройдены.

Добавлено через 10 минут
Чувствую задача была очень легкой (даже разбора не требуется), тогда чуть посложнее:
Последняя цифра N!
(Время: 1 сек. Память: 16 Мб Сложность: 39%)

Требуется найти последнюю ненулевую цифру числа N! = 1*2*3*…*N.
Входные данные

Входной файл INPUT.TXT содержит единственное натуральное число N (N<=9999).
Выходные данные

В выходной файл OUTPUT.TXT выведите ответ на задачу.
Пример
INPUT.TXT

1
OUTPUT.TXT
1

Пример
INPUT.TXT

5
OUTPUT.TXT
2
2
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.01.2011, 00:52
Требуется найти последнюю ненулевую цифру числа N! = 1*2*3*…*N.
Входные данные
Входной файл INPUT.TXT содержит единственное натуральное число N (N<=9999).
Выходные данные
В выходной файл OUTPUT.TXT выведите ответ на задачу.
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
#include <fstream>
 
long fact( int n )
{
    return n - 1 ? n*fact(n-1) : 1;
}
 
int main()
{
    std::ifstream inf("INPUT.TXT");
    int N, result;
    inf >> N;
    long n = fact( N );
    if( N > 3 ) 
    {
    while( !( n % 10 ) ) n /= 10;
    result = n % 10;
    }
    else result = n;
    std::ofstream outf("OUTPUT.TXT");
    outf << result;
    inf.close();
    outf.close();
    return 0;
}
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
25.01.2011, 00:57
Maxwe11, Ты в самом деле думаеш, что в long поместиться факториал числа 9999 ? Оо
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.01.2011, 01:05
можно дописать double ))
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
25.01.2011, 01:06
Maxwe11, Ты издиваешся ?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.01.2011, 01:34
к лонгу дописать double получится long double ну или long long

Добавлено через 25 минут
проверил на больших числах long long дает сбои), окончательный вариант)
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
#include <fstream>
 
__int64 fact( int n )
{
    return n - 1 ? n * fact(n - 1) : 1;
}
 
int main()
{
    std::ifstream inf("INPUT.TXT");
    int N, result;
    inf >> N;
    __int64 n = fact( N );
    if( N > 3 ) 
    {
    while( !( n % 10 ) ) n /= 10;
    result = n % 10;
    }
    else result = n;
    std::ofstream outf("OUTPUT.TXT");
    outf << result;
    inf.close();
    outf.close();
    return 0;
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
25.01.2011, 02:27  [ТС]
Maxwe11, Не влезет. Тут на длинную арифметику
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
25.01.2011, 05:32
что значит последнюю цифру? то есть ту которая отвечает за единицы? или с другой стороны - которая отвечает за количество стомильонмильярдов?
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
25.01.2011, 06:01
no0ker, Для числа 123456789000 - последняя цифра это 0, а последняя ненулевая 9

Добавлено через 40 секунд
Т.е. нам нужно найти как раз последнюю ненулевую

Добавлено через 10 минут
Цитата Сообщение от ForEveR Посмотреть сообщение
Maxwe11, Не влезет. Тут на длинную арифметику
Даю подсказку: я в своем решении длинную арифметику не использовал. Обошелся простым int. Например если N большое, то при его вычислении последние цифры будут нули. И чем дальше, тем этих нулей больше. А на значение последней ненулевой цифры эти нули не окажут влияния.
(Подсказка не полная, я бы сказал на половину).
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2011, 06:01
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
1160
Закрытая тема Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru