Учебник по Visual C++ .Net

         

Вспомогательная функция Напомним


{

CString s = "0.0";

if (v == 0.)

return s;

//====== Сначала делаем грубую прикидку

//====== Пробуем поместиться в 20 позиций

s.Format("%20.10f",v);

//====== Выясняем порядок шага сетки,

//====== переворачивая его знак (трюк)

int nDigits = int(ceil(-loglO(bХ ?m_DataX.Step

: m_DataY.Step)) ) ;

//====== Если все изменения происходят до запятой,

//====== то цифры после запятой нас не интересуют

if (nDigits <= 0)

nDigits = -1;

else



if(bХ)

nDigits++; // Эстетическая добавка

//====== Слева усекаем все

s .TrimLeft () ;

//====== Справа оставляем минимум разрядов

s = s.Left(s.Find(".") + nDigits + 1);

int iPower = bX ? m_DataX.Power : m_DataY.Power;

( //====== Нужен ли порядок?

if (iPower != 0)

{

//=== Нужен, если не поместились в (10"-3, 10А+4)

CString add;

add.Format("-e%+d",iPower);

s += add;

}

return s;

}

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

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

Рис. 11.3. Распределение поля для набора данных по умолчанию



Содержание раздела