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

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

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

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

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

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

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

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

1272
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.01.2011, 18: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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <fstream>
 
int main()
{
        std::ifstream ifs("input.txt");
        std::ofstream ofs("output.txt");
        std::cin.rdbuf(ifs.rdbuf());
        std::cout.rdbuf(ofs.rdbuf());
        unsigned long long K; 
             int N;
        std::cin>>K>>N;
        unsigned long long res=K;
        for(int i=1; i<N; ++i)
        {
                unsigned long long To_five=K/5;
                unsigned long long To_three=0;
                if(To_five)
                        K-=5*To_five;
                if(K)
                {
                        while(K)
                        {
                                if(K%3 == 0)
                                {
                                        To_three+=K/3;
                                        K%=3;
                                        break;
                                }
                                if(To_five)
                                {
                                        K+=5;
                                        --To_five;
                                }
                        }
                }
                res+=To_three*5+To_five*9;
                K=res;
        }
        std::cout<<res<<'\n';
        return 0;
}
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
16.01.2011, 18:43
ForEveR, Превышение времени на 5-ом тесте. Сейчас буду разбираться.

Добавлено через 3 минуты
ForEveR, Контрпример: 4 2
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.01.2011, 18:46  [ТС]
valeriikozlov, АГа... Понято. Попробую исправить.
А кстати какой в нем должен быть ответ? Остаток 1 в любом случае будет в первом году
Посчитал на бумаге вышло 24...
Примерно таким макаром.

Смотрим кол-во 5-к - 0.
Смотрим делится ли на 3 без остатка - нет.
Смотрим есть ли 5-и - нет.
Делим на 3 - получаем 1. Итого в первый год изготовили 5 роботов. Итого 9 всего. 4 прошлых + 5 в этом году.

Смотрим кол-во 5-к - 1.
Смотрим делится ли полученный остаток (4) на 3 без остатка - нет.
Смотрим есть ли 5-и - да.
Прибавляем 5-у к кол-ву роботов - 9.
Уменьшаем кол-во пятерок - 0.
Смотрим делится ли на 3 - да.
9/3=3.
3*5.
9+15=24.

В расчетах мог ошибиться, но идея верна?
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
16.01.2011, 18:53
ForEveR, Здесь вариант такой (чтобы максимальное кол-во получилось): одна тройка которая даст 5 новых. И в начале второго года всего будет 9.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.01.2011, 18:57  [ТС]
Считал для трех лет.. Для двух будет 9 по идее. Верно?

Добавлено через 45 секунд
Ясно. Вот код. ПРоверьте)

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 ifs("input.txt");
        std::ofstream ofs("output.txt");
        std::cin.rdbuf(ifs.rdbuf());
        std::cout.rdbuf(ofs.rdbuf());
        unsigned long long K; 
             int N;
        std::cin>>K>>N;
        unsigned long long res=K;
        for(int i=1; i<N; ++i)
        {
                unsigned long long To_five=K/5;
                unsigned long long To_three=0;
                if(To_five)
                        K-=5*To_five;
                if(K)
                {
                        while(K)
                        {
                                if(K%3 == 0)
                                {
                                        To_three+=K/3;
                                        K%=3;
                                        break;
                                }
                                if(To_five)
                                {
                                        K+=5;
                                        --To_five;
                                }
                                else
                                {
                                    To_three+=K/3;
                                    break;
                                }
                        }
                }
                res+=To_three*5+To_five*9;
                K=res;
        }
        std::cout<<res<<'\n';
        return 0;
}
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
16.01.2011, 19:11
ForEveR, неправильный ответ на 6-ом тесте, сейчас еще посмотрю.

Добавлено через 6 минут
ForEveR, Я только сейчас заметил: У Вас в коде вообще не учтено -
каждый робот живет ровно три года после сборки.
Тут мне кажется без массива или вектора не обойтись.

Добавлено через 19 секунд
ForEveR, Я только сейчас заметил: У Вас в коде вообще не учтено -
каждый робот живет ровно три года после сборки.
Тут мне кажется без массива или вектора не обойтись.
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.01.2011, 19:36  [ТС]
valeriikozlov, Оу фак. А ведь и правда. Я это условие как-то тоже не заметил...

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

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
#include <iostream>
#include <fstream>
#include <vector>
 
int main()
{
        std::vector<unsigned long long> vec;
        std::ifstream ifs("input.txt");
        std::ofstream ofs("output.txt");
        std::cin.rdbuf(ifs.rdbuf());
        std::cout.rdbuf(ofs.rdbuf());
        unsigned long long K; 
        int N;
        std::cin>>K>>N;
        unsigned long long res=K;
        vec.push_back(res);
        for(int i=1; i<N; ++i)
        {
                unsigned long long To_five=K/5;
                unsigned long long To_three=0;
                if(To_five)
                        K-=5*To_five;
                if(K)
                {
                        while(K)
                        {
                                if(K%3 == 0)
                                {
                                        To_three+=K/3;
                                        K%=3;
                                        break;
                                }
                                if(To_five)
                                {
                                        K+=5;
                                        --To_five;
                                }
                                else
                                {
                                    To_three+=K/3;
                                    break;
                                }
                        }
                }
                vec.push_back(To_three*5 + To_five* 9);
                res+=To_three*5+To_five*9;
                if(i >= 3)
                    res-=vec[i-3];
                K=res;
        }
        std::cout<<res<<'\n';
        return 0;
}
1
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
16.01.2011, 19:41
ForEveR, Все тесты Ваш код прошел.
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.01.2011, 21:10  [ТС]
Вопрос
valeriikozlov, По поводу задачи с планетами... Посидел - подумал.. На бумажке порисовал... Все вцелом понятно как делать (не факт, что в 5 секунд), но не могу вспомнить алгоритм для поиска путей в НЕ взвешенном графе... Название не подкините? Вроде бы поиск в ширину может подойти, но я не уверен
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
16.01.2011, 21:30
ForEveR, Не помню название. Если имеете ввиду алгоритм для поиска всех путей, то по моему подойдет поиск в глубину. Но по опыту скажу, если искать все пути в графе для этой задачи, то по времени там не уложитесь.
1
 Аватар для DarK_Fifti'S
2 / 2 / 0
Регистрация: 16.01.2011
Сообщений: 23
16.01.2011, 22:07
ForEveR, у меня есть задачка, могу изложить? или не до неё сейчас?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.01.2011, 22:10  [ТС]
DarK_Fifti'S, Если не обычная студ. лаба - то пожалуйста. Иначе - лучше в личку или создать отдельную тему на форуме
0
 Аватар для DarK_Fifti'S
2 / 2 / 0
Регистрация: 16.01.2011
Сообщений: 23
16.01.2011, 22:24
ForEveR, программка, мы её называли "устный счет". Программа последовательно выдает арифметические задачи(типа: а+(-,:,*)b, ) заданного уровня сложности, при получении от пользователя ответа выдает сообщения: "правильно", "не правильно". Количество задач задается заранее пользователем. В конце программы проводится подсчет результатов с учетом времени и количества правильных ответов и выставляется оценка.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.01.2011, 23:34  [ТС]
Полагаю имелось ввиду нечто вроде этого.
Не учтены дробные числа при делении.
Генерация рандомных отрицательных чисел.
Уровня 3, можно развить и под большее.

Но мне лень)

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
 
struct lev
{
    enum level {easy, middle, hard};
    static level inttolvl(int one)
    {
        if(one >= 0 && one < size)
            return level(one);
        else
            throw std::logic_error("There is no such level");
    }
    static int const size=3;
};
 
struct oper
{
    enum operations {add='+', sub='-', div='/', mul='*'};
    static operations chartoop(char one)
    {
        return operations(one);
    }
    static char optochar(operations one)
    {
        return char(one);
    }
};
 
struct minmax
{
    int max, min;
    minmax(int ma, int mi):max(ma), min(mi)
    {
    }
    minmax()
    {
    }
};
 
struct numbers
{
    int first, second;
    numbers(int f, int s):first(f), second(s)
    {
    }
    numbers()
    {
    }
};
 
minmax find_minmax(const lev::level& lvl)
{
    minmax mm;
    switch(lvl)
    {
        case lev::easy:
        {
            mm.max=10;
            mm.min=1;
        }
        break;
        case lev::middle:
        {
            mm.max=100;
            mm.min=10;
        }
        break;
        case lev::hard:
        {
            mm.max=1000;
            mm.min=100;
        }
        break;
    }
    return mm;
}
 
int return_result(const numbers& numbs, const oper::operations& op)
{
    int result=0;
    switch(op)
    {
    case oper::add:
        {
            result=numbs.first+numbs.second;
        }
        break;
    case oper::sub:
        {
            result=numbs.first-numbs.second;
        }
        break;
    case oper::mul:
        {
            result=numbs.first*numbs.second;
        }
        break;
    case oper::div:
        {
            if(numbs.second)
                result=numbs.first/numbs.second;
            else
                result=0;
        }
        break;
    }
    return result;
}
 
int main()
{
    srand(static_cast<unsigned>(time(0)));
    lev::level lvl;
    while(1)
    {
        int level;
        std::cout<<"Enter your level (0 - easy, 1 - middle, 2 - hard)\n";
        std::cin>>level;
        try
        {
            lvl=lev::inttolvl(level);
            break;
        }
        catch(const std::exception& e)
        {
            std::cout<<e.what()<<'\n';
        }
    }
    const std::string opers="+-*/";
    oper::operations op;
    minmax mm=find_minmax(lvl);
    numbers numbs;
    int numb_of_tryes=0;
    std::cout<<"Enter numb of tryes: ";
    std::cin>>numb_of_tryes;
    int good_ans=0, bad_ans=0;
    for(int i=0; i<numb_of_tryes; ++i)
    {
        numbs.first=mm.min+rand()%(mm.max-mm.min);
        numbs.second=mm.min+rand()%(mm.max-mm.min);
        op=oper::chartoop(opers[rand()%opers.size()]);
        int right_ans=return_result(numbs, op);
        int ans=0;
        std::cout<<numbs.first<<oper::optochar(op)<<numbs.second<<" = "<<"?\n";
        std::cin>>ans;
        if(ans == right_ans)
        {
            std::cout<<"Right!\n";
            good_ans++;
        }
        else
        {
            std::cout<<"Wrong\n";
            bad_ans++;
        }
    }
    std::cout<<"Quetions: "<< numb_of_tryes<<". Right answers: "<< good_ans
        <<". Bad answers: "<< bad_ans <<'\n';
    std::cout<<"Your note is: ";
    double procents=good_ans*100.0/numb_of_tryes;
    if(procents < 50)
        std::cout<<"2\n";
    else if(procents >= 50 && procents < 65)
        std::cout<<"3\n";
    else if(procents >= 65 && procents < 90)
        std::cout<<"4\n";
    else if(procents >= 90 && procents <= 100)
        std::cout<<"5\n";
    return 0;
}
1
 Аватар для DarK_Fifti'S
2 / 2 / 0
Регистрация: 16.01.2011
Сообщений: 23
16.01.2011, 23:44
ForEveR, у тебя Microsoft Visual C++ 6.0?...у меня не компилируется, две ошибки, я своим опытом не могу так сразу найти их
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.01.2011, 23:51  [ТС]
DarK_Fifti'S, Нет. У меня Visual Studio 2008, 2010... 2005 еще где-то валяется. Советую компилятор новее)
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
17.01.2011, 21:35
Свадьба
(Время: 1 сек. Память: 16 Мб Сложность: 32%)

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

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

В первой строке входного файла INPUT.TXT записано целое число N — количество молодых людей, без памяти влюбленных в Горгону (1 < N <= 40). Далее следует N чисел — сумма денег на счету каждого молодого человека. В последней строке записано целое число А — сумма денег на счету Горгоны. Суммы денег на счету — целые неотрицательные числа, не превосходящие 10^9.
Выходные данные

В выходной файл OUTPUT.TXT выведите единственное число — максимальную сумму денег, которой сможет обладать Горгона после своей махинации. Ответ выводите с точностью до шести знаков ровно в формате без мантиссы.
Пример:
INPUT.TXT

2
5 10
5
OUTPUT.TXT
7.500000

Пример:
INPUT.TXT

3
1 3 2
0
OUTPUT.TXT
2.125000
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
17.01.2011, 22:10
valeriikozlov, Хм, а какой подвох ? Или просто делить каждую суму на два и додавать до общей сумы ?
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
17.01.2011, 22:16
asics, Нужно таким способом найти максимально возможную сумму. Попробуйте на примерах. Кстати я здесь не вижу например такого примера:
2
2 10
5
Что должно получится?
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
17.01.2011, 22:19
valeriikozlov, 6 ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.01.2011, 22:19
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
1120
Закрытая тема Создать тему
Новые блоги и статьи
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