Форум программистов, компьютерный форум CyberForum.ru

Упрощение и алгоритм - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ ошибки компиляции консоли с++ и zlib 1.1.3, visual studio 2010 http://www.cyberforum.ru/cpp-beginners/thread432476.html
Привет, скачал в интернете исходники zlib 1.1.3 (знаю, что последняя версия гораздо больше, но мне нужна именно эта) и в microsoft visual studio 2010 пытаюсь скомпилировать простенькое консольное с++ приложение, все файлы zlib включил в проект (архив со всем проектом http://www.fayloobmennik.net/1448112), но при компиляции лезет ряд ошибок, решение которых мне не удается найти в интернете: ...
C++ Рахработать программу 2 в 1! Разработать две программы. Первая принимает от пользователя два значения времени – строки вида ЦЦ.ЦЦ.ЦЦ, где Ц – это любая цифра из диапазона . Далее она вычисляет полное количество секунд, прошедших между двумя значениями времени, и выводит его на экран. Вторая программа запускает первую в качестве вновь созданного процесса. ЗАРАНЕЕ СпасибоУ) :) http://www.cyberforum.ru/cpp-beginners/thread432455.html
C++ Программа на c++ ( надо проверить )
Программа должна сортировать числа в массиве по возрастанию! Не мало раз проверял в чем касяк, не могу найти=) Если найдете, буду рад услышать ошибку) Вот сама программа: // Программа служит для того,чтобы правильно группировать элементы массива #include <iostream> using namespace std; int massiv = {34,23,1,54,32}; // Обозначаем массив и заполняем его предворительно
перевод из string в int и обратно C++
как?:)
C++ Списки http://www.cyberforum.ru/cpp-beginners/thread432445.html
помогите пожалуйста решить задачу! сформировать список из натуральных чисел. Найти среднее арифмитическое элементов списка и выяснить, есть ли в списке такой элемент.
C++ netbeans выводит квадратики при построении проекта Стоит windows 7. Пробовал менять шрифт в выводе, язык иде, кодировку через -J-Dfile.encoding=UTF-8 , так же с ключом cp1251. Ничего не выходит! Нетбинс стоит в папке по умолчанию, MinGW в корневой подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
23.01.2012, 17:09     Упрощение и алгоритм
Немного исправил твою функцию, считающую данное выражение через разложение в ряд:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define FIELD_WIDTH 15
#define SEPARATOR(CNT)              \
    do {                    \
    size_t i, j;                \
    putchar('+');               \
    for(i = 0; i < CNT; ++i, putchar('+'))  \
    for(j = 0; j < FIELD_WIDTH; ++j)        \
    putchar('-');               \
    putchar('\n');              \
    } while(0)
    
typedef double (*func_t)(double, double, size_t*);
 
void tabulate(double min, double max, double step,
          double tol, func_t fun, func_t expansion)
{
    /* display header */
    SEPARATOR(4);
    printf("|%*s |%*s |%*s |%*s |\n", FIELD_WIDTH - 1, "x",
       FIELD_WIDTH - 1, "y(x)", FIELD_WIDTH - 1, "s(x)",
       FIELD_WIDTH - 1, "k");
    SEPARATOR(4);
 
    for(; min <= max; min += step)
    {
    size_t step_counter;
    double fun_value = fun(min, tol, NULL),
        exp_value = expansion(min, tol, &step_counter);
 
    printf("|%-*.1f|%-*.5f|%-*.5f|%-*zu|\n", FIELD_WIDTH, min,
           FIELD_WIDTH, fun_value, FIELD_WIDTH, exp_value,
           FIELD_WIDTH, step_counter);
    SEPARATOR(4);
    }
}
 
double y(double x, double tol, size_t* ptr_cnt)
{
    return pow(x + 1, .25) + (x - 4) / 4.;
}
 
double s(double x, double tol, size_t* ptr_cnt)
{
    double sum, addend;
    
    sum = 0;
    addend = - (x * x) / 128.;
 
    *ptr_cnt = 2;
 
    while(fabs(addend) > tol)
    {
    double k = *ptr_cnt;
    sum += addend;
    addend *= (- x) * ((4 * k - 3) * (4 * k - 1)) / ((4 * k + 2) * (4 * k + 4));
    
    ++(*ptr_cnt);
    }
 
    return sum;
}
 
int main(void)
{
    tabulate(-.8, .9, .1, 1e-4, y, s);
            
    exit(0);
}
Но у меня тоже значения функции и ее разложения не совпадают.
Мне кажется, что у тебя в задании дано неправильное разложение функции в ряд. Об этом можно судить аналитически:
при http://www.cyberforum.ru/cgi-bin/latex.cgi?|x| < 1 ряд будет убывающим по модулю. Первое слагаемое ряда (а оно у тебя посчитано правильно) на несколько порядков меньше (по модулю) значения функции. Т.к. для данных http://www.cyberforum.ru/cgi-bin/latex.cgi?x у тебя каждый последующий член ряда будет еще меньше (по модулю), а ряд — знакочередующийся, то очевидно, что модуль суммы ряда не превысит модуля первого слагаемого (которое много меньше точного значения функции).
Уточни у преподавателя задание. Может действительно разложение неправильное или под двойным факториалом в данном случае подразумевается что-то другое.
PS. То, что выражение http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{a_{k+1}}{a_k} правильное, можно доказать, а в том, что функция s считает именно заданную сумму, можно убедиться, вручную посчитав несколько первых слагаемых суммы и сравнив их со значениями, которые можно просмотреть в отладчике
 
Текущее время: 02:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru