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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 2744, средняя оценка - 4.89
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7934 / 4716 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
15.07.2010, 05:53     Задачи для тренировки и лучшего понимания #1
Ребят. Кто-нибудь может дать задачу для тренировки? Приблизительно по всему курсу С++. Буду благодарен за сложную задачу, но которую способен сделать новичок-любитель. Затраты сил-времени не важно. Главное, чтобы это было интересно и не слишком рутинно. + Если найдется человек который даст задачу просьба помогать с кодом, который я буду себя скидывать. Не переписывать за меня, но указывать на ошибки и желательно объяснять. Заранее спасибо.

Список задач, решение которых присутствует в данной теме:
Лучшие ответы (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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4247 / 2779 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
24.10.2010, 13:48     Задачи для тренировки и лучшего понимания #801
silent_1991, я думаю TrenAr имел ввиду, чтоб выделить задачи, на которые есть рабочий код, чтоб знать какие задачи остались не доделанные.

Добавлено через 1 минуту
а в посте ТС слово "решение", я думаю, подразумевает процесс.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16934 / 5339 / 328
Регистрация: 30.03.2009
Сообщений: 14,343
Записей в блоге: 26
24.10.2010, 16:03     Задачи для тренировки и лучшего понимания #802
Я так же поддерживаю идею, что в первом посте надо коллекционировать не только решёные назади, но и нерешённые
Vlad_IT
 Аватар для Vlad_IT
1437 / 343 / 16
Регистрация: 03.04.2010
Сообщений: 2,095
24.10.2010, 17:25     Задачи для тренировки и лучшего понимания #803
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Есть книга М.В Мозговой С++ Мастер класс. 85 Нетривиальных проектов, решений и задач. Книга одно удовольствие. Там лишь дают задачу и немного подсказки, а код надо самому думать.
MikeSoft
Эксперт C++
 Аватар для MikeSoft
3787 / 1769 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
24.10.2010, 19:31     Задачи для тренировки и лучшего понимания #804
Сообщение было отмечено автором темы, экспертом или модератором как ответ
При составлении содержания было просмотрено 58 страниц темы.
На днях я постараюсь пересмотреть остальные страницы и выяснить, решение к каким задачам отсутствует.
Все те задачи, которые на данный момент присутствуют в содержании являются решёнными.

Всем спасибо за советы
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
29.10.2010, 17:09     Задачи для тренировки и лучшего понимания #805
Я решил задачу "Игра Жизнь"! Написал движок и консольную реализацию. Правда на краях поля немного подглючивает. Завтра напишу Open-GL и выложу здесь.

Добавлено через 3 минуты
Цитата Сообщение от Kastaneda Посмотреть сообщение
Не по теме:
По игре "Жизнь" одно время проводились соревнования (если мне изменяет память где-то в 70-80х годах), победитель до сих пор не превзойден, он реализовал эту игру в 23 байта (могу ошибаться) на ассемблере под ДОС.

Это я прочитал в какой-то книге по АСМу, где-то с год назад, поэтому мож чего и подзабыл)

Добавлено через 4 минуты
Пардон - в 23 КилоБайта)))
А я реализовал её в 9.5 байт на C++))))
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
29.10.2010, 17:11     Задачи для тренировки и лучшего понимания #806
Крут.
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
29.10.2010, 19:20     Задачи для тренировки и лучшего понимания #807
Цитата Сообщение от МаксимМВ Посмотреть сообщение
А я реализовал её в 9.5 байт на C++))))
Ты ничего не путаешь?
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
30.10.2010, 19:42     Задачи для тренировки и лучшего понимания #808
Цитата Сообщение от Nameless One Посмотреть сообщение
Ты ничего не путаешь?
А у меня Linux!!! А нассчёт размера сами смотрите: http://static.itmages.ru/i/10/1030/h...e0310c04bf.png

Цитата Сообщение от Хохол Посмотреть сообщение
Крут.
Да, Linux крутой.
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
30.10.2010, 19:45     Задачи для тренировки и лучшего понимания #809
Цитата Сообщение от МаксимМВ Посмотреть сообщение
А я реализовал её в 9.5 байт на C++))))
Цитата Сообщение от МаксимМВ Посмотреть сообщение
9.5 байт
Цитата Сообщение от МаксимМВ Посмотреть сообщение
байт
Блин, я ведь спросил:
Цитата Сообщение от Nameless One Посмотреть сообщение
Ты ничего не путаешь?
Не надо путать байты с килобайтами. 1 байт - это один символ (буква). А ты говоришь, что твоя программа состоит из 9.5 символов?
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
30.10.2010, 20:11     Задачи для тренировки и лучшего понимания #810
а да я описался в 9,5 килобайт. Невнимательность, как и в программе была)) Еле исправил с помощью отладчика.
Kastaneda
31.10.2010, 06:34
  #811

Не по теме:

Если я не ошибаюсь, то про эту игру я прочитал в книге Зубкова "Ассемблер что-то там", я перелистаю ее на досуге и уточню, какой рекордно минимальный объем екзешника (правда там данные на момент написания книги, конец 80х - начало 90х)

Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16934 / 5339 / 328
Регистрация: 30.03.2009
Сообщений: 14,343
Записей в блоге: 26
31.10.2010, 10:26     Задачи для тренировки и лучшего понимания #812
Два кода сравнивать по размеру уместно только тогда, когда они работают на одной и той же платформе или близких по реализации платформах. Грубо говоря, код printf ("Hello world") может занимать (условно говоря) 100 байт, потому как код функции printf находится в динамической библиотеке и в программу не включается. А может занимать и 100 килобайт, потому что программа слинкована статически. Ну и так далее.

Глядя на код на скриншоте из поста #808, я тупо не верю, что он занимает 9.5 килобайт, потому как одна только реализация new весит куда больше. Объём исходников - может быть и 9.5 килобайт, но никак не объём кода. Т.е. сравнивать такой код с ассемблерной программой под DOS, где скорее всего не было вообще никаких библиотечных вызовов - это сравнивать пипиську и жёлтый цвет, ибо это абсолютно перпендикулярные вещи
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
31.10.2010, 20:21     Задачи для тренировки и лучшего понимания #813
Вот моё решение задачи игра "Жизнь" в консольной и OpenGl реализации. Смотрите архив.
Вложения
Тип файла: zip livegame.zip (8.0 Кб, 30 просмотров)
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16934 / 5339 / 328
Регистрация: 30.03.2009
Сообщений: 14,343
Записей в блоге: 26
02.11.2010, 18:58     Задачи для тренировки и лучшего понимания #814
Задача на знание синтаксиса языка Си

Функция ожидает параметром указатель на двумерный массив [4][5]. Фактически мы вместо этого можем подать указатель на одномерный массив [20]. Т.е. исходник будет выглядеть как:

C
1
2
3
4
5
6
7
8
extern f (int a[4][5]);
 
int b[20];
 
void func (void)
{
  f (b);
}
Т.е. это совершенно рабочий код (при условии что внутренности массива b у нас будут разложены так, как они были бы в двухмерном массиве). Однако при компиляции будет выдаваться предупреждение (из-за несоответсвия типов):

Код
$ gcc t.c -c
t.c: In function 'func':
t.c:7: warning: passing argument 1 of 'f' from incompatible pointer type
Напишите оператор приведения типа, чтобы предупреждение пропало. Т.е. как с точки зрения языка Си написать правильное приведение типа в данном случае. Я бы рекомендовал при ответе на вопрос НЕ пользоваться компилятором, потому как в некоторых компиляторах выдаётся более детализованная диагностика, чем в gcc, а такая диагностика может дать подсказку
#pragma
Временно недоступен
 Аватар для #pragma
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
02.11.2010, 22:57     Задачи для тренировки и лучшего понимания #815
Evg, интересно )
Моё предположение
C
1
2
3
4
5
6
7
8
extern f (int a[4][5]);
 
int b[20];
 
void func (void)
{
  f ((&[][])b);
}
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16934 / 5339 / 328
Регистрация: 30.03.2009
Сообщений: 14,343
Записей в блоге: 26
02.11.2010, 23:12     Задачи для тренировки и лучшего понимания #816
#pragma, у тебя gcc, так что можно с компилятором экспериментировать. Хз может последние версии и болтливые, но в таких случаях gcc ограничивается фразой, что дескать тут тип указателя не тот
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
03.11.2010, 21:58     Задачи для тренировки и лучшего понимания #817
Не то чтобы это задачка, но все же напишу.

Сегодня наткнулся на неожиданное отличие Си от Си++ (для меня во всяком случае).
Вот такой код отлично компилируется g++.
C++
1
2
3
4
5
int main()
{
        int a = 0, b = 0;
        a == 1 ? a = 0 : b = 1;
}
И тот же самый код при компиляции gcc приводит к такой ошибке:
Код
main.c:4:2: error: lvalue required as left operand of assignment
Теперь, чтобы сообщение содержало хоть какой-то вопрос.
Как избавиться от ошибки при компиляции?
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7934 / 4716 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
03.11.2010, 22:01  [ТС]     Задачи для тренировки и лучшего понимания #818
Вот так)
C
1
2
3
4
5
int main()
{
        int a = 0, b = 0;
        a == 1 ? (a = 0) : (b = 1);
}
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
03.11.2010, 22:06     Задачи для тренировки и лучшего понимания #819
Цитата Сообщение от ForEveR Посмотреть сообщение
Вот так
достаточно было бы скобок в одном выражении, в том, что справа.
C
1
a == 1 ? a = 0 : (b = 1);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2010, 00:07     Задачи для тренировки и лучшего понимания
Еще ссылки по теме:

C++ Какая база требуется для понимания C++?
C++ Нужен пример рекурсивной функции для понимания ее назначения и практической пользы
C++ Builder Прошу примеров для понимания INDY
Книги для тренировки/развития котелка и просто убийства времени C++
Дайте задания для тренировки C++

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

Или воспользуйтесь поиском по форуму:
Somebody
2775 / 1588 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
04.11.2010, 00:07     Задачи для тренировки и лучшего понимания #820
Цитата Сообщение от Evg Посмотреть сообщение
Напишите оператор приведения типа, чтобы предупреждение пропало.
Вроде так
Долго до меня доходило... Эта четвёрка просто сбивает с толку.
C
1
f((int(*)[5])b);


Добавлено через 30 минут
Наверное, не для всех это очевидно, поэтому:
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>
 
using namespace std;
 
class qq0
{
public:
    virtual void msg(int n = 0)
    {
        cout << "qq0(" << n << ")" << endl;
    }
};
 
class qq1 : public qq0
{
public:
    virtual void msg(int n = 1)
    {
        cout << "qq1(" << n << ")" << endl;
    }
};
 
int main()
{
    qq0* c = new qq1;
    c->msg();
    delete c;
    cin.peek();
}
Что будет выведено?
Yandex
Объявления
04.11.2010, 00:07     Задачи для тренировки и лучшего понимания
Закрытая тема Создать тему
Опции темы

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