Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хочу написать "большую" программу. Нужна идея. Ищу идею для интересной программы. 
:(
    Опции темы
artiyom
Дата 2.10.2011, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.1.2009

Репутация: нет
Всего: нет



Мутное немного, пожалуй, название темы получилось. Суть такая, возраст у меня уже далеко не детский, но несколько лет назад я открыл в себе любовь к программированию. Читал книги по C/C++. Сейчас дочитываю книгу Стивена Праты. Учебные задачи из книжек легко решаю.  Несколько раз пытался писать более не менее крупные программы (500+ строк  -  да, для меня это крупные программы), тоже вроде получалось. Мне ужасно осточертели мелкие задачки из книжек, хочу написать "настоящую" программу. То есть программу, которую, теоретически, можно было бы использовать по назначению... ну если не сейчас, то году эдак в 92, так как писать я умею только для консоли.
 В общем мне нужна хорошая интересная идея для какой-нибудь консольной программы, реализация которой заняла бы 1000+ строк кода. Говорят же, чтобы научиться программировать, нужно программировать, вот я и хочу программировать. Писать буду на С++. по возможности применяя объектно-ориентированное программирование. Желательно, чтобы для ее реализации хватило средств С++ и не нужно было бы использовать какие-то сторонние библиотеки или средства. Потом бы я вам это программу показал, а вы бы сделали по ней свои замечания. Надеюсь на ваше понимание.

Это сообщение отредактировал(а) artiyom - 2.10.2011, 07:51
PM MAIL   Вверх
borisbn
Дата 2.10.2011, 08:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



  • Идёте на http://sf.net
  • Регистрируетесь
  • Выбираете проект по душе
  • Выбираете раздел develop
  • В нём выбираете "Send a request to join this project"
Цитата(artiyom @  2.10.2011,  03:38 Найти цитируемый пост)
Желательно, чтобы для ее реализации хватило средств С++ и не нужно было бы использовать какие-то сторонние библиотеки или средства.

В "чистом" Си++ есть только ввод/вывод (с/на экран или из/в файл). Маловато для серьёзного проекта...

Ну... как вариант... сделайте шахматы. В консоли тоже можно "рисовать". Возьмите тот же FAR

Добавлено через 2 минуты и 58 секунд
Цитата(borisbn @  2.10.2011,  08:11 Найти цитируемый пост)
Цитата(artiyom @  2.10.2011,  03:38 )

IMHO в пол четвёртого утра хорошие идею в голову не лезут  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
newbee
Дата 2.10.2011, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 3
Всего: 19



Веб- или почта-сервер, из "сторонних библиотек" только сокеты, а они есть в ОС. Ты не представляешь, какой я ловила кайф, когда через мой серевер отправилось первое письмо )) Правда язык был другой, но это не важно. При наколеночной реализации 1к строк хватит за глаза, а если это начать серьезно развивать, то уж сколько влезет.


--------------------
You're face to face
With man who sold the world
PM   Вверх
artiyom
Дата 2.10.2011, 09:49 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.1.2009

Репутация: нет
Всего: нет



borisbn,
Цитата

 Ну... как вариант... сделайте шахматы. В консоли тоже можно "рисовать". Возьмите тот же FAR

Мне конечно следовало это указать с самого начала, но пока не очень хочется делать игру. Мне кажется мне ее будет трудно спроектировать. 

newbee, 
Цитата

Веб- или почта-сервер, из "сторонних библиотек" только сокеты, а они есть в ОС. Ты не представляешь, какой я ловила кайф, когда через мой серевер отправилось первое письмо )) Правда язык был другой, но это не важно. При наколеночной реализации 1к строк хватит за глаза, а если это начать серьезно развивать, то уж сколько влезет. 

Задача и впрямь выглядит интересно. Я порылся в нете, есть материалы по сокетам, и при желании можно разобраться. Но  в добавок я еще и очень мало знаю о том как работают такие серверы.  И соваться сейчас в незнакомую себе область, где мне предстоит использовать незнакомые мне инструменты... скорее всего, если я за такое возьмусь, то потом пожалею. Но задача вправду хорошая, быть может оставлю на будущее себе.
Сейчас ищу что-то такое, что запустил программу в консоль она  и делаем там себе что-то, запросы выдает, ты ей данные и так далее. 
PM MAIL   Вверх
maxim1000
Дата 2.10.2011, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 1
Всего: 110



программа для поиска и удаления дубликатов файлов
консольного интерфейса для первой версии вполне может хватить
если не специализироваться (например, похожие картинки), можно вполне обойтись без сторонних библиотек

но вообще, конечно, постепенно стоит знакомиться с какими-нибудь средствами построения не только консольного интерфейса - тогда и выбор идей будет более широкий, да и направлений для развития программ больше

Это сообщение отредактировал(а) maxim1000 - 2.10.2011, 12:02


--------------------
qqq
PM WWW   Вверх
volatile
Дата 2.10.2011, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Одна из первых моих программок на С, (кстати до сих пор активно пользую!) tabs.exe
удаляет табуляцию верней разворачивает их в пробелы, кроме того еще кое-какие полезные вещи: меняет переводы строк, удаляет концевые пробелы.
Вот хелп:
Код

The usage is: tabs.exe input [output] [-<switch=val> [-<switch=val>...]]
<switches>
   -tab=[0..999] or -[0..999] (0=off, default is: 4)
   -lf=[win|0d0a, nix|0a, mac|0d, 0a0d, off] (default is: win)
   -endsp=[on, off] (default is on)
   -overwrite=[yes, no, backup, ask] (default is: yes)
   -suspect=[off, report, ask] (default is: ask)
   -keeptime=[on, off] (default is: on)
   -unicode=[off, 1200, 1201, auto] (default is: auto)


Что нибудь эдакое. Тут вообще чистый Си без библиотек. И полезная штука. Можно придумать еще много чего там...
Вплоть до полного реформата исходников.

Добавлено через 1 минуту и 3 секунды
Еще я пи вычислял с точностью до миллион знаков. Но это правда на асме было...
PM MAIL   Вверх
borisbn
Дата 2.10.2011, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(borisbn @  2.10.2011,  08:11 Найти цитируемый пост)
Ну... как вариант... сделайте шахматы

Цитата(newbee @  2.10.2011,  08:47 Найти цитируемый пост)
Веб- или почта-сервер

Цитата(maxim1000 @  2.10.2011,  12:00 Найти цитируемый пост)
программа для поиска и удаления дубликатов файлов

этого "добра" в интернетах как грязи, а вот 
Цитата(volatile @  2.10.2011,  12:50 Найти цитируемый пост)
Вплоть до полного реформата исходников.

действительно интересное предложение. Всё, что я видел (включая, пожалуй, самое лучшее - AStyle из Code::Blocks) - не устраивает по тем или иным причинам.
Хорошая задача - программа для форматирования исходников в соответствии с заданным code-style. Так, чтобы можно было настраивать абсолютно всё.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bsa
Дата 3.10.2011, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(borisbn @  2.10.2011,  18:49 Найти цитируемый пост)
Хорошая задача - программа для форматирования исходников в соответствии с заданным code-style. Так, чтобы можно было настраивать абсолютно всё. 

Задача, конечно, хорошая. Но у нее есть один маленький минус. ОНА НЕ ВЫПОЛНИМАЯ. Абсолютно все настраивать нельзя, так как кому-то может взбрести в голову такое, о чем ни один другой и в жизнь не догадается...
PM   Вверх
borisbn
Дата 3.10.2011, 06:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



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

Значит нужно сделать систему скриптовых плагинов smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
artiyom
Дата 3.10.2011, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.1.2009

Репутация: нет
Всего: нет



Цитата

программа для поиска и удаления дубликатов файлов
консольного интерфейса для первой версии вполне может хватить
если не специализироваться (например, похожие картинки), можно вполне обойтись без сторонних библиотек

Цитата

Одна из первых моих программок на С, (кстати до сих пор активно пользую!) tabs.exe
удаляет табуляцию верней разворачивает их в пробелы, кроме того еще кое-какие полезные вещи: меняет переводы строк, удаляет концевые пробелы.
Цитата

действительно интересное предложение. Всё, что я видел (включая, пожалуй, самое лучшее - AStyle из Code::Blocks) - не устраивает по тем или иным причинам.
Хорошая задача - программа для форматирования исходников в соответствии с заданным code-style. Так, чтобы можно было настраивать абсолютно всё. 

Спасибо вам большое, все варианты очень хороши и когда-нибудь я их всех реализую конечно.
Вы не подумайте, что я привередничаю, но я ищу немного иную программу. Более широко специализированную, с богатым набором функций, чтобы можно было ей уймы всяких команд слать а она все делала. Может быть какое-то офисное приложение, бухгалтерское или что-то еще. Моя цель сейчас не покорять Эверест, а просто реализовывать все то, чему уже научился в реальной программе, а не просто решая задачи из книги. 

maxim1000
Цитата

но вообще, конечно, постепенно стоит знакомиться с какими-нибудь средствами построения не только консольного интерфейса - тогда и выбор идей будет более широкий, да и направлений для развития программ больше

Совершенно с вами согласен, я собираюсь этим заняться, но сначала думал попрактиковаться немного, так сказать в "чистом" C++.
PM MAIL   Вверх
fish9370
Дата 3.10.2011, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



есть у меня для тебя задача - чат для сайта (веб консультант)
и полезно и интересно..

цель:
создать высокопроизводительный сервер чата для онлайн консультирования

существующие аналоги:
webim.ru, mibew.org, siteheart.com, netroxsc.ru и т.д.

зачем свой если их и так как грязи?
1) потому-что это либо платные сервисы, либо они предназначены для одного сайта, либо они тормозят и находятся на третьей стороне с полной зависемостью от них..

2) этот сервис в дальнейшем всегда можно прикрутить к любому офисному проекту. Его можно прикрутить для какого-нибудь онлайн-управления чем-то. Зашел в свой чат, задал команду, получил лог, статистику и т.д. 

3) это прекрасный проект для обучения

4) он будет многим интересен


суть задачи:
на сайте висит форма, юзер вводит любую фразу, проверяется наличие куки (id сессии) на стороне юзера - куки не обнаружены - отправляется ajax-запрос на сервер.. на сервере его встречает скрипт на php или на perl, обрабатывает запрос выдергивает нужные данные.. и по спецовому протоколу (который нужно описать) обращается к серверу..
этот php/perl-скрипт нужен как посредник, чтобы не заморачиваться с http, впрочем запросы можно направлять непосредственно к серверу..
сервер принимает команду, видит что это запрос на создание новой сессии, регистрирует ее в своем каталоге (вообще это будет однонаправленый список или что-то в этом роде), возвращает идентификатор новой сессии обратно скрипту, тот ее возвращает клиенту.. который ее заносит в куки.

второй этап, сервер приняв новый запрос, так же получает и сообщение от пользователя, в списке операторов он ищет подходящего оператора.. заносит в список сообщений сообщение и идентификатор оператора, которому предназначено это сообщение, если операторов несколько - для каждого создается запись..

внимание важное уточнение: СЕРВЕР НЕ ИНИЦИИРУЕТ ЗАПРОС, каждый клиент с определенным интервалом посылает пакет keepalive, в ответ на который ему возвращается информация, в том числе и сообщения для него предназначеные..

технические детали:
правило первое:
сервер это POSIX-приложение со всеми вытекающими последствиями т.е. переносимость у нее только в пределах UNIX-совместимых ОС, винда пролетает.. - я бы пошел на это ограничение ради терминала (консоли управления), ради pthreads, ради fork и других примочек которые дает нам POSIX.. впрочем это не существенно, если ты это реализуешь на какой-то кросплатформеной библиотеке..

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

при подключении проги в режиме два к проге в режиме один, создается новый поток (pthread_create), с которым и будет взаимодействие, поток переходит в режим чтения..

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

правило второе:
сервер состоит из микроядра (только необходимый минимум для считывания конфигов, апи для работы со строками, апи для работы с памятью, апи для работы с модулями (загрузка/выгрузка)).. остальной функционал выполняется в виде модулей.. в том числе модуль чат, который и нужно реализовать в данной задаче..

требования к модулю (динамически загружаемому объектному файлу):
если мы приняли правило первое, то у нас имеется прекрасный механизм, при котором после загрузки модуля автоматически выполняется функция инициализации - каждый модуль должен реализовать данную функцию (далее функция инициализации)
функция инициализации должна: 1) зарегистрировать модуль в списке модулей, 2) зарегистрировать команды и их обработчики в списке команд
функция деинициализации (выполняется автоматически при выгрузке модуля) должна выполнить обратные действия..

вопрос к залу: как лучше реализовать обмен сообщениями (некий односторонний лог) между приложением запущеным в режиме один и приложением запущеным в режиме два? и быть может между приложением в режиме два и модулем?


ps немного сумбурно, но это то что пришло в голову.. 


--------------------
undefined
PM MAIL WWW ICQ   Вверх
SolRus
Дата 3.10.2011, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 6.8.2011

Репутация: нет
Всего: нет



artiyom,"офисное приложение, бухгалтерское " эти программы не имеют смысла без графического интерфейса
тебе написали шахматы - по-моему хороший вариант.

 если использовать "чистый с++" можешь попробовать написать:
1. исскуственный интелект) в консоли будешь задавать вопросы, а прога тебе будет отвечать, правда придется почитать немало... вики
2. бекдор..) шел доступ на сокетах

fish9370, помоему фигня)
PM MAIL Skype   Вверх
fish9370
Дата 3.10.2011, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



SolRus, я думал, как тебя послать.. пошлю вежливо: обоснуй..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
SolRus
  Дата 3.10.2011, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 6.8.2011

Репутация: нет
Всего: нет



Цитата(fish9370 @ 3.10.2011,  18:38)
SolRus, я думал, как тебя послать.. пошлю вежливо: обоснуй..

зачем меня посылать?))  когда пишу по-моему - это тоже, что пишу ИМХО)
1. и самое главное - зачем ему пишешь про perl и php? он же пишет - дать задачу на с++
2. тема неинтересная... имхо  smile 

если уж и писать клиент тогда чтото по стилю скайпа (только менее требовательный к памяти, нынешний скайп кушает 120 мб  smile )
PM MAIL Skype   Вверх
fish9370
Дата 3.10.2011, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



Цитата(SolRus @  3.10.2011,  20:32 Найти цитируемый пост)
зачем ему пишешь про perl и php


я вроде написал, чтобы упростить задачу, http парсить здесь не принципиально.. но я не против этого..


Цитата(SolRus @  3.10.2011,  20:32 Найти цитируемый пост)
тема неинтересная... имхо


не для тебя тема.. 


Цитата(SolRus @  3.10.2011,  20:32 Найти цитируемый пост)
если уж и писать клиент тогда чтото по стилю скайпа 


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


--------------------
undefined
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0812 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.