Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2012, 20:07   #1
Дмитрий999
 
Регистрация: 13.02.2011
Сообщений: 3
По умолчанию Работа с большим количеством текста в String иTextbox

Доброго времени суток! Суть моей задачи : минимизировать градиентным методом функцию, для одномерной оптимизации использовать методы дробления и золотого сечения, на каждой итерации выводить координаты точки, значение функции, градиент и его норму а также коефициент альфа. Програмноя реализовал все правильно, но вижуал в String оч долго рисует 2000-4000 строк. Вот код метода:

void rez(double eps, int chose, int meth, TextBox ^r1)
{
String ^result = gcnew String("");
String ^chern;
double x_0 = 10;
double y_0 = 10;
double e = 1000;
double x,y;
double alp;
int i=1;
switch (meth)
{
case 1 : { result += L"Метод золотого січення\r\n";break; };
case 2 : { result += L"Метод ділення\r\n"; break;};
}
switch (chose)
{
case 1 : {result += L"Зупинка при малому модулі різниці сусідніх значень функції\r\n"; break;};
case 3 : {result += L"Зупинка при малій нормі різниці сусідніх значень аргументу\r\n"; break;};
case 2 : {result += L"Зупинка при малому значенню норми градієнту\r\n"; break;};
}
while ( e>eps)
{
switch (meth)
{
case 1 : { alp = zolot(eps,x_0,y_0); break; };
case 2 : { alp = dilen(eps,x_0,y_0); break;};
}

x = x_0 - alp*grad(x_0,y_0,eps)[0];
y = y_0 - alp*grad(x_0,y_0,eps)[1];
chern = Convert::ToString(i);
// Здесь в строку result начинает выписываться промежуточные данные если записывать сразу в TextBox прога тож долго работает
result += L"ітерація № ";
result += chern;
result += L"\r\n";
chern = Convert::ToString(x);
result += L"x= ";
result += chern;
result += L"\r\n";
chern = Convert::ToString(y);
result += L"y= ";
result += chern;
result += L"\r\n";
chern = Convert::ToString(func(x,y));
result += L"f(x,y)= ";
result += chern;
result += L"\r\n";
chern = Convert::ToString(alp);
result += L"alpha= ";
result += chern;
result += L"\r\n";
chern = Convert::ToString(norm(grad(x,y,eps )));
result += L"||df||= ";
result += chern;
result += L"\r\n";
chern = Convert::ToString(grad(x,y,eps)[0]);
result += L"df.x= ";
result += chern;
result += L"\r\n";
chern = Convert::ToString(grad(x,y,eps)[1]);
result += L"df.y= ";
result += chern;
result += L"\r\n";
result += L"------\r\n";
i++;
switch (chose)
{
case 1 : {e = Math::Abs(func(x,y)-func(x_0,y_0)); break;};
case 3 : {e = Math::Sqrt( (x-x_0)*(x-x_0) + (y-y_0)*(y-y_0)); break;};
case 2 : {e = norm(grad(x,y,eps)); break;};
}
x_0 = x;
y_0 = y;

}
// здесь в textBox записываються промеж. результаты
r1->Text = result;

}
Короче помогите как-то секономить время записи в строку или сразу в textBox
Дмитрий999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сводная таблица с большим количеством строк s8259 Microsoft Office Excel 1 03.04.2011 00:28
работа с большим объемом данных Ckif Microsoft Office Excel 1 14.09.2010 17:05
Метод для управления большим количеством данных eda Microsoft Office Excel 0 13.07.2009 10:50
ГСЧ с большим количеством нулей Frog25 Общие вопросы C/C++ 6 26.06.2008 18:22