Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.88/2010: Рейтинг темы: голосов - 2010, средняя оценка - 4.88
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,547
1

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

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

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

Список задач, решение которых присутствует в данной теме:
43
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2010, 05:53
Ответы с готовыми решениями:

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

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

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

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

1272
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,845
Записей в блоге: 2
24.10.2010, 13:48 801
silent_1991, я думаю TrenAr имел ввиду, чтоб выделить задачи, на которые есть рабочий код, чтоб знать какие задачи остались не доделанные.

Добавлено через 1 минуту
а в посте ТС слово "решение", я думаю, подразумевает процесс.
2
Evg
Эксперт CАвтор FAQ
21115 / 8131 / 628
Регистрация: 30.03.2009
Сообщений: 22,447
Записей в блоге: 30
24.10.2010, 16:03 802
Я так же поддерживаю идею, что в первом посте надо коллекционировать не только решёные назади, но и нерешённые
2
1447 / 355 / 61
Регистрация: 03.04.2010
Сообщений: 2,098
24.10.2010, 17:25 803
Есть книга М.В Мозговой С++ Мастер класс. 85 Нетривиальных проектов, решений и задач. Книга одно удовольствие. Там лишь дают задачу и немного подсказки, а код надо самому думать.
1
Эксперт С++
3936 / 1801 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
24.10.2010, 19:31 804
При составлении содержания было просмотрено 58 страниц темы.
На днях я постараюсь пересмотреть остальные страницы и выяснить, решение к каким задачам отсутствует.
Все те задачи, которые на данный момент присутствуют в содержании являются решёнными.

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

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

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

Добавлено через 4 минуты
Пардон - в 23 КилоБайта)))
А я реализовал её в 9.5 байт на C++))))
0
Эксперт С++
475 / 443 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
29.10.2010, 17:11 806
Крут.
0
Эксперт С++
5811 / 3462 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
29.10.2010, 19:20 807
Цитата Сообщение от МаксимМВ Посмотреть сообщение
А я реализовал её в 9.5 байт на C++))))
Ты ничего не путаешь?
0
C/C++
93 / 93 / 18
Регистрация: 01.07.2010
Сообщений: 281
30.10.2010, 19:42 808
Цитата Сообщение от Nameless One Посмотреть сообщение
Ты ничего не путаешь?
А у меня Linux!!! А нассчёт размера сами смотрите: http://static.itmages.ru/i/10/... 0c04bf.png

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

Не по теме:

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

0
Evg
Эксперт CАвтор FAQ
21115 / 8131 / 628
Регистрация: 30.03.2009
Сообщений: 22,447
Записей в блоге: 30
31.10.2010, 10:26 812
Два кода сравнивать по размеру уместно только тогда, когда они работают на одной и той же платформе или близких по реализации платформах. Грубо говоря, код printf ("Hello world") может занимать (условно говоря) 100 байт, потому как код функции printf находится в динамической библиотеке и в программу не включается. А может занимать и 100 килобайт, потому что программа слинкована статически. Ну и так далее.

Глядя на код на скриншоте из поста #808, я тупо не верю, что он занимает 9.5 килобайт, потому как одна только реализация new весит куда больше. Объём исходников - может быть и 9.5 килобайт, но никак не объём кода. Т.е. сравнивать такой код с ассемблерной программой под DOS, где скорее всего не было вообще никаких библиотечных вызовов - это сравнивать пипиську и жёлтый цвет, ибо это абсолютно перпендикулярные вещи
1
C/C++
93 / 93 / 18
Регистрация: 01.07.2010
Сообщений: 281
31.10.2010, 20:21 813
Вот моё решение задачи игра "Жизнь" в консольной и OpenGl реализации. Смотрите архив.
0
Вложения
Тип файла: zip livegame.zip (8.0 Кб, 31 просмотров)
Evg
Эксперт CАвтор FAQ
21115 / 8131 / 628
Регистрация: 30.03.2009
Сообщений: 22,447
Записей в блоге: 30
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, а такая диагностика может дать подсказку
1
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
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);
}
0
Evg
Эксперт CАвтор FAQ
21115 / 8131 / 628
Регистрация: 30.03.2009
Сообщений: 22,447
Записей в блоге: 30
02.11.2010, 23:12 816
#pragma, у тебя gcc, так что можно с компилятором экспериментировать. Хз может последние версии и болтливые, но в таких случаях gcc ограничивается фразой, что дескать тут тип указателя не тот
1
Эксперт С++
5015 / 2594 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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
Теперь, чтобы сообщение содержало хоть какой-то вопрос.
Как избавиться от ошибки при компиляции?
0
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,547
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);
}
0
Эксперт С++
5015 / 2594 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.11.2010, 22:06 819
Цитата Сообщение от ForEveR Посмотреть сообщение
Вот так
достаточно было бы скобок в одном выражении, в том, что справа.
C
1
a == 1 ? a = 0 : (b = 1);
0
2818 / 1628 / 252
Регистрация: 03.12.2007
Сообщений: 4,223
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();
}
Что будет выведено?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2010, 00:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
820
Закрытая тема Создать тему
Опции темы

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