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

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

Войти
Регистрация
Восстановить пароль
 
Alex163
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 52
#1

Как сделать проще? - C++

13.03.2014, 20:02. Просмотров 255. Ответов 3
Метки нет (Все метки)

Здравствуйте, вот написал программу, которая реализовывает функцию определения значения некоторой элементарной функции, зависящей от аргумента, с заданной точностью и максимальной допустимым количеством итераций. Помогите, пожалуйста, как можно её еще больше упростить?

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
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
 
double f1(double x)
{return log(x);}
 
double f(double x,double eps,int N)//Функция суммы ряда логарифма от вещественного числа x,с заданной вещественной точностью eps и предельным целым числом итераций N
{
    double func=f1(x), c1=x-1;
    double sum=c1;
    double c2=c1;
    int i=1;
    while ((i<N)&&(abs(c2)>=eps))
    {
        c2=-(x-1)*i*c1/(i+1);
        sum+=c2;
 //cout<<i<<c1<<" "<<c2<<" "<<sum<<endl;
        c1=c2;
        i++;
    }
    if(i==N)
    {
        cout<<"Достигнуто максимальное число итераций"<<endl;
    }
    return sum;
}
 
 
 
int main(int argc,char* argv[])
 
{ try{
    setlocale (LC_ALL,"RUS");
double x,eps;int N;
cout<<"Введите значение аргумента x"<<endl;
    cin>>x;//Вводим x-аргумент функции
    if ((x<=0)||(x>2)) throw -1;
    double func1=f1(x);
cout<<"Введите значение точности"<<endl;
cin>>eps;//Вводим eps-точность ввода
  if(eps<=0) throw -1;//генерируем исключение
cout<<"Введите значение максимального числа итераций"<<endl;
cin>>N;//Вводим N- максимальное число итераций
if (N<=0) throw -1;//генерируем исключение
double func=f(x,eps,N);
cout<<"Значение функции,вычисленное с помощью ряда "<<func<<endl;//Выводим на экран сумму ряда натурального логарифма
cout<<"Аналитическое значение функции "<<func1<<endl;//Выводим на экран аналитическое значение функции натурального логарифма
cout<<"Погрешность "<<abs(func1-func)<<endl;//выводим на экран модуль разности аналитического выражения и суммы ряда
}
catch(int){cout<<"Ошибка ввода-неверный диапазон значений"<<endl;}//оператор обработки исключений
getchar();
getchar();
return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2014, 20:02     Как сделать проще?
Посмотрите здесь:

Кому не трудно, нужна идея как сделать проще - C++
Всем добра! собственно вот задание Дана целочисленная матрица A(M,N). Продублировать в матрице каждый столбец, являющийся...

Как можно сделать данный кусок кода меньше и проще? - C++
Задние: Заменить все элементы с четными номерами на значение второго положительного элемента массива. void change() //замена элементов...

Страуструп. Сортировка трех чисел .Как сделать проще код без циклов и массивов? - C++
Напишите программу. предлагающую пользователю ввести три целых числа, а затем выводит их в порядке возрастания, разделяя запятыми ....

Оператор switch, можно ли сделать код проще? - C++
Дана задача посчитать гласные в тексте введенном с клавиатуры, вопрос ниже... #include &lt;iostream&gt; #include &lt;string&gt; #include...

можно написать ее как то проще ? - C++
#include &lt;stdio.h&gt; #include &lt;locale.h&gt; #include &lt;string&gt; #include &lt;conio.h&gt; int main() { setlocale(LC_CTYPE, &quot;rus&quot;); ...

Как проще всего создать множество? - C++
Можно ли задать это множество как-то попроще? set&lt;char&gt; numbers; numbers.insert('0'); numbers.insert('1'); ...

Как проще всего понять массивы? - C++
Такая проблема, учусь на первом курсе, язык C++ изучаю. Но как только дело дошло до массивов, так обучение встало. С указаниями препода за...

Можно ли это написать как то проще - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; using namespace std; /* В одномерном...

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

Передалайте задачу как можна по проще - C++
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;functional&gt; using namespace std; int main() { ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
13.03.2014, 20:28     Как сделать проще? #2
Есть 2 вопроса:
1. Зачем нужен f1(double x)?
2 double func=f1(x) в функции f зачем?
Alex163
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 52
13.03.2014, 20:33  [ТС]     Как сделать проще? #3
1-это аналитическая функция от вещественной переменной x
2-это присваиваю переменной аналитическое значение функции
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
13.03.2014, 21:00     Как сделать проще? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Alex163 Посмотреть сообщение
2-это присваиваю переменной аналитическое значение функции
Вы же ее дальше не используете.....А с первым ладно соглашусь. Код в роде не упростишь разве что 53 и 54 строчки - одна лишняя

Добавлено через 5 минут
Не уверен но можно с1 убрать вообще:
C++
1
c2*=-(x-1)*i/(i+1);
Yandex
Объявления
13.03.2014, 21:00     Как сделать проще?
Ответ Создать тему
Опции темы

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