Авторизация



Счетчики

Обмен ссылками

Блог программиста
Главная Форум Последние сообщения
 Форум
Добро пожаловать Гость   [Зарегистрироваться]  Войти
 Тема :Re:Бинарное дерево поиска.. 15-05-2010 04:22:00 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Общие вопросы по программированию
Тема : Бинарное дерево поиска

C бинарным деревом проблему решил.
IP сохранен
 Тема :Re:Бинарное дерево поиска.. 02-05-2010 14:47:05 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Общие вопросы по программированию
Тема : Бинарное дерево поиска

Вывод, как я понял, производиться на PaintBox с помощью функции TextRect().
Я пробывал написать программу, которая, с помощью функции TextRect выводит значение на PaintBox->Canvas. Проблема возникает в том, что я не знаю как добавить новую надпись.
Вобщем, если знаете как реализован исходник, который я кинул в предидущем сообщении - помогите
IP сохранен
 Тема :Re:Бинарное дерево поиска.. 02-05-2010 14:38:17 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Общие вопросы по программированию
Тема : Бинарное дерево поиска

Вот то, что пока есть в моем классе:
Code:
struct TreeNode //структура узла дерева { int value; //значение TreeNode *leftChild; //указатель на левого наследника TreeNode *rightChild;//указатель на правого наследника }; class BinarySerachTree //описание класса дерева { public: BinarySerachTree(); //прототип конструктора ~BinarySerachTree(); //прототип деструктора bool AddElement(TreeNode *node,int element); //прототип функции добавления элемента //передаем в функцию указатель на узел, //в который будем добавлять элемент и //сам элемент TreeNode *root; //указатель на корень дерева }; BinarySerachTree::BinarySerachTree(): //описание конструктора root(0) { } BinarySerachTree::~BinarySerachTree() //описание деструктора { delete root; } bool BinarySerachTree::AddElement(TreeNode *node,int element)//добавление элемента { if(root) { if(element < root->value) { return AddElement(root->leftChild,element); } else { if(element > root->value) { return AddElement(root->rightChild,element); } else { return false; } } } else { TreeNode *toAdd=new TreeNode; toAdd->value=element; toAdd->leftChild=0; toAdd->rightChild=0; } return true; }

Исходник написан на C#.
В частности меня волнует вывод дерева на экран, как в этом исходнике
IP сохранен
 Тема :Бинарное дерево поиска.. 02-05-2010 13:34:16 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Общие вопросы по программированию
Тема : Бинарное дерево поиска

Вобщем, хочу реализовать бинарное дерево поиска, такое как в прикрепленном файле, но не используя шаблонов, а просто реализовать свой класс дерева.
Особенно интересует прорисовка дерева.

Я написал функцию добавления элемента в дерево, скоро скину сюда код.
IP сохранен
 Тема :Перемножение матриц.. 13-04-2010 19:09:41 
superkot
Hello, world!
Онлайн с: 11-03-2010 10:39:19
Сообщения: 1
Среда обитания
Форум : Проблемы и обсуждение программ
Тема : Перемножение матриц

У меня вот такая проблема. Мне надо умножить две матрицы А[1000][1000] и B[1000][1000] в Borland C++3.1. Подскажите как мне это сделать.
IP сохранен
 Тема :Re:Обратная Польская Запись.. 30-04-2010 20:59:29 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Общие вопросы по программированию
Тема : Обратная Польская Запись

C польской записью разобрался сам.
IP сохранен
Последний раз редактировалось: 30-04-2010 20:59:29 Автор rudolf т.к.
 Тема :Обратная Польская Запись.. 05-04-2010 18:21:15 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Общие вопросы по программированию
Тема : Обратная Польская Запись

Подскажите как реализовать.
Я написал код, которые отделяет операторы(помещая их в стек) от входной строки. Стоит вопрос в том, в каком порядке мне операторы из стека вынимать, там возникает проблама с приоритетами и скобками. Так же, наряду с стандартными мат. операциями(*,+,-,/) есть операция возведения в степень(^).
IP сохранен
 Тема :Re:программа компрессии/декомпрессии ф.. 28-03-2010 13:22:10 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Общие вопросы по программированию
Тема : программа компрессии/декомпрессии файлов на С++

Тема :Re:программа компрессии/декомпрессии файлов на С++

У меня в закромах такой нет. Поищите в гугле.
IP сохранен
 Тема :программа компрессии/декомпрессии фа.. 28-03-2010 09:42:25 
mephistophel
Hello, world!
Онлайн с: 28-03-2010 06:36:17
Сообщения: 1
Среда обитания
Форум : Общие вопросы по программированию
Тема : программа компрессии/декомпрессии файлов на С++

Тема :программа компрессии/декомпрессии файлов на С++

Нужен исходник данной программы,чтобы на основе его написать свою програму для компрессии/декомпрессии файлов.Заранее спасибо
IP сохранен
 Тема :Re:Интересные программы... 26-03-2010 14:15:31 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Общие вопросы по программированию
Тема : Интересные программы.

Суть в том, что вся графика в компонентах C++ Builder'а сведена к компоненту Canvas, имеющим тип TCanvas и являющийся членом некоторых других компонентов (TForm, TImage, TPaintBox, TBitmap...). Поэтому на всех этих компонентах можно рисовать, используя канву (Canvas), обеспечивая при этом совместную работу Canvas'ов различных компонентов.

Теперь коротко о рисовании с помощью Canvas. Можно получить доступ к отдельным пикселям канвы с помощью члена Pixels, являющегося двумерным массивом объектов типа TColor (кстати, система координат берет свое начало в левом верхнем углу компонента, ось X направлена слева направо, а ось Y - сверху вниз):
Code:
int x = 10, y = 20; if (Form1 -> Canvas -> Pixels[x][y] == clRed) Form1 -> Canvas -> Pixels[x][y]= TColor(0x00FF0000);

Тип TColor - это тип цвета. Для него существуют предопределенные константы, такие как clRed, clGreen, clBlue, clWhite, clSilver, clBtnFace и многие другие (вы можете посмотреть их список, например, открыв выпадающий список в Object Inspector в поле Color, например, компонента формы Form1). Также цвет можно определить на основе его RGB-представления. На первые знака в шестнадцатиричном представлении можете не обращать внимания без особой надобности - они обуславливают выбор палитры (их значения - 0x00, 0x01, 0x02). Как правило цвет будет определяться числом такого вида:
Code:
0x00BBGGRR
где RR - байты, отвечающий за красный цвет в представлении RGB, GG - за зеленый, BB - за синий (да, порядок цветов в записи обратный по отношению к аббревиатуре).

Цвета вам понадобятся также и для определения цветов рисуемых линий и цветов заливки внутренней области замкнутых фигур. Цвет линий хранится в члене Pen (тип TPen) компонента Canvas, а цвет заливки - в члене Brush (тип TBrush):
Code:
Form1 -> Canvas -> Pen -> Color = clLime; Form1 -> Canvas -> Brush -> Color = TColor(0x00FF0000); Form1 -> Canvas -> FillRect(TRect(10, 10, 50, 30));

Этот код нарисует прямоугольник со светло-зеленой окантовкой и синим цветом внутренней заливки.

Сделает это функция FillRect, принимающая в качестве аргумента объект типа TRect, который в свою очередь представляет прямоугольник. Конструктор типа TRect принимает четыре аргумента: первые два - это координаты верхнего левого угла прямоугольника (x, y), последние два - координаты правого нижнего угла.
Существуют и другие функции для рисования, такие как Ellipse (рисует эллипс, вписанный в прямоугольник, аргумент имеет тип TRect), MoveTo (переводит рисующий курсор в точку с указанными координатами, аргументы - координаты), LineTo (рисует прямую линию, исходящую из предыдущей позиции рисующего курсора, и заканчивающуюся в указанной точке, при этом переводя курсор в эту последнюю точку; аргументы - координаты этой точки) и другие (смотрите справку в разделе Methods на странице компонента TCanvas).

Еще одна крайне полезная функция - CopyRect, копирующая часть изображения в канву текущего компонента из канвы другого компонента. Ее аргументы - прямоугольник, в который вы будете копировать, Canvas из которого происходит копирование и копируемый прямоугольник в этом Canvas'е.
Code:
Form1 -> Canvas -> CopyRect(TRect(100, 100, 200, 150), Image1 -> Canvas, TRect(0, 0, 100, 50));

Этот код скопирует прямоугольник из Image1 в Form1.

***

Вот все основы, которых, на мой взгляд, достаточно для знакомства с рисованием в Borland C++ Builder. Если что-то я забыл - спрашивайте, объясню.
IP сохранен
 Тема :Re:Интересные программы... 26-03-2010 12:27:39 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Общие вопросы по программированию
Тема : Интересные программы.

Проблема вся в том, что мне не приходилось особо работать с граф. компонентами C++Builder, и я не очень представляю работу с графиком.
С чего начать?
IP сохранен
 Тема :Re:Проблема с программой в С++ 3.1.. 25-03-2010 00:47:54 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Проблемы и обсуждение программ
Тема : Проблема с программой в С++ 3.1

Да, старенькое борландовское творение не любит современные технологии. Под Windows 7, например, у меня Borland C++ 3.1 вообще не запускается, даже в DOSBox'е, только с виртуальной машины. И, насколько я знаю, проблемы с их совместимостью не у меня одного.
IP сохранен
 Тема :Бесплатный легальный софт.. 24-03-2010 19:11:23 
Alex Cones
Hello, world!
Онлайн с: 24-03-2010 16:08:49
Сообщения: 1
Среда обитания: У монитора
 
Форум : Реклама
Тема : Бесплатный легальный софт

Предлагаю вашему вниманию сайт с бесплатным легальным софтом.
http://flsoft.ru


2admin, а сайт у Вас ничего. Хорошенький.
IP сохранен
http://flsoft.ru - бесплатный софт.
 Тема :Re:Проблема с программой в С++ 3.1.. 24-03-2010 00:56:10 
burunchik
Hello, world!
Онлайн с: 07-03-2010 12:33:28
Сообщения: 4
Среда обитания
Форум : Проблемы и обсуждение программ
Тема : Проблема с программой в С++ 3.1

нет такую ошибку выдает и на других программах, проблему я решил следующим образом - зашел к соседу на комп,у него старенький пентиум 3 стоит - все пошло без проблем, а у меня двухядерный, я предполагаю, что из-за этого. У себя установил dos box так вот вылетать перестал - но уже пишет что не может прочитать файлы #include, короче у соседа я выполнил свое задание и спасибо вам - эта программа мне сильно помогла!
IP сохранен
 Тема :Re:Интересные программы... 17-03-2010 17:42:42 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Общие вопросы по программированию
Тема : Интересные программы.

Основное назначение банка текстур - хранить в себе картинки и по требованию рисовать их. При этом все необходимые картинки один раз загружаются с диска, а потом хранятся в оперативной памяти и используются по мере необходимости, что обеспечивает значительное увеличение быстродействия при приемлемых расходах оперативной памяти по сравнению с вариантом, когда все картинки каждый раз перед использованием загружаются с диска.
В принципе интерфейс банка текстур достаточно прост - у него есть конструктор, в котором происходит загрузка всех изображений, деструктор, освобождающий память, а также функция рисования нужного изображения в нужной точке экрана.
Внутренняя структура включает в себя список всех изображений, оформленный в зависимости от ваших предпочтений и соображений удобства использования. Это может быть простой динамический массив - тогда все изображения у вас просто пронумерованы, что не очень удобно, т.к. приходится постоянно смотреть, какой номер у нужной вам картинки. Более удобным я считаю хранение в виде ассоциативного массива (std::map), где изображения проиндексированы по строкам (идентификаторам).

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

Кстати, один совет: поскольку при рисовании вам вокруг да около придется пользоваться парами чисел (координаты, размеры), то можно оформить эти пары в виде простой структуры:
Code:
struct MyPoint { MyPoint(int x = 0, int y = 0); int X, Y; }; MyPoint::MyPoint(int x, int y): X(x), Y(y) { }
IP сохранен
 Тема :Re:Интересные программы... 15-03-2010 17:25:24 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Общие вопросы по программированию
Тема : Интересные программы.

а можете поподробней рассказать что из себя представляет "банк текстур"?Или может есть места в интернете, где можно прочитать информацию о подобном?
IP сохранен
 Тема :Re:Интересные программы... 15-03-2010 13:00:38 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Общие вопросы по программированию
Тема : Интересные программы.

Я вот как раз DoubleBuffered никогда не использовал, да и, скорее всего, это не та буферизация. По логике вещей буферизация формы помогает корректному выводу "картинки" (результата работы одной функции рисования) в отдельности. Я же подразумеваю буферизацию каждого кадра в игре в целом. То есть это та буферизация, которую нельзя подключить, а нужно реализовывать. Коротенькое описание принципа и наглядную демонстрацию посмотрите по вышеприведенной ссылке.
IP сохранен
 Тема :Re:Интересные программы... 15-03-2010 04:59:47 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Общие вопросы по программированию
Тема : Интересные программы.

Из всего вами написанного могу сказать только про канву, что я с ней знаком, приходилось работать, и про двойную буфферизацию, которую я подключал
Form1->DoubleBuffering=true;
Спасибо за сообщение, буду дальше вникать в его содержание.
IP сохранен
 Тема :Re:Интересные программы... 15-03-2010 03:55:01 
Captain
int main()
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания
Форум : Общие вопросы по программированию
Тема : Интересные программы.

DirectX - это, конечно, хорошо, но на первых порах вполне можно (и нужно!) обойтись и без него. В самом деле, сначала нужно разобраться с логикой создания игр и языковыми средствами. В C++ Builder'е вы можете с успехом использовать канву (Form1 -> Canvas).
Для начала вы можете попрактиковаться с рисованием примитивов с помощью функций TCanvas - Ellipse, Rectangle, FillRect, MoveTo, LineTo.
Потом, как освоитесь, используйте картинки. Создайте т.н. "банк текстур" - класс с массивом (динамическим) объектов типа картинка. В объекте картинки будет располагаться объект типа Graphics::TBitmap, параметры, такие как размеры изображения, конструктор, деструктор, функция рисования. Кстати, с TBitmap'ом вам придется работать через указатели, так что придется динамически выделять и освобождать память...
Сам банк текстур будет иметь конструктор, в котором происходит загрузка изображений с диска (информацию о необходимых файлах читаем еще из какого-нибудь файла), деструктор, освобождающий память, собственно массив картинок (удобно хранить их в ассоциативном массиве std::map, проиндексированном по строкам), функция рисования картинки по идентификатору (та самая строка, по которым картинки проиндексированы).
Вот вам уже в одном только рисовании использование ООП и STL.

А из игр - почему бы не реализовать танчики? Несколько танков на карте - объекты, препятствия - тоже объекты, пули - опять же объекты. При этом объекты могут уничтожаться, поэтому удобно использовать списки (std::list), так что вот вам вновь ООП и стандартные контейнеры.

При всем при этом вряд ли вы захотите хранить все яйца в одной корзине, то бишь весь код в одном файле, поэтому графика у нас пойдет в одну пару *.h - *.cpp, логика игры - в другой, а в главном файле будет их взаимодействие с интерфейсом программы, да еще и каждый модуль поместим в свое собственное пространство имен. Вот вам и работа с раздельно компилируемыми файлами.

Да, еще по поводу графики - тут уж никуда без двойной буферизации (смотрим здесь: http://trivialcoding.ru/Programs/Borland-C-Builder/flame-double-buffering.html).

В общем, и без использования сложных графических средств есть в чем попрактиковаться! При этом не обязательно использовать сразу все - например, для начала в игре Танчики можно рисовать танки, пули и препятствия примитивами, забыв напрочь про банк текстур, и вовсю налегая на ООП. Потом в отдельном проекте потренироваться в создании и загрузке картинок и легко перенести весь интерфейс и код в игру. А потом раскидать все по разным файлам и пространствам имен.
IP сохранен
 Тема :Re:Интересные программы... 14-03-2010 20:40:26 
rudolf
char
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания
Форум : Общие вопросы по программированию
Тема : Интересные программы.

в большинстве игр надо использовать DirectX, с которым я совершенно не знаком.
Я думал над чем-нибудь интересным, где можно использовать ООП, и хватило бы всего лишь компанентов TImage для реализации графической части игры, но, что-то, на ум ничего интересного и толкового не приходит.
У меня есть игра, там где самолет летит и скидывает бомбу на мишень, но она какая-то скучная, да и из языков средств там мало чего задействовано...
IP сохранен
Страница #  « ПерваяПредыдущая1234567СледующаяПоследняя »


Powered by ccBoard