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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Аркалык
18 / 18 / 7
Регистрация: 24.09.2013
Сообщений: 159
#1

Вычисления до заданной точности - C++

18.12.2013, 13:20. Просмотров 341. Ответов 8
Метки нет (Все метки)

Вычисления до заданной точности
Исправьте ошибку пожалуйста!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
int fact(int x)
{
if(x<=1) return 1;
return x*fact(x-1);
}
int main()
{
clrscr();
    float v, s = 0;
    float eps = .0001f;
    for ( int i = 1; ; i++ )
    {
    v = 1.0+1.f /fact(i);
    if ( v < eps ) break;
    s += v;
    }
    printf( "%f\n", s );
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2013, 13:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисления до заданной точности (C++):

Вычислить сумму ряда. Вычисления заканчивать при достижении заданной степени точности - C++
Помогите пожалуйста доработать программу, в программировании новичок. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace...

Программа должна показать все комбинации заданной суммы чисел заданной точности - C++
Доброго всем времени суток.Пожалуйста помогите справиться с задачей.Нужно написать программу показывающая все варианты заданной суммы...

Не точности вычисления C++ - C++
double N=1.0100000000000000; N=(N-floor(N))*10; cout&lt;&lt;N; Выводит: 0.10000000000000009 - что ни есть правильно (добавляет 9 в...

Проверить вычисления на переполнение и потерю точности - C++
Надо написать функции арифметических действий с проверкой переполнения,потери и генерировать исключение если оно случается. Вообщем то...

Вывести число итераций, необходимое для достижения заданной точности - C++
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε . Вывести число итераций, необходимое для...

Вывести число итераций, необходимое для достижения заданной точности - C++
Здравствуйте. Помогите решить: Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε (табл. 8.1)....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SatanaXIII
Супер-модератор
Эксперт С++
5609 / 2643 / 244
Регистрация: 01.11.2011
Сообщений: 6,502
Завершенные тесты: 1
18.12.2013, 13:35 #2
Зачем вы в семнадцатой строке постоянно единицу прибавляете? Один раз ее перед циклом внесите и более не надо.
Аркалык
18 / 18 / 7
Регистрация: 24.09.2013
Сообщений: 159
18.12.2013, 13:50  [ТС] #3
SatanaXIII, Вот так, но ошибка не в этом, не компилируется код (пишу на турбо си):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
int fact(int x)
{
if(x<=1) return 1;
return x*fact(x-1);
}
int main()
{
clrscr();
    float v,p=1.0, s = 0;
    float eps = .0001f;
    for ( int i = 1; ; i++ )
    {
    v = p+1.f /fact(i);
    if ( v < eps ) break;
    s += v;
    }
    printf( "%f\n", s );
    getch();
}
Аркалык
18 / 18 / 7
Регистрация: 24.09.2013
Сообщений: 159
18.12.2013, 13:58  [ТС] #5
SatanaXIII, К сожалению это не ответ
SatanaXIII
Супер-модератор
Эксперт С++
5609 / 2643 / 244
Регистрация: 01.11.2011
Сообщений: 6,502
Завершенные тесты: 1
18.12.2013, 14:13 #6
Цитата Сообщение от Аркалык Посмотреть сообщение
не компилируется код
Приведите текст ошибки.
Аркалык
18 / 18 / 7
Регистрация: 24.09.2013
Сообщений: 159
18.12.2013, 14:27  [ТС] #7
SatanaXIII, Написал на Dev C++, компилируется, но нет результата. Походу не хватает мощности пк для вычисление :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<cmath>
using namespace std;
 
float fact(float x)
{
if(x<=1) return 1;
return x*fact(x-1);
}
int main()
{
    float v,p=1.f, s = 0;
    float eps = .0001f;
    for ( int i = 1; ; i++ )
    {
    v = p+1.f /fact(i);
    if ( v < eps ) break;
    s += v;
    }
cout<<s;
system("pause");
}
SatanaXIII
Супер-модератор
Эксперт С++
5609 / 2643 / 244
Регистрация: 01.11.2011
Сообщений: 6,502
Завершенные тесты: 1
18.12.2013, 14:45 #8
Цитата Сообщение от Аркалык Посмотреть сообщение
не хватает мощности пк для вычисление
А. Ну что-то я сразу не подумал. Извините, что мурыжу тут вас уже пол дня. Вот так должно быть с учетом оптимизации под вашу архитектуру процессора (там просто за счет дублирования регистров s переназначается с v и на кеше третьего уровня (который под расчет с плавающей точкой) шине адреса не хватает разрядности, чтобы протолкнуть все число за раз):
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
#include<iostream>
#include<cmath>
 
using namespace std;
 
 
float fact(float x)
{
if(x<=1) return 1;
return x*fact(x-1);
}
 
 
int main()
{
    float v=1, s = 0;
    float eps = .0001f;
    for ( int i = 1; ; i++ )
    {
    v = v + 1.f /fact(i);
    if ( 1.f /fact(i) < eps ) break;
    s += v;
    }
cout<<s;
system("pause");
}
Аркалык
18 / 18 / 7
Регистрация: 24.09.2013
Сообщений: 159
18.12.2013, 15:15  [ТС] #9
SatanaXIII, Спасибо вам Большое!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 15:15
Привет! Вот еще темы с ответами:

Табулировать функции F и S при заданной точности E, с указанным шагом и диапазоном значений по x: - C++
Помогите пожалуйста написать прогу Табулировать функции F и S при заданной точности E, с указанным шагом и диапазоном значений по x:

Табулировать функции F и S при заданной точности E, с указанным шагом и диапазоном значений по x: - C++
Помогите пожалуйста написать программу: Табулировать функции F и S при заданной точности E, с указанным шагом и диапазоном значений по x:

Вычислить сумму членов бесконечного ряда с заданной степенью точности > 0 и заданного значения х - C++
с Latex не стал мучится - приложил изображением.

Вычисления для каждой точки, заданной парой координат, третьей координаты по заданной формуле - C++
Прошу подсказать в каком направлении работать для решения следующей задачи. Имеется текстовый файл, котором в каждой строке (всего строк...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.12.2013, 15:15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru