Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 2744, средняя оценка - 4.89
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
#1

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

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

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

Список задач, решение которых присутствует в данной теме:
Лучшие ответы (59)
Сообщение: #857841 Сообщение: #857861 Сообщение: #858352 Сообщение: #859371 Сообщение: #860160 Сообщение: #860255 Сообщение: #860259 Сообщение: #860317 Сообщение: #860368 Сообщение: #860466 Сообщение: #860508 Сообщение: #860720 Сообщение: #861091 Сообщение: #862174 Сообщение: #862617 Сообщение: #867259 Сообщение: #870298 Сообщение: #872053 Сообщение: #876456 Сообщение: #880114 Сообщение: #882889 Сообщение: #884418 Сообщение: #886414 Сообщение: #886989 Сообщение: #887733 Сообщение: #888464 Сообщение: #888487 Сообщение: #888941 Сообщение: #888947 Сообщение: #889040 Сообщение: #889450 Сообщение: #889587 Сообщение: #891772 Сообщение: #891790 Сообщение: #891862 Сообщение: #897758 Сообщение: #897782 Сообщение: #906325 Сообщение: #907991 Сообщение: #943672 Сообщение: #943700 Сообщение: #967735 Сообщение: #1053777 Сообщение: #1054209 Сообщение: #1083853 Сообщение: #1083928 Сообщение: #1131058 Сообщение: #1131359 Сообщение: #1273743 Сообщение: #1275465 Сообщение: #1276743 Сообщение: #1279215 Сообщение: #1282583 Сообщение: #1309088 Сообщение: #1315633 Сообщение: #1366395 Сообщение: #1550164 Сообщение: #1603678 Сообщение: #1604364
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2010, 05:53     Задачи для тренировки и лучшего понимания
Посмотрите здесь:
C++ Элементарные программы, для лучшего понимания языка...
Нужны задачи для тренировки C++
Нужны задачи для тренировки C++
C++ Нужны простые задачи для тренировки
C++ Какая база требуется для понимания C++?
C++ Builder Прошу примеров для понимания INDY
C++ Нужен пример рекурсивной функции для понимания ее назначения и практической пользы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
03.08.2010, 11:13  [ТС]     Задачи для тренировки и лучшего понимания #461
neske, Кстати. Там так и должно быть std::copy? Ибо у меня не компилится... Правда может быть потому что я контейнер так загнать пытаюсь.
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
03.08.2010, 11:14     Задачи для тренировки и лучшего понимания #462
Так и должно быть, только:

C++
1
2
#include <algorithm>
#include <iterator>
добавить нужно)
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
03.08.2010, 11:17  [ТС]     Задачи для тренировки и лучшего понимания #463
neske, Это я знаю... Я не о том...
Вот за это:

std::copy (Arr[i], Arr[i]+Size, std::ostream_iterator <int> (std::copy, " "));

Меня шлет компиль далеко и надолго. Если
std::copy (Arr[i], Arr[i]+Size, std::ostream_iterator <int> (std::cout, " ")); то все ок.
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
03.08.2010, 11:18     Задачи для тренировки и лучшего понимания #464
Для наглядности, компилируется без проблем:

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>
#include <ctime>
#include <algorithm>
#include <iterator>
 
int rnd ()
{
    return rand()%50;
}
 
int main (void)
{
    const size_t ROW=4;
    const size_t COLUMN=4;
    int MAS[ROW][COLUMN];
    // fill and output
    
    srand (time (NULL));
    std::cout << "Start matrix:\n";
    for (size_t i=0; i<ROW; i++) {
        std::generate_n (MAS[i], COLUMN, rnd);
        std::copy (MAS[i], MAS[i]+COLUMN, std::ostream_iterator <int> (std::cout, " "));
        std::cout << std::endl; }
    std::cout << std::endl;
 
    return 0;
}
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
03.08.2010, 11:19  [ТС]     Задачи для тренировки и лучшего понимания #465
neske, cout.. Таки cout. Посмотри свой код выше. Сравни что там написано.
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
03.08.2010, 11:19     Задачи для тренировки и лучшего понимания #466
Мои извинения, очепятка)
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
03.08.2010, 11:22  [ТС]     Задачи для тренировки и лучшего понимания #467
C++
1
std::copy (Arr[i], Arr[i]+Size, std::ostream_iterator <int> (std::cout<<std::setw(3), " "));
Ну. Каждые Size чисел он отделяет. По идее красиво) Но не знаю то ли что нужно)
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
03.08.2010, 11:32     Задачи для тренировки и лучшего понимания #468
Немного не то, ну да ладно, спасибо)
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
03.08.2010, 11:33  [ТС]     Задачи для тренировки и лучшего понимания #469
neske, Так красивше будет наерн
C++
1
std::copy (Arr[i], Arr[i]+Size, std::ostream_iterator <int> (std::cout<<std::endl, " "));
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.08.2010, 16:51     Задачи для тренировки и лучшего понимания #470
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от neske Посмотреть сообщение
Немного не то, ну да ладно
может быть вот так будет правильнее?
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 <algorithm>
#include <iostream>
#include <iterator>
#include <iomanip>
#include <cstdlib>
 
int main()
{
    const int nrow = 5;
    const int ncol = 5;
 
    int matrix[nrow][ncol];
    
    for(int i = 0; i < nrow; ++i)
        std::generate(matrix[i], matrix[i] + ncol, []{ return rand() % 99; });
 
    for(int i = 0; i < nrow; ++i)
    {
        int j = 0;
        std::for_each(matrix[i], matrix[i] + ncol, [&j](int n){ std::cout << std::setw(10) << n; ++j; });
        std::cout << std::endl;
    }
 
    system("PAUSE");
}
Код
        41        53        97        67        62
        82        93        54        34        11
        62        29        16        96        61
        95        25        62        75        90
        18        51        41        54        94
Добавлено через 14 минут
j то я сюда зря воткнул оказывается
надо просто вот так:
C++
1
2
3
4
5
    for(int i = 0; i < nrow; ++i)
    {
        std::for_each(matrix[i], matrix[i] + ncol, [](int n){ std::cout << std::setw(10) << n; });
        std::cout << std::endl;
    }
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
03.08.2010, 18:37     Задачи для тренировки и лучшего понимания #471
false, вот это да)
Всем спасибо.
Evg
Эксперт CАвтор FAQ
17464 / 5702 / 361
Регистрация: 30.03.2009
Сообщений: 15,654
Записей в блоге: 26
03.08.2010, 22:17     Задачи для тренировки и лучшего понимания #472
Задача. Написать на Си программу, при запуске которой печатался бы исходник этой программы. Работать с файлами нельзя: т.е. решение в виде того, чтобы открыть файл исходника и распечатать на экран, не катит
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
03.08.2010, 22:20     Задачи для тренировки и лучшего понимания #473
Evg, было уже.

Не по теме:

Правда решения вроде бы и не нашли...

fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.08.2010, 22:23     Задачи для тренировки и лучшего понимания #474
Цитата Сообщение от Evg Посмотреть сообщение
Задача. Написать на Си программу, при запуске которой печатался бы исходник этой программы. Работать с файлами нельзя: т.е. решение в виде того, чтобы открыть файл исходника и распечатать на экран, не катит
читал в книге
C
1
2
#include <stdio.h>
int main(char*a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}
Evg
Эксперт CАвтор FAQ
17464 / 5702 / 361
Регистрация: 30.03.2009
Сообщений: 15,654
Записей в блоге: 26
03.08.2010, 22:26     Задачи для тренировки и лучшего понимания #475
Nameless One, где было - далеко не все читали. Решение там точно есть (потому что я его помещал)

fasked, выбрось эту книгу
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
03.08.2010, 22:27     Задачи для тренировки и лучшего понимания #476
fasked, куайн должен печатать весь исходник, а у тебя только начиная с main: http://codepad.org/8RxGgbJ2
Evg
Эксперт CАвтор FAQ
17464 / 5702 / 361
Регистрация: 30.03.2009
Сообщений: 15,654
Записей в блоге: 26
03.08.2010, 22:34     Задачи для тренировки и лучшего понимания #477
Цитата Сообщение от Nameless One Посмотреть сообщение
Если честно, я не понимаю, почему программа хоть что-то печатает. Значение a должно равняться еднице (ибо на этом месте передаётся argc). Почему в кору не выпадает - непонятно

Добавлено через 3 минуты
Единственное объяснение - на intel'е передача параметров делается сзади, а потому a="..." исполнится раньше. С точки зрения стандарта это undefined, а потому книга стОит того, чтобы её выбросить (если там не оговорено, что сие только на intel'е будет работать)
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.08.2010, 22:35     Задачи для тренировки и лучшего понимания #478
Цитата Сообщение от Evg Посмотреть сообщение
выбрось эту книгу
вообще книга хорошая, а этот код был приложен в ссылочке к объяснению слову "хакер"
соответственно ни о каком применении подобного кода и речи не идет
Цитата Сообщение от Evg Посмотреть сообщение
Если честно, я не понимаю, почему программа хоть что-то печатает. Значение a должно равняться еднице (ибо на этом месте передаётся argc). Почему в кору не выпадает - непонятно
да я и сам-то не понимаю, но пример забавный.
Evg
Эксперт CАвтор FAQ
17464 / 5702 / 361
Регистрация: 30.03.2009
Сообщений: 15,654
Записей в блоге: 26
03.08.2010, 22:37     Задачи для тренировки и лучшего понимания #479
Пример - хороший тест на задание "приведите пример непереносимого кода". К хакерству отношения никакого не имеет, просто это закладка на знание внутренних особенностей компилятора. В итоге задача остаётся в силе
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2010, 22:37     Задачи для тренировки и лучшего понимания
Еще ссылки по теме:
C++ Киньте задачки для тренировки
Дайте задания для тренировки C++
Книги для тренировки/развития котелка и просто убийства времени C++
C++ Какой компилятор выбрать для лучшего изучения С++ по книге Берна Страуструпа?п
На соревнованиях по фигурному катанию оценки заносятся в компьютер. Составить программу для вывода на экран лучшего результата после каждого выступлен C++

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
03.08.2010, 22:37     Задачи для тренировки и лучшего понимания #480
Вот это уже больше похоже на правду
Yandex
Объявления
03.08.2010, 22:37     Задачи для тренировки и лучшего понимания
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru