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

Функциональный тип через typedef - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести список файлов в каталоге http://www.cyberforum.ru/cpp-beginners/thread589523.html
Напишите программу, которая составляет список файлов, расположенных в каталоге, имя которого задается в командной строке и создает текстовый файл, в котором имена файлов располагаются в порядке увеличения количества строк, содержащихся в них.
C++ компилятор с++ кто знает может можно сделать так чтоб компилятор не использовал фиксированных адресов, а использовал только относительное смещение? http://www.cyberforum.ru/cpp-beginners/thread589507.html
C++ Наследование: Создать класс двигатель
Создать класс двигатель, имеющий мощность. Определить конструкторы и метод доступа Создать класс автомашины, содержащий класс двигатель. Дополнительно есть марка (указатель на строку) и стоимость. Определить конструкторы и деструктор. Определить public- производный класс грузовик, имеющий грузоподъемность и тип кузова. Определить конструкторы и функцию печати. Где ошибка в программе? ...
C++ Сформировать массив из n элементов (n<50)
Задача 113. Сформировать массив из n элементов (n<50), которыми могут быть только целые числа 0 и 1. Проверить, существует ли строгое чередование 0 и 1.
C++ Задача 94. В заданном целочисленном массиве опре¬делить количество перемен знаков http://www.cyberforum.ru/cpp-beginners/thread589485.html
Задача 94. В заданном целочисленном массиве опре¬делить количество перемен знаков.
C++ Задача 75. Даны вещественные числа a и Ь (а<Ь). Сформировать матрицу ХУ Задача 75. Даны вещественные числа a и Ь (а<Ь). Сформировать матрицу ХУ(17,20), элементами которой являются вещественные случайные числа, равномерно распределенные на отрезке . Определить сумму элементов, номера строк которых кратны 3, а столбцов - 4. подробнее

Показать сообщение отдельно
Jacen
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 5

Функциональный тип через typedef - C++

28.05.2012, 20:31. Просмотров 1954. Ответов 2
Метки (Все метки)

Приветствую, нужна помощь в решении задачи:

В файле заданы строки из 5-ти чисел:
границы отрезка, точность, номер функции и номер метода.
Номер функции = {1,2,3}, где 1. f(x)=x3-x-9;
2. f(x)=sinx-1;
3. f(x)=x+2.
Номер метода = {1,2}, где 1. хорд;
2. касательных.
На заданном отрезке с заданной точностью вычислить приближенно корень уравнения f(x)=0 для заданной функции заданным методом.
В сущности, задачу я решил:
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
#include <fstream>
#include <cmath>
#include <iostream>
using namespace std;
 
double func(double x, int nf){
switch (nf){
case 1: 
    return pow(x, 3) - x - 9; 
    break;
case 2: 
    return sin(x)-1;
    break;
case 3: 
    return x+2;
    break;
}}
double dfunc(double x, int nf){
switch (nf){
case 1: 
    return 3*pow(x, 2) - 1; 
    break;
case 2: 
    return cos(x);
    break;
case 3: 
    return 1;
    break;
}}
 
double hord(double infinum, double supremum, double epsilon, int nf)
{
    while (fabs(supremum - infinum) > epsilon)
    {
        infinum = supremum - (supremum - infinum) * func(supremum, nf) / (func(
                supremum, nf) - func(infinum, nf));
        supremum = infinum - (infinum - supremum) * func(infinum, nf) / (func(
                infinum, nf) - func(supremum, nf));
    }
 
    return supremum;
}
double kasat(double x, double eps, int nf) {
 double tmp;
 tmp=x+2*eps;
    while(fabs(x-tmp)>eps) { //Выбран останов |x[n]-x[n+1]|<eps
     tmp=x;
     x=x-func(x, nf)/dfunc(x, nf);
   }
return x;
}
 int main(){
    ifstream fin;
    ofstream fout;
    fin.open("in.txt");
    fout.open("out.txt");
    double l1, l2, tch;
    int nf, nm, a;
    fin>>l1>>l2>>tch>>nf>>nm;
    switch (nm){
    case 1: cout<< hord(l1, l2, tch, nf); 
        break;
    case 2: cout<< kasat(l2-l1, tch, nf);
        break;
    }
    cin>>a;
    return 0;
}
Но вместо switch для выбора функции(алгебраической относительно х) должен использоваться некий функциональный тип, созданный с помощью typedef, и передаваться в функцию(с++) по имени, а не по номеру. Подскажите, как это реализовать!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru