double F(int k,double h,double xMin,double xMax) {
double result=0;
double k1=((k%2)==0?1:-1);// -1 в степени k
// Вычисляем k!
int i;
double kf=1.0;
for(i=2;i<=k;i++) {
kf*=i;
}
kf*=kf; // (k!)^2
k1/=kf;// ((-1)^k)/((k!)^2);
double x=xMin;
while(x<=xMax) {
double xk=x;
for(i=2;i<=k;i++)
xk*=x;
// xk=x^k
result+=k1*xk;
x+=h;
}
return result;
}
Помогите с представлением формулы
сама ф-ла в архиве! Помогите если не в лом!
Насколько я понял, h - это шаг x, x изменяется от 0 до 50.
Но что такое k?
Вернее, каков его интервал? 0-бесконечность?
Так идеи есть, но нужны уточнения
И по какой переменной сумма? По k или по x?
Вернее, каков его интервал? 0-бесконечность?
Так идеи есть, но нужны уточнения"
k-это просто степень. Она задается самим пользователем.
Спасибо! Посмотрю
У меня возник вопрос. А где тут шаг? Не могу найти. И через слеш написаны не рабочие ф-лы или пояснение?
Через слеш записаны коментарии
Например, (k!)^2 означает фрактал k в степени 2
Последний вопрос! Пытался закинуть ф-ю в Dll и подключить ее к программе. Но вот такая штука случилась: в проге сделал все через дин. загрузку ф-ю указал правильно ,все компилиться, но после запуска проги выдается ишибка. ЕСЛИ НЕ ТРУДНО ПОПРОБУЙ СДЕЛАТЬ ЗАГРУЗКУ ИЗ dLL. СПАСИБО!!!
В нем два проекта:
DLL и программа, использующая ее
СЕНКС!
Что-то проект не хочет компилиться. При компиляции пишет ошибку связанную с DDIMPORT ом.(у меня Visual C++2005) Слушай а ты можешь показать как результат вычисления можно вывести в елемент управления EditControl или в какой- нибудь другой, но не через MFC а посредством WINAPI и нарисовать график ф-ии. В Билдере я знаю как а вот в Visual мучаюсь не получается ничего. Недавно начал изучать.
Еще хочу научиться создавать и синхронизировать потоки
А с графиком попозже выложу
А не компилится прога или DLL?
Небольшой примерчик вывода графика и числовых значений
Не компилиться прога!С DLL все ок! Как загнать рез-тат вычисления в EditControl или другой элемент управления? Очень нужно...
Для вывода результата в любой контрол нужно сначала перевести число в строковое представление, а затем эту строку запихиваем через SetWindowText
Код:
void NumberToControl(HWND control,double number) {
char buff[50];
sprintf(buff,"%lf",number);
SetWindowText(control,buff);
}
char buff[50];
sprintf(buff,"%lf",number);
SetWindowText(control,buff);
}
Цитата:
Output Window
Compiling...
TMainWindow.cpp
d:\мои документы\visual studio 2005\projects\visual c++\grath\test2\links\tmainwindow.cpp(17) : warning C4996: 'sprintf' was declared deprecated
d:\program files\microsoft visual studio\vc\include\stdio.h(345) : see declaration of 'sprintf'
Message: 'This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
[COLOR="Red"]d:\мои документы\visual studio 2005\projects\visual c++\grath\test2\links\tmainwindow.cpp(89) : error C2668: 'sqrt' : ambiguous call to overloaded function[/COLOR]
d:\program files\microsoft visual studio\vc\include\math.h(581): could be 'long double sqrt(long double)'
d:\program files\microsoft visual studio\vc\include\math.h(533): or 'float sqrt(float)'
d:\program files\microsoft visual studio\vc\include\math.h(128): or 'double sqrt(double)'
while trying to match the argument list '(int)'
Creating browse information file...
Microsoft Browse Information Maintenance Utility Version 8.00.50727
Copyright (C) Microsoft Corporation. All rights reserved.
Results
[COLOR="Red"]Build log was saved at "file://d:\Мои документы\Visual Studio 2005\Projects\Visual C++\grath\test2\links\Debug\BuildLog.htm"
links - 1 error(s), 1 warning(s)[/COLOR]
Compiling...
TMainWindow.cpp
d:\мои документы\visual studio 2005\projects\visual c++\grath\test2\links\tmainwindow.cpp(17) : warning C4996: 'sprintf' was declared deprecated
d:\program files\microsoft visual studio\vc\include\stdio.h(345) : see declaration of 'sprintf'
Message: 'This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
[COLOR="Red"]d:\мои документы\visual studio 2005\projects\visual c++\grath\test2\links\tmainwindow.cpp(89) : error C2668: 'sqrt' : ambiguous call to overloaded function[/COLOR]
d:\program files\microsoft visual studio\vc\include\math.h(581): could be 'long double sqrt(long double)'
d:\program files\microsoft visual studio\vc\include\math.h(533): or 'float sqrt(float)'
d:\program files\microsoft visual studio\vc\include\math.h(128): or 'double sqrt(double)'
while trying to match the argument list '(int)'
Creating browse information file...
Microsoft Browse Information Maintenance Utility Version 8.00.50727
Copyright (C) Microsoft Corporation. All rights reserved.
Results
[COLOR="Red"]Build log was saved at "file://d:\Мои документы\Visual Studio 2005\Projects\Visual C++\grath\test2\links\Debug\BuildLog.htm"
links - 1 error(s), 1 warning(s)[/COLOR]
Да! и еще: что хранится в abstract.cpp
ему подавай или long double, или double или float,
а x видите ли у нас int ...
Короче, нужно явное приведение типов:
Код:
int TMainWindow::function(int x)
{
return (int)(sqrt((double)x));
}
{
return (int)(sqrt((double)x));
}
abstract.cpp
Это я небольшую библиотечку нацарапал.
Что то вроде сильно кастрированого MFC
Програмирование на WinAPI с использованием объектно-оринтированного подхода.
О как завернул, аж самому понравилось;)
Слушай! Это конечно тупая просьба, но ты не мог бы сделать, чтоб ф-я вызывалась из DDL а не из проги и рисовала такой же график ф-ии! Я пробовал, но у меня хреново получается! Очень нужно... СПАСИБО!!! А ты случайно не программистом работаешь? Кстати а как сделать масштабирование функции.??? И чтоб допустим 1 поток считал ф-ю а другой отрисовывал ее график? Давно я стоко вопросов не задавал. А какие языки программирования ты знаешь?
Кодинг - моё хобби.
Програмирую на:
C/C++
Pascal/Delphi
Perl
PHP
Java/JavaScript
Visual Basic Script
Python
Assembler понемногу...
На счет ДЛЛ:
С динамической загрузкой чтото не выходит :(
но можно подключать ее на стадии линковки:
Берешь заголовочный файл от DLL и подключаешь его к проге
В папке с откомпиленной либой должен быть файл имя_либы.lib
В настройках проекта с прогой(в VC++6.0 Project->Settings) на закладке Link в конце строки Object/Library modules дописываваешь Полный\Путь\до\имя_либы.lib
И компилишь это чудо
Да, не забудь перед запуском проги перекинуть к ней DLL-ку
смотри вложение
Да и вот это что за ф-я:
Цитата:
bool OpenModule(HWND hwnd, char* modpath, long count) {
OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = modpath;
ofn.nMaxFile = count;
ofn.lpstrFilter = "Exe\0*.lnk\0";
ofn.nFilterIndex = 0;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
return (GetOpenFileName(&ofn) == TRUE);
}
OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = modpath;
ofn.nMaxFile = count;
ofn.lpstrFilter = "Exe\0*.lnk\0";
ofn.nFilterIndex = 0;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
return (GetOpenFileName(&ofn) == TRUE);
}
Она открывает стандартный диалог выбора файла
Это так, для себя(просто тестирую разные идеи)
Вот держи, я добрый
а ТЫ НЕ МОГ БЫ создать приложение, на Java, высчитывающего таблицу значений функции (КОТОРУЮ ТЫ СКАЧИВАЛ) и вывод её на экран консоли. ЕСЛИ НЕ ТЯЖЕЛО! Е ИСЛИ ЕЩЕ РАЗ НЕ ТЯЖЕЛО НАПИШИ ПОЖАЛУЙСТА КОМЕНТЫ.
Слушай а ты не мог бы показать свои проги. Интересно очень.
Вот моя прога(писал для своей бывшей школы): http://warhammer-dow.narod.ru/BDSUiRU.rar
А вот обновление к ней(новый интерфейс+ всякие примочки):