Дайте интересную задачу на С++))
От: Minimaxus Россия  
Дата: 25.04.05 16:40
Оценка:
Нравится мне С++. Знаю хорошо основы С++. А что дальше изучать не могу выбрать. Может у кого-нибудь найдутся какие-нибудь задачи небольшие (пока пусть будут небольшие) из коммерческих проектов (что-то типа такого), базируясь на которых можно с чего-то начать. В дальнейшем хотелось бы, чтобы эти навыки пригодились при работе. Пока работаю в ИТ среде, но в другом напралвении — не программинг.
Надеюсь я в тот форум залез
Re: Дайте интересную задачу на С++))
От: Pavel Chikulaev Россия  
Дата: 25.04.05 18:43
Оценка:
"Minimaxus" <26589@users.rsdn.ru> wrote in message news:1143566@news.rsdn.ru...
> Нравится мне С++. Знаю хорошо основы С++. А что дальше изучать не могу
> выбрать. Может у кого-нибудь найдутся какие-нибудь задачи небольшие (пока
> пусть будут небольшие) из коммерческих проектов (что-то типа такого),
> базируясь на которых можно с чего-то начать. В дальнейшем хотелось бы, чтобы
> эти навыки пригодились при работе. Пока работаю в ИТ среде, но в другом
> напралвении — не программинг.

Задача:

template<int N>
class B
{
    enum { value = 0 };
};

template<>
class B<2>
{
    enum { value = 2 };
};

template<>
class B<18923>
{
    enum { value = 9240 };
};

assert(MaxValueOfAllSpecializations<B>::value == 9240);


Написать класс MaxValueOfAllSpecializations<B>, реализовать не перебирая все
значения инта, никакой информации за пределами классов B, единственно что
можно — наличее какого-нибудь базового класса у каждой специализации B.

Время пошло. 30 минут.


--
Pavel Chikulaev
Posted via RSDN NNTP Server 1.9
Re: Дайте интересную задачу на С++))
От: Pavel Chikulaev Россия  
Дата: 25.04.05 18:43
Оценка: :))
"Minimaxus" <26589@users.rsdn.ru> wrote in message news:1143566@news.rsdn.ru...
> Нравится мне С++. Знаю хорошо основы С++. А что дальше изучать не могу
> выбрать. Может у кого-нибудь найдутся какие-нибудь задачи небольшие (пока
> пусть будут небольшие) из коммерческих проектов (что-то типа такого),
> базируясь на которых можно с чего-то начать. В дальнейшем хотелось бы, чтобы
> эти навыки пригодились при работе. Пока работаю в ИТ среде, но в другом
> напралвении — не программинг.
> Надеюсь я в тот форум залез

Еще одна:

Напиши typeof без регистрации типов на чистом C++03

--
Pavel Chikulaev
Posted via RSDN NNTP Server 1.9
Re[2]: Дайте интересную задачу на С++))
От: Minimaxus Россия  
Дата: 25.04.05 19:15
Оценка:
Здравствуйте, Pavel Chikulaev, Вы писали:

PC>Время пошло. 30 минут.

Неее, со временем пока напряги Я на работе. Завтра с утреца посмотрю.
Всем спасибо.
Re[2]: Дайте интересную задачу на С++))
От: MaxLamer  
Дата: 25.04.05 19:19
Оценка:
Здравствуйте, Pavel Chikulaev, Вы писали:

PC>Напиши typeof без регистрации типов на чистом C++03

typeof для всех типов должен работать? т.е. для пользовательских классов тоже? Объектов и т.д.?
Re[3]: Дайте интересную задачу на С++))
От: Pavel Chikulaev Россия  
Дата: 25.04.05 19:22
Оценка:
"MaxLamer" <35993@users.rsdn.ru> wrote in message news:1143726@news.rsdn.ru...
> typeof для всех типов должен работать? т.е. для пользовательских классов тоже?
> Объектов и т.д.?
естественна

--
Pavel Chikulaev
Posted via RSDN NNTP Server 1.9
Re[2]: Дайте интересную задачу на С++))
От: MaxLamer  
Дата: 25.04.05 20:04
Оценка:
Здравствуйте, Pavel Chikulaev, Вы писали:

PC>Задача:


PC>
PC>template<int N>
PC>class B
PC>{
PC>    enum { value = 0 };
PC>};

PC>template<>
PC>class B<2>
PC>{
PC>    enum { value = 2 };
PC>};

PC>template<>
PC>class B<18923>
PC>{
PC>    enum { value = 9240 };
PC>};

PC>assert(MaxValueOfAllSpecializations<B>::value == 9240);
PC>


PC>Написать класс MaxValueOfAllSpecializations<B>, реализовать не перебирая все

PC>значения инта, никакой информации за пределами классов B, единственно что
PC>можно — наличее какого-нибудь базового класса у каждой специализации B.

Я немного подумал, но писать не могу. Наверное нужен базовый класс, от которого все пораждаются, в котором есть общая переменная для всех типов классов (типа static). И при создании нового класса в эту статическую переменную записывается значение данного класса, если оно больше той константы.
Подход правильный? Вообще ответы есть?
PC>--
PC>Pavel Chikulaev
Re: Дайте интересную задачу на С++))
От: Шахтер Интернет  
Дата: 26.04.05 00:37
Оценка: +2
Здравствуйте, Minimaxus, Вы писали:

M>Нравится мне С++. Знаю хорошо основы С++. А что дальше изучать не могу выбрать. Может у кого-нибудь найдутся какие-нибудь задачи небольшие (пока пусть будут небольшие) из коммерческих проектов (что-то типа такого), базируясь на которых можно с чего-то начать. В дальнейшем хотелось бы, чтобы эти навыки пригодились при работе. Пока работаю в ИТ среде, но в другом напралвении — не программинг.

M>Надеюсь я в тот форум залез

Классика из серии "Программисты развлекаются".

1) Life.
2) Mandelbrot.
3) Julia.
4) 1000000 знаков числа пи.
5) 1000000 знаков числа e.
6) Странные аттракторы.
7) Живые маштнки с простейшей нервной системой.

Погляди старые выпуски Мартина Гарднера в Scientific American (в русском переводе). Там можно много чего интересного найти.
... << RSDN@Home 1.1.3 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[3]: Дайте интересную задачу на С++))
От: Pavel Chikulaev Россия  
Дата: 26.04.05 06:55
Оценка:
"MaxLamer" <35993@users.rsdn.ru> wrote in message news:1143758@news.rsdn.ru...
> Я немного подумал, но писать не могу. Наверное нужен базовый класс, от
> которого все пораждаются, в котором есть общая переменная для всех типов
> классов (типа static).
И при создании нового класса в эту статическую переменную записывается значение
данного класса, если оно больше той константы.
> Подход правильный?
Так не получиться.
Вообще ответы есть?
Есть. Но скажу потом, пусть подумают...

--
Pavel Chikulaev
Posted via RSDN NNTP Server 1.9
Re[2]: Дайте интересную задачу на С++))
От: Minimaxus Россия  
Дата: 26.04.05 15:24
Оценка:
Здравствуйте, Pavel Chikulaev, Вы писали:

PC>Еще одна:


PC>Напиши typeof без регистрации типов на чистом C++03

вобщем я только это сегодня успел глянуть))
даже не знаю, правильно ли я тут все понял.
С++03 — это что такое?
Вобщем я только нашел такой клевый класс tipeid. Все за меня сделал. Или без этого надо?
Все равно расскажу.
Создаю вот такой класс:
class my
{
int i;
public:
my()
{i=0;}
};
Где-нибудь в main пишу:
my ** p;
cout<<typeid(p).name();
В результате выводится вот что:
class my * *
Типа вот так определяется тип класса.
А вообще пытался идти по коду и посмотреть куда заходит программа при вызове функции name() и увидел только асемблеровский код. Поэтому я решил что еще дальше на С не подобраться.
Что на это можно сказать? )) Типы я не регистрировал, как видно!
PC>--
PC>Pavel Chikulaev
Re[2]: Дайте интересную задачу на С++))
От: Chez Россия  
Дата: 27.04.05 06:14
Оценка:
Здравствуйте, Pavel Chikulaev, Вы писали:

type_of() evil implementation for VC7
Автор: Chez
Дата: 28.03.05

Chez, ICQ#161095094

Posted via:RSDN@Home;version:1.1.3;muzikstamp:silent

Re: Дайте интересную задачу на С++))
От: korzhik Россия  
Дата: 27.04.05 07:26
Оценка:
Здравствуйте, Minimaxus, Вы писали:

M>Нравится мне С++. Знаю хорошо основы С++. А что дальше изучать не могу выбрать. Может у кого-нибудь найдутся какие-нибудь задачи небольшие (пока пусть будут небольшие) из коммерческих проектов (что-то типа такого), базируясь на которых можно с чего-то начать. В дальнейшем хотелось бы, чтобы эти навыки пригодились при работе. Пока работаю в ИТ среде, но в другом напралвении — не программинг.

M>Надеюсь я в тот форум залез

Тут над тобой злые дядьки прикалываются... не слушай их
Единственно по делу сказал Шахтёр.

Если тебе будет интересно, могу предложить такую задачу:

Надо сделать консольное приложение, которое является системой ввода информации по автомобилям.
Программа запрашивает название марки, производителя и цену автомобиля, сохраняя эту информацию во внутренних структурах.
Должна быть возможность сохранения информации в файл и считывания информации из файла.
Формат файла определяешь ты.
Также должен быть предусмотрен режим работы при котором пользователь вводит минимальную и максимальную суммы, которые он готов заплатить за машину, и программа выводит ему список автомобилей удолетворяющих данному условию.
Re[3]: Дайте интересную задачу на С++))
От: Pavel Chikulaev Россия  
Дата: 27.04.05 07:55
Оценка:
Здравствуйте, Chez, Вы писали:

C>Здравствуйте, Pavel Chikulaev, Вы писали:


C>type_of() evil implementation for VC7
Автор: Chez
Дата: 28.03.05

Да я видел, пасибо, и что ты в бусте тоже знаю, молодец, а вот бы на чистом С++... что б везде работало видимо не полчиться...
Re[2]: Дайте интересную задачу на С++))
От: Minimaxus Россия  
Дата: 27.04.05 09:44
Оценка:
Здравствуйте, korzhik, Вы писали:


K>Тут над тобой злые дядьки прикалываются... не слушай их

K>Единственно по делу сказал Шахтёр.

K>Если тебе будет интересно, могу предложить такую задачу:


K>Надо сделать консольное приложение, которое является системой ввода информации по автомобилям.

K>Программа запрашивает название марки, производителя и цену автомобиля, сохраняя эту информацию во внутренних структурах.
K>Должна быть возможность сохранения информации в файл и считывания информации из файла.
K>Формат файла определяешь ты.
K>Также должен быть предусмотрен режим работы при котором пользователь вводит минимальную и максимальную суммы, которые он готов заплатить за машину, и программа выводит ему список автомобилей удолетворяющих данному условию.
Вот же дядьки Да все равно полезно было с типами покопаться, ща я им вопрос задам в новой теме, надеюсь они ответят на него!
За задачку спасибо. Это больше структуры данных. Подумаю на досуге. А вообще смысл моего вопроса был такой, чтобы вот такую задачу, например, я начал решать применея STL. Попробую найти сегодня какой-нибудь классик, который мне поможет это сделать. Сам себя пинать я не могу, чтобы заняться чем-то, вот и думал тут меня кто-нибудь нагрузит ))
Re: Дайте интересную задачу на С++))
От: Pavel Dvorkin Россия  
Дата: 27.04.05 09:56
Оценка: 6 (2)
Здравствуйте, Minimaxus, Вы писали:

M>Нравится мне С++. Знаю хорошо основы С++. А что дальше изучать не могу выбрать. Может у кого-нибудь найдутся какие-нибудь задачи небольшие (пока пусть будут небольшие) из коммерческих проектов (что-то типа такого), базируясь на которых можно с чего-то начать. В дальнейшем хотелось бы, чтобы эти навыки пригодились при работе. Пока работаю в ИТ среде, но в другом напралвении — не программинг.


Когда-то я такую задачу студентам 2 курса давал.

Имитатор файловой системы. Дан массив некоторого фиксированного размера. Рассматривая его как диск, создать на нем нечто вроде файловой системы FAT (ну пусть без подкаталогов) и реализовать командный интерфейс в стиле MS-DOS (команды create, copy, delete и т.д.)ю Естественно, с обработкой ошибок и т.д.
With best regards
Pavel Dvorkin
Re[2]: Дайте интересную задачу на С++))
От: 1234  
Дата: 27.04.05 13:40
Оценка:
Здравствуйте, Pavel Chikulaev, Вы писали:

PC>"Minimaxus" <26589@users.rsdn.ru> wrote in message news:1143566@news.rsdn.ru...

>> Нравится мне С++. Знаю хорошо основы С++. А что дальше изучать не могу
>> выбрать. Может у кого-нибудь найдутся какие-нибудь задачи небольшие (пока
>> пусть будут небольшие) из коммерческих проектов (что-то типа такого),
>> базируясь на которых можно с чего-то начать. В дальнейшем хотелось бы, чтобы
>> эти навыки пригодились при работе. Пока работаю в ИТ среде, но в другом
>> напралвении — не программинг.

PC>Задача:


PC>
PC>template<int N>
PC>class B
PC>{
PC>    enum { value = 0 };
PC>};

PC>template<>
PC>class B<2>
PC>{
PC>    enum { value = 2 };
PC>};

PC>template<>
PC>class B<18923>
PC>{
PC>    enum { value = 9240 };
PC>};

PC>assert(MaxValueOfAllSpecializations<B>::value == 9240);
PC>


PC>Написать класс MaxValueOfAllSpecializations<B>, реализовать не перебирая все

PC>значения инта, никакой информации за пределами классов B, единственно что
PC>можно — наличее какого-нибудь базового класса у каждой специализации B.

PC>Время пошло. 30 минут.


Так и несмогли корректно решить вашу задачу.
На сколько я понял, речь идёт об компил-тайм решении.
Есть два варианта:
Первый:


template <template <int> class Y, int current> class GetMax
{
public:
    enum {value = Y<current>::value > GetMax< Y, current+1 >::value ? Y<current>::value : GetMax< Y, current+1 >::value};
};

template <template < int > class Y > 
class GetMax <Y, 1070>
{
public:
    enum {value = Y<1070>::value };
};

template<template <int> class X> 
class MaxValueOfAllSpecializations
{
public:
    enum {value = GetMax<X,0>::value};
};

и второй
template <int N> class Some: public Some<N+1>
{
public:
    enum { value = Some<N+1>::value > B<N>::value ? Some<N+1>::value:B<N>::value};
};

template <> class Some<1400>
{
public:
    enum { value = B<1400>::value};
};


В каждом из них вы можете видеть магические цифры 1400 и 1070. Это граници до которых просматриваются специализации. Если они больше — компилятор выдаёт ошибку. (VS.NET 2003)
Если не секрет поделитесь правильным решением.


PC>--

PC>Pavel Chikulaev
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.