Отправляет email-рассылки с помощью сервиса Sendsay

Инвестиции: Вопрос-Ответ

  Все выпуски  

C/C++ Вопрос-Ответ Выпуск № 10


Информационный Канал Subscribe.Ru

C/C++ Вопрос-Ответ

Выпуск № 10
Cайт : SoftMaker.com.ru
Архив рассылки : SoftMaker.com.ru
Количество подписчиков : 1052
В этом выпуске
От ведущего

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

С уважением, Вахтуров Виктор.

Подписчикам

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

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

Небольшое примечание. Господа, если Вы хотите, чтобы Ваш e-mail был опубликован в рассылке, специально и явно укажите это в письме. Иначе e-mail адреса, указанные в теле Вашего письма в рассылке опубликованы не будут.

Вопросы

Для того, чтобы задать свой вопрос, кликните этой ссылке (вопрос будет опубликован в следующем номере).
Вы можете задавать любые вопросы, касающиеся программирования на языке C и C++. Это могут быть вопросы, касающиеся как конструкций языка, применения библиотек классов, шаблонов (таких как MFC или STL), использования компиляторов, так и самой философии программирования на C или C++. Здесь нет ограничений - спрашивайте и получайте ответы.

Вопрос № 37 ( .::A.[LK].S::. )

Где можно скачать электронные книги по Visual C++ 6 или выше?
И по C++Builder 6?

Желательно чтоб в этих книгах было полное описание IDE, множество примеров, а так-же чтоб книга была написана понятным языком.

Заранее Спасибо!

Ответить на вопрос

Вопрос № 38 ( E. Sh. )

В классе CRichEditCtrl реализована возможность перемещать выделенный текст мышкой.
Я реализую подсветку синтаксиса в CRichEditCtrl. Для того, чтобы не перекрашивать весь
текст целиком каждый раз после изменения, мне в частности надо знать, откуда мы переместили
текст и куда (кстати, перемещать текст можно, например, и из ворда).
Как узнать, что за текст мы перемещаем, откуда, и куда???

Ответить на вопрос

Вопрос № 39 ( Сергей )

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

Буду рад ссылкам по этой теме.

Ответить на вопрос

Вопрос № 40 ( Kirill )

Подскажите пожалуйста как работать в Visual C++ с COM портами
Заранее благодарен

Ответить на вопрос

Вопрос № 41 ( Yulia )

Здравствуйте.
Вопрос касается вычислений. Есть функция:

double  TSingFunk::Single_Sy(double Xn, double Yn, double Xk, double Yk)
{
double Sy, S;
if (Xn!=Xk)
        {
        S=Xk*Xk*(2*Yk*Xk+Yn*Xk-3*Xn*Yk);
        S=S+Xn*Xn*(Xn*Yk+2*Yn*Xn-3*Yn*Xk);
        S=-S/(-Xk+Xn);
        Sy=S/6;
        }
else Sy=0;
return Sy;
}

она работает корректно. Но хотелось бы узнать, почему если записать
так:

double  TSingFunk::Single_Sy(double Xn, double Yn, double Xk, double Yk)
{
double Sy, S;
if (Xn!=Xk)
        {
        S=Xk*Xk*(2*Yk*Xk+Yn*Xk-3*Xn*Yk);
        S=S+Xn*Xn*(Xn*Yk+2*Yn*Xn-3*Yn*Xk);
        S=S*(-1/6)/(-Xk+Xn);  //ec-ca yoie no?i?ee
        }
else Sy=0;
return Sy;
}

при выполнении условия Xn!=Xk она почему-то возвращает 0.
P.S. я с VB на C++ перехожу, там бы такое работало. Может я чего-то
недопонимаю. Проверила в Exsel эти же формулы там оба варианта
показывают один результат. Заранее спасибо.

Ответить на вопрос

Вопрос № 42 ( const )

Уважаемые знатоки! Не могли бы Вы подсказать, как в Visual C++ 6 и
Builder C++ 6 можно работать с портами COM, LPT, USB, или
указать ссылку, где это подробно описано. Заранее спасибо.

Ответить на вопрос

Вопрос № 43 ( Lenin )

Здравствуйте!
У меня такой вопрос:почему когда я компилирую такой код

#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
 
int main(void)
{
   randomize();
 
   cout << random(100);
 
   getch();
 
   return 0;
 
}

в vicual c++ 6.0 выдается ошибка, а когда в borland c++ 5.5 всё проходит нормально и как избежать ошибки

Ответить на вопрос

Вопрос № 44 ( atavin_ta )

Подскажите, можно ли использовать OpenGL и DirectX для вывода изображения в
дочернее окно и как это делается? Есть ли в этих библиотеках процедуры или
функции для пересчета координат мыши в трехмерные координаты сцены (одну
координату предполагается прямо задавать с помощью Scroll-колеса мыши или с
помощью дополнительного окна)? Можно ли при этом использовать объектную
привязку с отсечкой по расстоянию, то есть автоматический поиск точки,
ближайшей к данной, либо основания нормали на ближайшее к данной точке ребро
из второй заданной точки (ее коррдинаты в готовом виде хранятся в памяти в
специальной переменной), или ближайшей к данной точке выделенной точки
какого-либо объекта, но если расстояние от курсора до автоматически
найденной точки окажется больше определенного предела, то должен
возвращаться NULL? Поиск ближайшей или выделенно точки должен осуществляться
из числа уже присутствующих в массиве. При привязке к
основаю нормали должны вычисляться координаты новой точки, после чего
должно проверяться совпадение с уже существующими точками. При перезадании
координат любой точки, если новые координаты совпадают с координатами
другой точки тогоже объекта, то один экземпляр записи этих координат
удаляется, массив координат точек дефрагментируется. Как индексировать
каркасную сеть? Координаты всех вершин заносятся в отдельный массив,
общий для всех объектов, для каждой точки ровно столько раз, скольким
объектам (но не полигонам) эта точка принадлежит, а полигоны описываются
индексами -- номерами вершин. Все полигоны хранятся в общем массиве и
группируются в объекты, каждый объект описывается индексом перквого
полигона и количеством полигонов в этом объекте. Индексный массив
полигонов сортируется по принадлежности к объетам. Должно быть
придусмотрено добавление граней в объект и удаление ее оттуда (с
дефрагментацией индексного массива полигонов), причем, если грань
целиком оказывается внутри объекта, она удаляется автоматически.
Все полигоны -- треугольники, если грань имеет больше вершин, она
составляется из нескольких полигонов. При индексации вершин должен
соблюдаться порядок обхода их контуров (против часовой если смотреть
на полигон с одной строны, (выбираемой, но один раз для каждой
поверхности) и по часовой -- если с противоположной. Причем, сам
выбор строны поверхности должен сохраняться в виде порядка обхода
контуров этой поверхности, а при перезадании стороны меняться на
вершины всех полигонов пределах поверхности должны
переиндексироваться в новом порядке. Как сделать "резиновые"
объекты внутри 3D сцены? Как на одну поврехность с двух сторон
натянуть разные текстуры? Как сделать одностороннепрозрачную,
двустророннепрозрачную и непрозрачную поверхности? Как сделать
отражающую поверхность? Как сделать преломляющую поверхность?
Как сделать наложение и перекрытие текстур в зоне пересечения нескольких
поверхностей (части всех поверхностей полностью совпадают, но
описываются разными полигонами, сами поверхности имеют разные
размеры, меньшие полностью или частично лежат на больших)?
Как нарисовать дождь, падающий снег, облака (в том числе при ветре),
волны (от капель, движения объектов, в том числе, кильватер, от ветра),
рельеф открытой местности? Как сделать независимое вращение и
перемещение нескольких объектов внутри 3D сцены и движение камеры
так, чтобы можно было углы и координаты задавать мышью и можно
было бы тойже мышью регулировать размеры объектов? Как в OpenGL
или в DirectX сделать отверстие и прозрачную вставку в объект? Как в
OpenGL или в DirectX выделить одну точку, одну грань (в том числе,
состающую из нескольких полигонов) и один объект -- сразу все, но
визуально различно. Если готовых процедур и функций в библиотеках
OpenGL или DirectX нет, подскажите, как такие подпрограммы, но с
минимальным временем исполениея и желательно с максимальным
использованием OpenGL или DirectX? Задача -- сделать 3D редактор
с дочерними окнами управления и индикации с возможностями
непосредственным задания координат точек мышью, объектной
привязки в стиле AutoCAD 14 и "резиновыми" телами и фигурами
для редактирования в нем 3D моделей для последующего их
использования в 3D игре и саму игру (в игре из перечисленного
будет использоваться только вращение и перемещение объектов и
камеры, причем, не мышью, а по параметрам, передаваемым из
специальных процедур (их я попробую написать сначала сам)).
Вращение и перемещение объектов должно отрабатываться максимально
быстро (чтобы эти процедуры можно было использовать в игре). Как
загружать текстуры (жалательно из ресурсов) и выбирать их для
поверхностей? Жалательно получить разные варианты ответов на все
заданные вопросы -- и по OpenGL и по DirectX, причем как можно проще
сформулированные и с коментариями в листингах -- я впринципе на C
пришу еще очень криво и тормозно, потому что этот язык для меня, хотя
на других языках, например, на паскале, пишу уже хорошо, иногда немного
странновато но обычно эффективно, а в листингах программ,
исполбзующих OpenGL и DirectX уже по разу запутался, а хочу не просто
получить нечто малочитабельное на заданную тему, а разобраться и
сделать все задуманное, используя только C++, заголовочные файлы,
библиотеки импорта и DLL. По движению желательно получить даже
три варианта ответов: два с минимальным временем исполения и
желательно с максимальным использованием OpenGL и DirectX
и процедуру, модифицирующую массив координат вершин (в игре
будет использован один вариант, может быть два с ветвлением в
зависимости от настроек программы, в редакторе -- третий). Кто
может, подскажите, как свалить все, что можно, еще в одну или
несколько DLL (с комментариями по поводу создания в Microsoft
Visual C++ библиотек ипорта и внесения имен находящихся в
DLL подпрограмм в заголовочные файлы всех проектов, где
они вообще должны упоминаться в заголовочных файла --
один раз я уже пробовал написать свою DLL, она загружалась,
но почему-то не исполнялась, а при упоминании в заголовочных
файлах имен вынесенных в DLL подпрограмм, начинались
трудноуписуемые и малопонятные глюки, но на Делфе DLL у
меня получались вполне прилично и даже исполнялись в моих
приладах (выносил в DLL до трети неинтерфейсных задач
проекта и все работало), поэтому и нужны комментарии, чтобы
понять, чем создание и использование DLL в C отличается от того
же процесса в Делфе: пойму разницу -- сделаю нормально)?
Еще хотелось бы получить описание как можно большего числа
правильных многогранников (двумя числами -- число углов в каждой гране
и число граней и ввиеде примеров списков координат вершин,
по схеме "одна грань -- один полигон", без указания типа данных, названия
по русски, координаты -- константами или константными выражениями

(куб=
{{{0,0,0},{1,0,0},{1,1,0},{0,1,0}},{{0,0,1},{1,0,1},{1,1,1},{0,1,1}},
 {{0,0,0},{1,0,0},{1,0,1},{0,0,1}},{{0,1,0},{1,1,0},{1,1,1},{0,1,1}},
 {{0,0,0},{0,1,0},{0,1,1},{0,0,1}},{{1,0,0},{1,1,0},{0,1,1},{1,0,1}}})).

Координаты вершин имеют тип float, при проверке совпадения
надо сравнивать не сами координаты по всем разрядам , а
расстояния между точками с некоторым пределом, определяющим
пространственное разрешение процедуры сравнения. Должны
поддерживаться многоугольники, визуально имитирующие плоские
фигуры второго порядка и их сектора и сегменты (длина внешней
стороны равна тому же пределу, при масштабировании число сторон
корректируется, где-нибудь сохраняется флаг, отличающий эти
многоугольники от остальных, индекс первого коэффициента
уравнения кривой, для сектора -- еще один флаг и индексы или
флаги, отмечающие стороны не подлежащие такой коррекции с
возможностью отбрасывания этих флагов и индексов при экспорте
в формат, который будет использоваться в игре -- там
число сторон не корректируется, размеры постоянны) и многоранники,
визуально имитирующие тела второго порядка, цилиндры и конуса
с основаниями -- плоскими фигурами воторого порядка и сектора и
сегменты названных тел (замкнутые и не замкнутые
для всех тел второго порядка, с сохранением тех же флагов, как
и для элипсов и плоских криволинейных секторов и с
возможностью отбрасывания этой информации при экспорте,
длина внешнего ребра равна тому же пределу). Пользователь должен
манипулировать точками, гранями и целыми телами, но не
отдельными полигонами в группе, составляющей грань. Ответы типа
"используй буфер" в этот раз не принимаются -- меня интерисует не
устранение глюков, как в прошлый раз, когда у меня мерцало плоское
изображение, а вообще хоть каккая-нибудь (но не тормозная --
тормозной вариант я могу сделать вообще без полигонов)
реализация выше перечисленного, буфер же сам по себе ничего
этого не делает. Подсказки по поиску плоских координат мыши
и обработки Scroll-колеса мыши также не принимаются -- уже
азобрался. Ответы типа "не пишы токого" были умесны в прошлый
раз, но не в этот -- одно дело, когда програмер не въезжает во что-то
простое и знакомое и в результате допускает элементарный глюк, но
вполне прилично реализует другие, более сложные аспекты той же
задачи, тогда ему надо писать не игры, а наглядные пособия, как
делать не надо и совсем другое, когда програмер пытается освоить
что-то для него новое -- каждый когда нибыдь начинает, подскажите если
у вас больше опыта, может что-нибыдь получится. Еще подскажите, как из
под C++ сохраять данные в реестре и читать их оттуда, причем так, чтобы
при отсутствии в реестре ключа он создавался автоматически и в него
записывалось значение по умолчанию форматы: строка и двоичное число
заданной разрядности (в принципе разной, но для каждого параметра,
постоянной) целое и float (в реестре можно обозвать его любым двоичным
типом, поддерживаемым системой и редактором реестра, при чтении и
записи можно его и преобразовывать, но хотелось бы получить подсказку,
как это преобразование можно осуществлять), итого три группы форматов
в пямяти в сегменте программы и две или три группы форматов в
реестре. Еще меня интересует, где можно найти текстуры: металлы,
вода, туман, дерево, камни, бумага, стекло, песок, грунт, трава, бетон,
кирпич, асфальт, кафель, ткани, снег, все в нескольких разных вариантах,
небо -- в разную погоду? Можно ли где-нибудь найти готовые
ресурсовые DLL с такими тектурами (по группам или в общей куче) и
можно ли потом будет их использовать из под Microsoft Visual C++ 4.0
или придется все ресурсные DLL компилировать самому?
Где взять готовые 3Dмодели оружия, монстров, людей, машин с
описанием их форматов, чтобы можно было написать процедуры их
загрузки? Кто согласится сообщить адрес для пресылки полностью
готового редактора и сможет в нем что-нибудь нарисовать и переслать
назад (сам рисую плохо (даже в 2D), хотя и знаю интерфейс
редакторов, к тому же не очень могу придумать как и что должно
выглядеть). Тарас.

Ответить на вопрос

Ответы

Ниже приведены вопросы предыдущего выпуска и ответы на них.

Вопрос № 30 ( atavin_ta )

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

Ответ ( Karen Hakhumyan )

DirectX SDK находится на сайте microsoft.com, вметсе с SDK прилагаются также примеры.

Ответ ( Жариков Игорь )

А скачать ДиректХ СДК с сайта мелкософта не пробовал? Там и либы, и
заголовочные файлы и файлы примеров есть, правда размерчик у архива
не маленький.

Ответ ( Maxim Zhigadlo )

Все что тебе надо ищи на
www.microsoft.com
Называется DirectX SDK.
Вопрос № 31 ( Александр Носков )

Господа, где можно скачать последний MSDN для MS VC++ 6?

Ответ ( Valentin O. Nikolaev )

Если есть терпение, то можете качать MSDN Library как для MS Visual Studio
6.0, так и для MS Visual Studio .NET с помощью EMule или eDonkey. Раньше
былы выложены образы дисков (CD) на сервере Microsoft - сам год назад
скачивал. Это гораздо более быстрая возможность. Но сейчас, кажется, там их
уже нет. Но, на всякий случай, сообщаю адреса, так как они могут быть
недоступны лишь временно:

download.microsoft.com/download/b/d/c/bdccea1b-96d9-4ad9-8045-56619af95835/qtr40enud1.img
download.microsoft.com/download/b/d/c/bdccea1b-96d9-4ad9-8045-56619af95835/qtr40enud2.img
download.microsoft.com/download/b/d/c/bdccea1b-96d9-4ad9-8045-56619af95835/qtr40enud3.img

Сам бы был очень благодарен, если кто знает теперешние адреса на сайте
Microsoft и поделился бы ими.
(Валентин)

Ответ ( Maxim Zhigadlo )

А где ж еще? Тут:
www.microsoft.com
Вопрос № 32 ( atavin_ta )

Подскажите, пожалуйста, можно ли для динамически подключаемых библиотек, содержащих только ресурсы создавать библиотеки импорта и как потом их лучше использовать. Тарас.

Ответ ( 3V )

Можно.
В принципе, должен создавать сам компилятор.
В VC для создания либы надо указывать ключ /implib компилятора.
Этот ключ можно указывать в настройках проекта в IDE (по умолчанию он всегда есть). С ключом надо указывать имя генерируемой библиотеки. Например: /implib:"Debug/mylib.lib".
Использовать потом dll с ресурсами просто - при поиске и загрузке ресурсов надо указывать дескриптор модуля этой dll (кстати, именно по этой причине библиотека импорта и не особо нужна - с ней придется получить дескриптор через GetModuleHandle, а без нее получишь сразу через LoadLibrary).
В MFC есть функция AfxSetResourceHandle, позволяющая указать модуль с ресурсами для загрузки методами класса CWinApp.
Вопрос № 33 ( atavin_ta )

Народ, помогите найти такую директиву: надо в MS Visual C++ 4.0 Deveploment Studio специфицировать процессор, как pentium, чтобы программа не могла потом запускаться на косых машинах типа i80386-i80486, но на пне использовала полную разрядность команд и регистров в соответствии с возможностями процессора и указанными в исходники типами данных и операциями и полную длину конвейера сколько есть (для пня второго, третьего или четвертого дерективы не нужны -- перебор). Я пробовал с опциями Code Generation -- не помогало. Если потом с помощью другой заставить транслятор сгенерировать асемблерный код дополнительно к экзешнику, в нем оказывается спецификатор процессора i80386 (для асемблера мне известны все такие директивы), визуальное сравнение обоих вариантов по быстродействию показывает их идентичность, длина экзешника также не меняется (измерено непосредственно системой - 9.97 мегабайта в любом случае). Тарас.

Ответов нет
Вопрос № 34 ( atavin_ta )

Подскажите, как стабилизировать игру по времени. Я попробовал три варианта. Если все команды игрока выполняются в таймере, то максимальной частотой очереди оказывается 18 выстрелов в секунду (объединять их в короткие очереди смысла мало -- при стрельбе с одновременным вращением пули будут группироваться и попадать друг в друга, независимо от дальности стрельбы). Если командды выполняются в отдельном потоке, то частота очереди оказывается выше 5000 выстрелов в секунду -- перебор (к тому же нет возможности изменять частоту в зависимости от вида оружия, то есть, если в игре есть автомат и пулемет, или два разных пулемета, то темп огня у них совпадает). Если же в дополнительном потоке проверять текущее время, а после этой проверки уже запускать процедуру, исполняющую все команды, то бызовая частота вызовов этой процедуры почему-то оказывается 55 раз в секунду (маловато, особенно если в игре предполагается использование пулеметов с вращающимися стволами -- необходима базовая частота не ниже 100 герц). Причем, быстродействия достаточно для того, чтобы обеспечить частоту выше 1000 герц -- при инверсии флага пропуска вызова исполняющей процедуры частота снова повышается и оказывается не ниже 5000 герц. Подскажите, как сделать, чтобы определенная процедура вызывалась с какой-нибудь постоянной частотой, выбранной из диапазона 100-1000 герц, причем так, чтобы при переносе программы на машину с еще большим быстродействием частота вызовов не менялась, или менялась бы не значительно (не больше, чем на 5%). Для тестов использовалась заготовка игрового движка еще без процедур рендеринга сцен и инициации библиотек с трехмерной графики, но уже с готовой процедурой опроса клавиатуры и готовым счетчиком боекомплекта, темп огня оценивался по времени полного обнуления счетчика при количестве патронов в начале теста 5000 или 50000 штук. Тарас.

Ответ ( Михаил )

Можно попробовать использовать функцию QueryPerformanceFrequency для
получения частоты системного счётчика (ticks) , затем создать отдельный поток и в цикле
функцией QueryPerformanceCounter считывать его значение. Ну и с
нужной частотой вызывать нужную процедуру.

Ответ ( Denis Kravtsoff )

Старая прелесть IBM PC-совместимых компов. На мамке стоит делитель
от кварцевого генератора, с которого тики идут на системный
перепрограммируемый таймер. По умолчанию делится по максимуму.
Точные цифры сейчас не вспомню, но получается, что частота
обновления 18.2 Гц (55 мск). Есть в винде мультимедийный таймер с
потенциально куда более высоким разрешением, читай про:
timeGetTime (время со старта винды в миллисекундах),
timeSetEvent (можно вешать свою функцию обработки),
timeBeginPeriod (увеличить минимальный интервал таймера)

ЗЫ А в старые добрые времена люди перепрограммировали таймер, меняя
   коэффициент пересчёта. Потом ещё вещали свой обработчик
   прерывания по таймеру, чтобы не сбивать системные часы.
   Воть, а народ всё винду ругает ;) .

ЗЗЫ ИМХО: не самый верный подход к проектированию игры. Звук
    вращающегося пулемёта и синхра - лишь капля в море. Куда больше
    внимания следует уделить дизайну игровых структур и организации
    взаимодействия между ними, о движке вообще молчу. Парой слов:
    www.gamedev.ru, www.dev.dtf.ru, www.gamedev.net.
Вопрос № 35 ( Валера )

Приветствую уважаемых знатоков.
Как из программы, написанной на C Builder открыть документ, например
.html, .xls или любой другой. И чтобы в любой момент можно было его завершить.

Ответ ( Михаил )

По расширению документы отрываются с помощью ShellExecute:

AnsiString PathName=GetCurrentDir();
AnsiString FileName="file.html";
int Err=int(ShellExecute(Handle,"open",FileName.c_str(),NULL,
            PathName.c_str(),SW_RESTORE));
if (Err<=32)
   MessageBox(FileName.c_str(),
             ("Ошибка открытия файла. № ошибки - "+
             IntToStr(Err)).c_str(),MB_OK);
Вопрос № 36 ( Валера )

Как на C Builder сделать следущее.
Сохраняю из RichEdit в файл RichEdit->Lines->SaveToFile(FileName).
Когда этот просмотриваю блокнотом, то виден набор дополнительных символов, вероятно, говорящих о шрифте. Как сохранить информацию в файл без данных о шрифте, лишь только текст.

Ответ ( Maria Shpileva )

я эту проблему решала так - считывать строку из Edit' а и писать в файл fprintf' ом или можно виндовые функции.
к строкам вроде по индексу обращаться можно, так что всё просто
а по поводу доп. информации - в этом и прикол, что сохраняешь в файл и можешь потом восстановить всё точно так, как было
если это не надо, может просто использовать Memo ?

Ответ ( Лисенок )

Попробуй RichEdit->Lines->GetText
а потом сам сохраняй полученный текст в файл, благо в С++ есть куча
функций работы с файлами
Книги по C/C++
Visual C++ на практике.
Visual C++ на практике.

Автор: В. А. Жарков

Книга посвящена современным методам разработки технологических процессов в промышленности. В ней описана методика выполнения практических расчетов, начиная от простейших расчетов площади, объема и массы несложных изделий (заготовок) и заканчивая сложными технологическими процессами изготовления различных изделий на основе комплексов визуального объектно-ориентированного программирования.

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

Страница книги на Озоне
Программирование на языке C++. Самоучитель.
Программирование на языке C++. Самоучитель.

Автор: Я. К. Шмидский

Эта книга - самоучитель и практическое руководство по объектно-ориентированному программированию на языке C++. В ней на профессиональном уровне изложены все средства объектно-ориентированного программирования на этом языке:
  • технология применения инкапсуляции, наследования и полиморфизма
  • абстрактные классы и методы
  • виртуальные функции
  • шаблоны, обобщенные алгоритмы, контейнеры
  • библиотека стандартных шаблоно STL
Рассмотрено также создание Windows-приложений с помощью Visual Studio .NET и библиотеки базовых классов Microsoft (MFC). Все базовые понятия и конструкции языка демонстрируются на большом количестве детально разобранных примеров.

Книга написана на понятном, доступном языке.

Она рассчитана на: школьников, студентов, аспирантов, а также всех, кто хочет освоить объектно-ориентированное программирование на языке C++ и уже знаком с языком C.

Страница книги на Озоне
Всего доброго. До встречи в следующем номере.

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.cppqa
Отписаться

В избранное