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

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

15.07.2010, 05:53. Показов 503056. Ответов 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
Закрытая тема Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru