Форум программистов, компьютерный форум, киберфорум
Наши страницы

Нужна программа на C++ для подсчёта ряда - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Доступ к локальному диску компьютера http://www.cyberforum.ru/cpp-beginners/thread997895.html
Здравствуйте. У меня такой вопрос. Как мне преобразовать название локального диска в общий вид? К примеру: "C:\Users\Itsme\AppData\Roaming". А вдруг на другом компьютере отсутствует локальный диск...
C++ Линейная задача (связана с экономикой ) Всем здрасти! Нужно решить задачку: Портфель ценных бумаг включает 55 облигаций, номинальная цена которых 60 тенге. и 75 облигаций, номинальная цена которых 40 тенге. Облигации первого вида... http://www.cyberforum.ru/cpp-beginners/thread997889.html
Обработка массивов символов! C++
Ребята, подскажите пожалуйста как в массиве символов убрать пробелы? или может я неправильно понял! Задание: изъять начальные пробелы из строки символов! Объясните пожалуйста!
Не могу вывесте просто "Hello world"! C++
Я не пойму! Я уже 2 часа смотрю в экран и не пойму, почему консоль закрывается сразу после запуска? Я использую netbeans и компилятор cygwin! код: #include <cstdlib> #include <iostream> using...
C++ И снова умножение чисел в двоичной системе счисления http://www.cyberforum.ru/cpp-beginners/thread997863.html
Доброго всем времени суток! Я сегодня целый день мучила эту программу (или она меня) и в итоге правильно производит сдвиг, но складывает почему-то неверно. Подскажите в чем ошибка. Заранее...
C++ Составить программу вычисления функции Составить программу вычисления функции подробнее

Показать сообщение отдельно
UranFlex
131 / 129 / 21
Регистрация: 25.05.2013
Сообщений: 233
05.11.2013, 17:47
upp01, мой вариант решения.
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
//============================================================================
// Name        : series_ln.cpp
// Author      : UranFlex @gmail.com
// Version     : 0.1 alpha
// Copyright   : UranFlex 2013
// License     : Free for all
// Description : Рассчитать сумму ряда для ф-ции ln( ( 1 + x ) / ( 1 - x ) ) с заданной точностью
//               C++, Ansi-style
//============================================================================
 
#include <iostream>
#include <cmath>
 
using namespace std;
 
// функция вычисляет для x с точностью eps значение суммы ряда ln( ( 1 + x ) / ( 1 - x ) )
// и записывает вычисленное значение в sum
// если ( | x | >= 1 или eps == 0 ), то функция вернет false,
// если функции переданы правильные данные, то она возвратит true
bool CalcSumLn( const double x, const double eps, double &sum );
 
int main() {
 
    // запрашиваем данные у пользователя
    double x, eps;
    cout << "Программа вычисляет сумму ряда для функции  ln( ( 1 + x ) / ( 1 - x ) )" << endl;
    cout << "Введите значение аргумента, | x | < 1: ";
    cin >> x;
    cout << "Введите точность вычислений, | epsilon | > 0: ";
    cin >> eps;
 
    // пробуем вычислить сумму ряда
    double sum;
    if ( !CalcSumLn( x, eps, sum ) ) { // eсли сумму нельзя посчитать,
        cerr << "Введены неверные данные!" << endl; // то выводим сообщение об ошибке
        return 1; // выходим из программы
    }
 
    // а если все нормально - выводим результаты
    cout << "Для заданного x: " << endl;
    cout << "Сумма ряда с заданной точностью = " << sum << endl;
    cout << "Значение, вычисленное с помощью библиотечной функции " << log( ( 1 + x ) / ( 1 - x ) ) << endl;
 
    return 0;
}
 
bool CalcSumLn( const double x, const double eps, double &sum ) {
 
    if ( fabs( x ) >= 1 || eps == 0 ) // если функция получила неверные данные
        return false; // возвращаем false
 
    double epsAbs = fabs( eps ); // на случай, если точность вычислений передана отрицательной
    double curr = x; // первый элемент ряда
    sum = curr; // сумма пока равна первому элементу
 
    unsigned counter = 3; // следующее число для вычисления очередного элемента ряда ( для второго это 3)
 
    while ( fabs( curr ) >= epsAbs ) { // пока очередной элемент ряда по модулю больше точности вычислений
        curr *= x * x * ( counter - 2 ) / counter; // вычисляем очередной элемент ряда
        sum += curr; // прибавляем его к общей сумме
        counter += 2; // увеличиваем следующее число для вычисления очередного элемента ряда
    }
 
    sum *= 2; // вычисляем конечную сумму ряда
 
    return true; // так как все прошло гладко вернем true
}
Примеры работы программы:
1)
Код
Программа вычисляет сумму ряда для функции  ln( ( 1 + x ) / ( 1 - x ) )
Введите значение аргумента, | x | < 1: -0.9999
Введите точность вычислений, | epsilon | > 0: 0.00000001
Для заданного x: 
Сумма ряда с заданной точностью = -9.90335
Значение, вычисленное с помощью библиотечной функции -9.90344
2)
Код
Программа вычисляет сумму ряда для функции  ln( ( 1 + x ) / ( 1 - x ) )
Введите значение аргумента, | x | < 1: 2
Введите точность вычислений, | epsilon | > 0: 0.1
Введены неверные данные!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.