Здравствуйте, уважаемые эксперты.Пожалуйста не поймите меня неправильно. Но передомной стоит такая задача: "Используя схему Горнера решить уравнение 3x^4+2x^2+x+1 при x=0.1." Пожалуйста скажите как это реализовать по схеме Горнера и что это такое? Формула может какая? Информацию которую я нашел ничего вразумительного не дала. Спасибо и заранее благодарен.
Доброе время суток, Sonic! Надо преобразовать выражение так (((3 * x) * x + 2) * x + 1) * x + 1; Пишешь функцию, которая просто подставляет в это выражение вместо x - 0.1. Ответ отправлен: 18.04.2003, 13:47 Отправитель: vitya Отвечает Avl2k
Здравствуйте, Sonic! Вообще-то схема Горнера предназначена для последовательного вычисления значений многочленов. Суть в следующем: чтобы избежать возведения в степень, многочлен преобразовывается следующим образом f(x) = (...(((x + a1)·x + a2)·x + a3)...)·x + an, например 7x^4 - 5x^3 +x^2 + 3x + 1= (7x^3 - 5x^2 + x + 3)x + 1= ((7x^2 - 5x + 1)x + 3)x + 1= (((7x - 5)x + 1)x + 3)x + 1. В этом виде легко вычислять значение многочлена с помощью цикла или рекурсии. См. также http://ega-math.narod.ru/Quant/Belaga.htm С уважением, Avl2k. Ответ отправлен: 18.04.2003, 11:16 Отправитель: Avl2k
Вопрос № 711
Добрый день Есть ли у кого-нибудь примеры работы с Shell API ? а именно, заполнение дерева каталогов так как в проводнике
Здравствуйте, Владимир! Такие примеры есть в MSDN. Вот пример, который выводит папки из Program Files, а также файлы в первой папки из этих папок (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/navigate.asp). #include #include #include main() { LPMALLOC pMalloc; LPITEMIDLIST pidlProgFiles = NULL; LPITEMIDLIST pidlItems = NULL; IShellFolder *psfFirstFolder = NULL; IShellFolder *psfDeskTop = NULL; IShellFolder *psfProgFiles = NULL; LPENUMIDLIST ppenum = NULL; ULONG celtFetched; HRESULT hr; STRRET strDispName; TCHAR pszDisplayName[MAX_PATH]; ULONG uAttr;
Ответ отправлен: 18.04.2003, 12:28 Отправитель: Avl2k
Вопрос № 712
Добрый день, уважаемые эксперты! Не встречал ли кто из вас библиотечку для вычисления значений элементарных функций, заданных формулами? т.е. на момент компиляции формула функции неизвестна, но она задаётся в процессе выполнения, и нужно ее в какой-либо точке вычислять. Буду благодарен за любую помощь. WseslaW
Здравствуйте, WseslaW! Наверняка то, что тебе нужно есть в виде компонентов для C++ Builder. Поищи на www.torry.ru Ответ отправлен: 18.04.2003, 02:41 Отправитель: Knignick
Вопрос № 713
Здравствуйте эксперты. Как написать функцию наподобие scanf, т.е. у нее переменное количество параметров и эти параметры есть указатели на переменные. Короче говоря есть функция int x=0,y=0,z=0; GetData("%d%d%d",&x,&y,&z); Дак вот после выполнения этого кода в переменные x, y, z функция должна передовать значения. Я пробовал через va_arg( ParamStr, int ) но ничего не получилось. Как это сделать? Заранее благодарен.
Добрый день, Kydesnik! Ну пишешь функцию void kuku(char* format, ...) { анализируем строку, чтобы получить инф-ю о кол-ве параметров и их типах. va_list arglist; va_start(arglist, p); int* pi = (int*)va_arg(arglist, int); *pi = что-то там; }
Ответ отправлен: 19.04.2003, 14:03 Отправитель: Ramzes Отвечает vitya
Доброе время суток, Kydesnik! код должен быть таким va_list args; va_start(args, ParamStr); //тут анализ строки, чтобы определить сколько параметров надо прочитать. for (int i = 0; i < iParamCount; ++i) { int * piVar = va_arg(args, int *); //тут идет запись значения в переменную. *piVar = my_data[i]; } va_end(args) Ответ отправлен: 19.04.2003, 11:10 Отправитель: vitya Отвечает Knignick
Приветствую Вас, Kydesnik! переменное число параметров в объявлении функции обозначается как ... Например: int printf(const char*, ...); Другой вопрос, как ты из стэка эти параметры извлекать будешь.
Ответ отправлен: 20.04.2003, 00:14 Отправитель: Knignick Отвечает Avl2k
Приветствую Вас, Kydesnik! Примерно так: #include <stdarg.h> void GetData(const char *fmt, ... ) { va_list lst; va_start(lst, fmt); while(*fmt) { if(*fmt == '%') switch(*++fmt) { case '': continue; case 'd': { int* p = va_arg(lst, int*); *p = 123; break; } } ++fmt; } va_end(lst); } С уважением, Avl2k. void main() { int x=0,y=0,z=0; GetData("%d%d%d",&x,&y,&z); } Ответ отправлен: 21.04.2003, 10:43 Отправитель: Avl2k
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.