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

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

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

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

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

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

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

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

1272
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.01.2011, 21:01
Студворк — интернет-сервис помощи студентам
Ааа, вон оно как... Интересно, что же ему там не нравится...
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
11.01.2011, 21:05
silent_1991, я тоже сейчас это смотрю.
1
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
11.01.2011, 21:07
silent_1991, используете char result[8], хотя ответ может быть например 7777777777 (10 семерок).
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.01.2011, 21:14
Хохол, не, это в первом варианте (когда в задании было сказано N < 109), потом изменил на 31.

Добавлено через 4 минуты
А так?

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
#include <iostream>
#include <fstream>
 
int main()
{
    std::ifstream input("input.txt");
    std::ofstream output("output.txt");
 
    int number;
    char result[31];
    int len = 0;
 
    input >> number;
 
    input.close();
 
    if (number == 0)
    {
        output << 0;
 
        return 0;
    }
 
    if (number <= 9)
    {
        output << number;
 
        return 0;
    }
 
    for (int div = 9; div >= 2; --div)
    {
        while (number % div == 0)
        {
            result[len++] = div + '0';
            number /= div;
        }
    }
 
    if (number != 1)
        output << -1;
    else
    {
        char temp;
 
        for (int i = 0; i < len; ++i)
        {
            for (int j = len - 1; j > i; --j)
            {
                if (result[j - 1] > result[j])
                {
                    temp = result[j - 1];
                    result[j - 1] = result[j];
                    result[j] = temp;
                }
            }
        }
 
        result[len] = '\0';
 
        output << result;
    }
 
    return 0;
}
1
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
11.01.2011, 21:17
silent_1991, Accepted. Все тесты прошел код.
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.01.2011, 21:18
Наконец-то... самое интересно, я даже не понял, что поменял... Вроде так, косметический ремонт сделал только... Ну и Бог с ним)))
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
11.01.2011, 21:36
Цитата Сообщение от asics Посмотреть сообщение
А теперь, попросил бы, росказать правильный алгоритм.
Правильный алгоритм привели Хохол и silent_1991.
Отдельная ситуация с N==0 и N==1 (ответы 10 и 1 соответственно).
Теперь любое число можно представить по разному. Например число 8 можно представить так:
2*2*2
4*2
2*4
8
Естественно нас устроит вариант 8 (нужно самое минимальное натуральное число).
Поэтому нужно находить делители числа начиная от 9 до 2 (именно в таком порядке - тогда у нас получится минимальный по количеству набор цифр, которые можно перемножить и получить число N). А выводить эти цифры нужно в обратном порядке (с минимального до максимального).
Перебор который предложен в Вашем алгоритме не пройдет все тесты. Простой пример:
N=244140625
ответ: 555555555555
Т.е. перебором нужно охватить большой диапазон и по времени тогда не уложимся.

Добавлено через 2 минуты
silent_1991,
Вот по моему самое главное что поменяли:

Цитата Сообщение от silent_1991 Посмотреть сообщение
if (number != 1)
output << -1;
А в предыдущей версии, например N=26
Ответ получался 2.
По-моему так.
3
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.01.2011, 21:37
Цитата Сообщение от valeriikozlov Посмотреть сообщение
самое главное что поменяли
точно)))
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
12.01.2011, 00:27  [ТС]
задачка тупо на знание синтаксиса...
Что нужно добавить чтобы код сработал?
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>
template<class T>
class Some
{
public:
#define T 0
    virtual void print()=T;
    T foo()
    {
    }
};
 template<class T>
class Der:public Some<T>
{
public:
    void print()
    {
        std::cout<<"Der\n";
    }
};
 
int main()
{
     Some<void>* z;
     z=new Der<void>;
     z->print();
     return 0;
}
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
12.01.2011, 01:00
ForEveR,
Так?
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>
template<class T>
class Some
{
public:
#define T_ 0
    virtual void print()=T_;
    T foo()
    {
    }
};
 template<class T>
class Der:public Some<T>
{
public:
    void print()
    {
        std::cout<<"Der\n";
    }
};
 
int main()
{
     Some<void>* z;
     z=new Der<void>;
     z->print();
     return 0;
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
12.01.2011, 01:10  [ТС]
asics, М. Я же писал добавить а не и3менить)
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
12.01.2011, 05:14
ForEveR,
а так?
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>
template<class T>
class Some
{
public:
#define T 0
    virtual void print()=T;
#undef T
    T foo()
    {
    }
};
 template<class T>
class Der:public Some<T>
{
public:
    void print()
    {
        std::cout<<"Der\n";
    }
};
 
int main()
{
     Some<void>* z;
     z=new Der<void>;
     z->print();
     return 0;
}
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
12.01.2011, 11:36  [ТС]
Nameless One, Именно.
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
12.01.2011, 19:34
Максимальная подпоследовательность
(Время: 1 сек. Память: 16 Мб Сложность: 38%)

Дана числовая последовательность, требуется найти длину наибольшей возрастающей подпоследовательности.
Входные данные

В первой строке входного файла INPUT.TXT записано число N - длина последовательности (1 <= N <= 1000). Во второй строке записана сама последовательность (через пробел). Числа последовательности - целые числа, не превосходящие 10000 по модулю.
Выходные данные

В выходной файл OUTPUT.TXT требуется вывести наибольшую длину возрастающей подпоследовательности.
Пример:
INPUT.TXT

6
3 29 5 5 28 6
OUTPUT.TXT
3
От себя: числа в подпоследовательности могут идти не друг за другом (для приведенного примера: 3 5 28).
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
12.01.2011, 19:59
а можно напишу алгоритм примерный решения на словах, для того, что бы определиться в каком направлении думать? или можно писать только код? =(
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
12.01.2011, 20:04
no0ker, дело в том что я знаю подходящий алгоритм, который прошел все тесты, только который я написал сам. Если Ваш алгоритм будет отличаться от моего, то чтобы проверить его (особенно по времени) мне придется написать самому код.
Просто я не уверен что алгоритм, которым я использовал является единственным.
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
12.01.2011, 20:05
no0ker, В гугле этих алгоритмов полным-полно, так-что нет резона копи/пастить.
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
12.01.2011, 20:08
no0ker, В общем лучше:
Цитата Сообщение от no0ker Посмотреть сообщение
или можно писать только код?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.01.2011, 21:42
valeriikozlov, вроде так...

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
#include <iostream>
#include <fstream>
 
int main()
{
    std::ifstream fin("input.txt");
 
    int nums[1000];
    int N;
 
    fin >> N;
 
    for (int i = 0; i < N; ++i)
        fin >> nums[i];
 
    fin.close();
 
    int max_len = 1;
    int current_len;
    int index;
 
    for (int i = 0; i < N; ++i)
    {
        for (int j = i; j < N; j++)
        {
            current_len = 1;
            index = i;
 
            for (int k = j + 1; k < N; ++k)
            {
                if (nums[index] < nums[k])
                {
                    ++current_len;
                    index = k;
                }
            }
 
            max_len = max_len > current_len ? max_len : current_len;
        }
    }
 
    std::ofstream fout("output.txt");
 
    fout << max_len;
 
    return 0;
}
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
12.01.2011, 22:03
Извиняюсь за небольшую задержку. Тестирующая система немного зависла.

silent_1991, Неправильный ответ на 2-ом тесте.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2011, 22:03

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
1080
Закрытая тема Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru