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

Вычислить значение нетривиальной функции F - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Циклы!где-то ошибка! http://www.cyberforum.ru/cpp-beginners/thread53426.html
Здравствуйте!Написала прогу по задачи,она считает,но не правильно!помогите найти ошибку....задание кинула во вложения вот программа: #include <math.h> #include <iostream.h> int main() { double x,y,z; cout <<"\n vvedite summy";
C++ Черезстрочное слияние Появилось вот такое задание по C++: Написать программу на языке C++ чересстрочного слияния (т.е. первая строка в выходном файле - это первая строка из первого файла, вторая строка в выходном файле - это первая строка из второго файла, третья строка в выходном файле - вторая строка из первого файла и т.д.) двух текстовых файлов с удалением в каждой строке слов после которых стоит любой знак... http://www.cyberforum.ru/cpp-beginners/thread53424.html
C++ Поиск с консоли
вот решил прогу писать,которая ищет на компе все файлы с расширением doc,и все в них удаляет и добавляет звездочки...я только не знаю эту функцию поиска,помогите пожалуйста,надо найти все файлы,и записать их адреса в чар,чтобы потом пользовался с чаром как file_name, наверно понятно объяснил:):)если возможно то поболше комментарий,ведь с этой функцией в жизни не работал:)буду благодарен
C++ Насчёт функции memcpy()
Начинаяю использовать эту функцию.Её синтаксис: void memcpy(void *to, const void *from, size_t count); Вопрос_1: Что такое size_t ? И вообще,зачем указателям тип воид? Они что,что-то вовращают?)) В учебнике пока такого не встречал,а функция нужна( ЗЫ: Нужно скопировать один числовой непустой массив в другой числовой массив...как это сделать не догоню уже полчаса.......
C++ Ввести три числа и проверить, возможно ли из них составить арифметическую прогрессию http://www.cyberforum.ru/cpp-beginners/thread53408.html
ввести три числа и проверить возможно ли с них составить арифметическую прогрессию
C++ передача параметров по ссылке У кого есть рабочий вариант сего чуда ? (К примеру,функции квадратного корня).В учебнике не работает. подробнее

Показать сообщение отдельно
Rififi
2336 / 1051 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
01.10.2009, 01:36     Вычислить значение нетривиальной функции F
Текст программы:

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
#include <iomanip>
#include <locale>
#include <memory>
#include <math.h>
 
#pragma region Сравнение вещественных чисел
 
// Равенство
bool equals(double left, double right, double epsilon)
{
    return (fabs(left - right) < epsilon);
}
 
// Меньше (или равно)
bool less(double left, double right, double epsilon, bool orEqual = false)
{
    if (fabs(left - right) < epsilon)
        return (orEqual);
    
    return (left < right);
}
 
// Больше (или равно)
bool greater(double left, double right, double epsilon, bool orEqual = false)
{
    if (fabs(left - right) < epsilon)
        return (orEqual);
 
    return (left > right);
}
 
#pragma endregion
 
#pragma region Вычисление значений
 
struct Calc
{
    Calc(double a, double b, double c) :
        a_(a), b_(b), c_(c),
        ia_(static_cast<__int64>(a)), ib_(static_cast<__int64>(b)), ic_(static_cast<__int64>(c))
    {}
 
    virtual ~Calc() {}
 
    double Math(double x) const
    {
        double res = DoMath(x);
        // Дополнительная логическая проверка
        if (!(ia_ & (ib_ | ic_)))
            res = static_cast<double>(static_cast<__int64>(res));
 
        return res;
    }
 
    virtual double DoMath(double x) const = 0;
 
    const double a_, b_, c_;
    const __int64 ia_, ib_, ic_;
};
 
 
// Алгоритм N1
struct Calc_1 : public Calc
{
    Calc_1(double a, double b, double c) : Calc(a, b, c) {}
    virtual ~Calc_1() {}
 
    virtual double DoMath(double x) const { return a_ * x * x + b_ * x * c_; }
};
 
// Алгоритм N2
struct Calc_2 : public Calc
{
    Calc_2(double a, double b, double c) : Calc(a, b, c) {}
    virtual ~Calc_2() {}
 
    virtual double DoMath(double x) const { return -a_ / (x - c_); }
};
 
// Алгоритм N3
struct Calc_3 : public Calc
{
    Calc_3(double a, double b, double c) : Calc(a, b, c) {}
    virtual ~Calc_3() {}
 
    virtual double DoMath(double x) const { return a_ * (x + c_); }
};
 
#pragma endregion
 
int main()
{
    const double eps = 0.0001; // Погрешность вычислений
 
    setlocale(LC_ALL, "");
    std::cout << "Введите начальные значения: a, b, c, Xнач, Xкон, dX:" << std::endl;
        
    // Ввод данных
    double a, b, c, x_start, x_finish, dX;
    if (!(std::cin >> a >> b >> c >> x_start >> x_finish >> dX))
    {
        std::cerr << "Неправильный ввод данных" << std::endl;
        return 1;
    }
 
    // Выбор алгоритма
    std::auto_ptr<Calc> spCalc; 
    if (less(a, 0, eps) && !equals(c, 0, eps))
        spCalc.reset(new Calc_1(a, b, c));
    else if (greater(a, 0, eps) && equals(c, 0, eps))
        spCalc.reset(new Calc_2(a, b, c));
    else
        spCalc.reset(new Calc_3(a, b, c));
 
    // Расчёт
    for ( ; less(x_start, x_finish, eps, true); x_start += dX)
    {
        const double x = spCalc->Math(x_start);
        
        std::cout.precision(3);
        std::cout << std::left << std::showpoint << std::showpos << std::fixed;
 
        std::cout << std::setw(8) << x_start << std::setw(8) << x << std::endl;
    }
 
    return 0;
}
В зависимости от настроек компилятора может потребоваться включение файла stdafx.h
 
Текущее время: 08:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru