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

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

  Все выпуски  

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


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

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

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

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

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

Подписчикам

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

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

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

Вопросы

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

Вопрос № 45 ( Randoll )

Здравствуйте !
Почему у меня в C++Builder 6.0 не работает следующий код:

        struct { int a; int b; } the;
        the = { 7, 8 };

В последней строке в месте начала фигурной
скобки выдает ошибку E2188 Expression syntax. Почему не работает ?
Хотя в Visual C++ 6.0 такое работает.

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

Вопрос № 46 ( ZAT ULPK )

Какой язык программирования лучше всего изучать Visual C++, C++ Builder 6, Visual Studio.NET
чтоб на этом языке можно было делать все от системного, баз данных до OpenGL
и так далее, или лучше какой другой например Java, Visual Basic, Delphi.

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

Вопрос № 47 ( Warlock )

Дамы и господа! :) Недавно столкнулся с такой проблемой: иногда при сборке программы (MS VC++
6.0 Enterprise и Standart Edition'ы) на этапе
компиляции или линкования происходит следующий глюк: компилер
завершает компиляцию (или линкер - линкование), но не "сообщает" об этом
оболочке. Т.е. VC++ думает, что сборка не завершилась и "висит".
Нажатие на "stop build" ни к чему не приводит. :(
Подскажите, пожалуйста, как с этим бороться.
Заранее благодарен.

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

Вопрос № 48 ( Евгений Жарков )

Здравствуйте, пишет вам Жарков Евгений, мой вопрос: С чего надо начать мне программировать в Borland C++, я хочу понять как писать программы без помошников, которые делают все за тебя, на чистом листе, хотябы объясните на примеры простой проги, Hello World? Какие коды нужно писать и для чего они предназначены?
Если вы не хотите объяснять, то посоветуйте мне где взять толковую учитилку по программированию, для новичков, У меня есть ли-ра по программированию, вот только там я плохо понимаю!

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

Вопрос № 49 ( joe329 )

Такой вопрос.

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

Просмотрел множество файлов *.h, но так и не нашел ничего похожего. Не
подскажите, как это сделать? Желательно, чтобы это работатало под
любым компилятором (есть стандарт POSIX, но не помню - об этом ли он?)

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

Вопрос № 50 ( xyligan )

Подскажите, пожалуйста, как обрабатывать сообщения от TreeCtrl в
классе, производном от CTreeView. Я, вроде бы, делаю всё как с
другими элементами, но, похоже, CTreeView не получает ни одного
сообщения WM_NOTIFY.

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

Вопрос № 51 ( Aziz )

Здраствуйте.
пожалуйста помогите.месяц назад я написал прогу.деньги уже успел потратить...
DB, прога открывает XML файл, редактирует его, но теперь прога перестает сохранять изменения, прога сохраняется при каждом изменении.
заранее спасибо.

//-----------------------------------------
//---------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
#include "Unit6.h"
//---------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------
void __fastcall TForm1::openClick(TObject *Sender)
{
if(OpenDialog1->Execute()){
ClientDataSet1->Active=false;
ClientDataSet1->FileName=OpenDialog1->FileName;
ClientDataSet1->Open();
ClientDataSet1->Fields->Fields[0]->Visible=false;
}}
//---------------------------------------------------------------
void __fastcall TForm1::saveClick(TObject *Sender)
{
if(ClientDataSet1->Modified){
ClientDataSet1->Post();
}
}
//---------------------------------------------------------------
void __fastcall TForm1::optionsClick(TObject *Sender)
{
Form2->Show();
}
//---------------------------------------------------------------
void __fastcall TForm1::Exit1Click(TObject *Sender)
{
exit(1);
}
//---------------------------------------------------------------
void __fastcall TForm1::About1Click(TObject *Sender)
{
AboutBox->Show();
}
//---------------------------------------------------------------
void __fastcall TForm1::Find1Click(TObject *Sender)
{
Search->Show();
}
//---------------------------------------------------------------
void __fastcall TForm1::MTIITSClick(TObject *Sender)
{
Form5->Show();
}
//---------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Form5->Show();
Timer1->Enabled=false;
}
//---------------------------------------------------------------
void __fastcall TForm1::Close1Click(TObject *Sender)
{
if(!ClientDataSet1->Modified){
ClientDataSet1->Close();
}}
//---------------------------------------------------------------
void __fastcall TForm1::ToolButton3Click(TObject *Sender)
{
if(FontDialog1->Execute()){
Form1->Font=FontDialog1->Font;
Form2->Font=FontDialog1->Font;
Form5->Font=FontDialog1->Font;
Search->Font=FontDialog1->Font;
}}
//---------------------------------------------------------------
void __fastcall TForm1::Name1Click(TObject *Sender)
{
switch (((TMenuItem *)Sender)->Tag){
case 12: Search->RadioButton1->Checked=true;break;
case 13: Search->RadioButton2->Checked=true;break;
case 14: Search->RadioButton3->Checked=true;break;
case 15: Search->RadioButton4->Checked=true;break;
case 16: Search->RadioButton5->Checked=true;break;
case 17: Search->RadioButton6->Checked=true;break;
}
Search->Show();
}
//---------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ClientDataSet1->IndexFieldNames="qwe";
}
//---------------------------------------------------------------
void __fastcall TForm1::ToolButton15Click(TObject *Sender)
{
if(SaveDialog1->Execute()){
ClientDataSet1->SaveToFile(SaveDialog1->FileName);
}}
//---------------------------------------------------------------
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
if(CheckBox1->Checked){
ClientDataSet1->ReadOnly=false;
}else{
if(ClientDataSet1->Modified){
ClientDataSet1->Post();
}
ClientDataSet1->ReadOnly=true;
}
}
//---------------------------------------------------------------
 
void __fastcall TForm1::ToolButton7Click(TObject *Sender)
{
AnsiString fl,a,f,d,fll;
fl=ExtractFilePath(ExpandFileName("MKTB.exe"));
ClientDataSet1->Active=false;
ClientDataSet1->FileName=fl+"\\Listsofjeks\\jlistnatpl.xml";
//
d=ExtractFilePath(ClientDataSet1->FileName);
f=ExtractFileName(ClientDataSet1->FileName);
a=d+"tmp_"+f;
if(FileExists(a)){
DeleteFile(a);
}
ClientDataSet1->Open();
ClientDataSet1->Fields->Fields[0]->Visible=false;
ClientDataSet1->SaveToFile(a);
ClientDataSet1->FileName=a;
}
//---------------------------------------------------------------
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
TLocateOptions SearchOptions;
SearchOptions << loPartialKey << loCaseInsensitive;
Form1->ClientDataSet1->Locate("Naueaei Aau,Nieaau,Aoanuiui aau",
                              Edit2->Text,SearchOptions);
}
//---------------------------------------------------------------


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

Ответы

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

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

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

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

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

Ответ ( 3V )

Ну... посмотри, например тут:
http://anatolix.naumen.ru/Books/Index
Тут просто много классических и нужных книг.

И еще вот тут: http://forum.ixbt.com/0026/002183.html смотрите.
Тут очень много ссылок.
Вопрос № 38 ( E. Sh. )

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

Ответ ( 3V )

Узнать об окончании перетаскивания можно обработав сообщение WM_NOTIFY с кодом EN_DRAGDROPDONE от ричедита.
Можно также разрегистрировать созданный контрол как целевое окно для перетаскивания при помощи ::RevokeDragDrop, а затем зарегистрировать снова, но уже предоставив свой объект, реализующий IDropTarget. Типичное решение в этом случае - пользоваться классом COleDropTarget. Однако, если делать такое, то перестанет работать автоскроллинг при перемещении курсора мыши над ричедитом. И придется этот механизм самому писать.
Вопрос № 39 ( Сергей )

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

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

Ответ ( NET_PROGA )

Это Вам в распознавание... Может на какие мысли натолкнёт вот этот сайт
http://www.Open-Eye.narod.ru
Вопрос № 40 ( Kirill )

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

Ответ ( NET_PROGA )

Как с обычными файлами. Открыл, записал, считал, закрыл.
Читайте MSDN, там всё расписано.

Ответ ( Vladimir Vetlugin )

Насколько знаю в VC нет специальных классов для работы с периферией. Надо пользоваться API. Все начинается с CreateFile(...).
Вопрос № 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 эти же формулы там оба варианта
показывают один результат. Заранее спасибо.

Ответ ( Serge Kraikov )

В выражении

  S=S*(-1/6)/(-Xk+Xn);

-1/6 дает 0, поскольку выполняется целочисленное деление.
Надо писать -1./6, тогда константа -1 преобразуется в double и деление
выполняется над вещественными операндами.

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

Привет

Видимо Вам сложно с большим количеством всяких S и Sy разобраться ... ;-)
Поэтому предлагаю их не использовать вообще:

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


Ответ ( arthur tregubovich )

Hi, Yulia, С воспринимает числа без точки как целые и, естественно, приводит результат к тому же виду, т.е. (int) 1/6 = 0. Пиши так: 1.0/6.0, it rulez! Good luck!

Ответ ( Ярмак Сергей )

Все достаточно просто:
1. Наверное ты ошибся в коде

     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);
       --- РЕЗУЛЬТАТ нигде не присваивается Sy, поэтому
       функция может возвращать непредсказуемое значение
     }else
       Sy=0;
     return Sy;
     }

2. Если ты все же написал так код

     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);
       Sy=S*(-1/6)/(-Xk+Xn);
       --- (-1/6) = 0, т.к. выполняется целочисленное деление; дробная
       часть отбрасывается. ну дальше все понятно.
       Последнее выражение следует писать так:
       Sy=-S/6*(Xn-Xk); -- более читабильный код
       или так
       Sy=S*(-1/6.0)/(-Xk+Xn);
       
     }else
       Sy=0;
     return Sy;
     }  


Ответ ( администратор )

(силентий) Во первых, во втором случае Sy не присваивается ничего, но это наверное опечатка. А вот грабли там достаточно распространенные: выражение (-1/6) считается целочисленным делением (int делим на int). И результат его - 0! В первом же случае double делится на int, результат double. Второй случай можно исправить, если просто записать (-1.0/6), (-1/6.0) или (-1.0/6.0). Или еще проще: Sy = - S / 6 / (-Xk+Xn);

Ответ ( joe329 )

Я заметил такое отличие во фрагментах программ:
1-й вариант:

        S=-S/(-Xk+Xn);
        Sy=S/6;

2-й вариант:

        S=S*(-1/6)/(-Xk+Xn); (не работающий)

Так ведь у вас должно возвратиться Sy:
return Sy;
А во 2-м варианте Sy при выполнении условия (Xn!=Xk) никакого значения
не присваивается! Поэтому функция возвращает Sy с неинициализированным
(а поэтому случайным) значением. В данном случае случайным значением
оказался ноль.

В VB делается инициализация по умолчанию = 0. В Си инициализация
переменных при создании не производится. Поэтому если в отведенном для
этой переменной участке памяти находилось какое-то значение, то оно
там и останется.

Ответ ( Тейтельман Игорь Владимирович )

Потому, что при делении (-1/6) ты получишь ноль (целое/целое = целое),
если напишешь (-1.0/6), то все будет нориально.

Ответ ( Тейтельман Игорь Владимирович )

К тому же условие Xn!=Xk, очень скользкое,
потому как одно и тоже значение типа double может отличаться в каком-то
знаке после запятой,
и условие никогда не выполнится.

Ответ ( Warlock )

Здравствуйте!

Во, первых при выполнении условия у Вас выполняются опреации только
над S, а возвращаете Вы Sy, которое ни где не инициализируется. Если
даже в тексте опечатка третья строка в блоке if выглядит так:
Sy=S*(-1/6)/(-Xk+Xn); то происходит следующее:
При делении -1/6 - "-1" и "6" - константы, тип int, результат деления - 0.
Соответственно: Sy=S*0/(-Xk+Xn)=0.
Чтобы всё работало правильно, запишите: Sy=S*(-1/6.)/(-Xk+Xn);

Ответ ( Нагорянский Олег )

В конце оператора условия (после комментариев) просто нужно написать Sy=S;

Ответ ( z_sergey )

Hi!
Если переписать

S=S*(-1/6)/(-Xk+Xn);
как
Sy=S*(-1./6)/(-Xk+Xn);
или
Sy=S*(-1.f/6)/(-Xk+Xn);
или же
Sy=-S/6/(-Xk+Xn);
то все будет вычисляться верно

Все дело в том, что компилятор воспринимает 1 как целое и потому (int)1/6 = 0

Ответ ( NET_PROGA )

Вообще фигня. Неужели компилятор не ругается на возвращение Sy без
инициализации??
Если сработает "if (Xn!=Xk)", то Sy не будет проинициализирован и в таком
виде будет возвращён. :(

И ещё. -1/6 даст ноль. Ведь нигде не сказано, что результат должен быть в
вещественной форме.

::P.S. я с VB на C++ перехожу, там бы такое работало
Ещё бы. бейсик все баги програмиста вылизывает. Он вам и обнулял при
инициализации Sy

Ответ ( Lexxa )

Во втором случае переменной Sy вообще не присваивается никакого значения и
функция должна возвращать "случайное" число.

Ответ ( Vladimir Vetlugin )


S=S*(-1/6)/(-Xk+Xn);
 1 - целое, тогда 1/6 = 0!!!

Надо (-1.0/6), а лучше (-1.0/6.0)

Ответ ( Сергей Шацкий )

Во втором варианте ты вместо Sy написал S (в той строке где есть
комментарий).

Ответ ( Журавлёв Д. К. )

Всё очень просто:
В первом случае в теле оператора if переменной Sy
присваивается значение S/6, а во втором - нет
Т.о. переменная 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
        Sy=S;
 }
else Sy=0;
return Sy;
}


Ответ ( Аркадий Лютиков )

Здравствуйте Yulia.
Я на своем собственном опыте знаю, что как ты не старайся, а выражение (-1/6) Visual C++ принимает за целое, то есть равно 0. Чтобы он понял свою ошибку надо всего лишь указать ему, что 1 это не единица ,а 1.0. Тогда функция принимает вид :

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);
        Sy=S*(-1.0/6)/(-Xk+Xn);  //ec-ca yoie no?i?ee
        }
else Sy=0;
return Sy;
}

и все O'K.

Ответ ( Andr )

Здравствуйте, Юля.
Возвращается Ноль, потому, что при выполнении условия,
Вы ничего не присваиваете переменной Sy
И знание Cpp тут ни при чём.
Я сижу на VB6, но не на шутку начинаю замахиваться на Cpp,
так как он поддерживается во всех операционках.
Вопрос № 42 ( const )

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

Ответ ( NET_PROGA )

См ответ выше.
Вопрос № 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 всё проходит нормально и как избежать ошибки

Ответ ( Vladimir V.Petrov )

В Visual C++ 6.0 и Borland С++ 5.5 используются разные RunTime библиотеки.

MSDN

Generates a pseudorandom number.

int rand( void );

Return Value
rand returns a pseudorandom number, as described above. There is no error
return.

Remarks
The rand function returns a pseudorandom integer in the range 0 to RAND_MAX.
Use the srand function to seed the pseudorandom-number generator before
calling rand.

Requirements Routine Required header Compatibility
rand <stdlib.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP Example

// crt_rand.c
/* This program seeds the random-number generator
 * with the time, then displays 10 random integers.
 */

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main( void )
{
   int i;

   /* Seed the random-number generator with current time so that
    * the numbers will be different every time we run.
    */
   srand( (unsigned)time( NULL ) );

   /* Display 10 numbers. */
   for( i = 0;   i < 10;i++ )
      printf( "  %6d\n", rand() );
}

Sample Output

   19430
   28222
    9710
   12070
    7513
    9501
    1767
   26041
   11872
    4097

Хочу обратить внимание на совместимость с ANSI, таким образом данный код
_должен_ работать для любого компилятора, иначе данный компилятор, по сути,
не является компилятором языка С.

Best regards, Vladimir V.Petrov aka Graf Vovan.

Ответ ( администратор )

Хотелось бы поподробнее: ошибка компиляции ценна не сама по себе, а лишь своим описанием. Не пользуюсь ни одной из этих сред, но... Что есть randomize() и conio.h ? Имхо сие не есть часть стандарта ANSI / ISO. Всего лишь борландовские расширения стандартной библиотеки. И откуда VC может об этом знать?

Ответ ( A.[LK].S )


 //Она у тебя не работает потому что, функции int random(int) и
//randomize() взяты из паскаля, и подерживаются только борландскими
//IDE, а что-б она у тебя заработатла на VC тебе надо сделать следующее.
//
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>

int main(void)
{
  cout << rand() % 100; //Вывод случайного числа от 0 до 99
  getch();
  return 0;
}


Ответ ( wizard )

Здравствуйте

using namespace std;
VS вдёт более строгий учёт простанств имён.

Ответ ( wizard )

Здравствуйте

И ещё : надо юазть

srand(time(null));
rand()%100 + 1


Ответ ( Tolik MordoBoevich )

Не знаю почему, но в Visual C++ 6.0 функций randomize() и random() нет ВООБЩЕ :-(
Вопрос № 44 ( atavin_ta )

Подскажите, можно ли использовать OpenGL и DirectX для вывода изображения в
дочернее окно и как это делается? Есть ли в этих библиотеках процедуры или
функции для пересчета координат мыши в трехмерные координаты сцены...

Вследствие большого объема вопрос не публикуется полностью.
Полный текст вопроса можно найти в предыдущем выпуске.

Ответ ( NET_PROGA )

Офигеть :))))) И в чём вопрос?? Хотя бы на части разбил эту простыню. :)
Книги по C/C++
Язык программирования C++. Учебный курс.
Язык программирования C++. Учебный курс.

Автор: С. В. Глушаков, А. В. Коваль, С. В. Смирнов

Книга содержит описание стандарта языка, его синтаксиса и других специальных вопросов. Это наиболее полное руководство по языку C++, которое дополняется другими изданиями - "Visual C++ 6.0" и "Borland C++ Builder 5", дающими описание использования библиотек C++ компании Microsoft и Borland.

Страница книги на Озоне
Решение сложных задач на С++ [ Exceptional C++ ]
Решение сложных задач на С++ [ Exceptional C++ ]

Автор: Герб Саттер

В данном издании объединены две широко известные профессионалам в области программирования на C++ книги Герба Саттера Exceptional C++ и More Exceptional C++, входящие в серию книг C++ In-Depth, редактором которой является Бьерн Страуструп, создатель языка C++.
Материал этой книги составляют переработанные задачи серии Guru of the Week, рассчитанные на читателя с достаточно глубоким знанием C++, однако книга будет полезна каждому, кто хочет углубить свои знания в этой области.

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

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

В избранное