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

не могу разобраться с функциями ( значение функции, заданной с помощью ряда) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Оптимизация алгоритма вычисления определителя матрицы http://www.cyberforum.ru/cpp-beginners/thread774425.html
Здравствуйте! Написал я давеча программку, которая считает определитель. Только вот беда - он не считает определители матриц выше 10 порядка - тупо не хватает памяти. Я так понимаю, это из-за того, что мой алгоритм - рекурсивный. Так вот, можно ли больше оптимизировать мой код, или эта рекурсия - заведомо плохой вариант? //Определитель вычисляется по формуле det( A ) = a( i, j ) * ( -1 )^( i...
C++ Даны N предложений. Подсчитать количество слов в каждом предложении и вывести на печать Здравствуйте. Помогите, пожалуйста, в написании алгоритма на C++. >>Даны N предложений. Подсчитать количество слов в каждом предложении и вывести на печать.<< Спасибо заранее добрым людям! http://www.cyberforum.ru/cpp-beginners/thread774396.html
Как закрыть документ Word не закрывая приложение? C++
Удалить из заданной строки все вхождения "*". Надеюсь, что с вашей помощью я таки пойму строковые данные на паскаль!
Вложенные циклы и необъявленные идентификаторы C++
есть часть кода: for(int a=0; a<3;a++) if (a=0) int b=1; else if (a=1) int b=2; else if (a=2) int b=3; for(int c=0; c<3;c++) if (c=0) int d=1; else if (c=1) int d=2; else if (c=2) int d=3;
C++ Хеширование-метод середины квадрата http://www.cyberforum.ru/cpp-beginners/thread774289.html
Вот такая ситуация... Тип данных строки, метод разрешения колизии "открытая адресация". Проблема в самой хеш-функции, прочитал много теории, но никак не выходит теорию в жизнь воплатить =) Вот что есть: int _key(char* ch0) { int key; key=strlen(ch0); return key; }
C++ Почему делают такие комментарии к программе C++? В исходнике к одной игре все комментарии начинаются вот такими сомволами ///< struct _viewport_ { int X; ///< Screen pixel left corner x coordinate int Y; ///< Screen pixel upper corner y coordinate int EndX; ///< Screen pixel right x coordinate int EndY; ///< Screen pixel bottom y coordinate int MapX; ... подробнее

Показать сообщение отдельно
SSSprinter
0 / 0 / 0
Регистрация: 01.09.2011
Сообщений: 34
29.01.2013, 15:46     не могу разобраться с функциями ( значение функции, заданной с помощью ряда)
Добрый день! пишу программу, которая вычисляет значение функции, заданной с помощью ряда.
я плохо разбираюсь в написании функций, но вроде все сделал, написал определение функции до функции tmain, потом саму функцию, но компилятор VS2010 выдает ошибки:
error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)-строка 31, 38, 65
требуется объявление-31,38,61,65
вот код
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
//Вариант 10. Программа для вычисления значений функций, заданной с помощью ряда.
// 1 радиан=57 градусов
 
#include "stdafx.h"
#include "math.h"       /*для выполнения простых математических операций*/
#include <iostream>     /*для организации ввода-вывода*/
#include <windows.h>    /*для русского языка*/ 
using namespace std;    /*чтобы не писать каждый раз std::cin*/
HANDLE hStdout; 
///-----------Функция для отображения русских букв-----------///
char bufRus[256];
char* Rus(const char* text)
{
CharToOemA(text,bufRus);
return bufRus;
}
////////////////////////////////////////////////////////////////
 
float faktorial (long double n);
long double MyFunction (long double x,long double MF=0,long double MF1=0, float n=1);
long double nevyazka (long double x);
long double eps=0;
 
 
    //long double Function (long double x);
    //  {   
    //      return (long double) sin(x)*sin(x);
    //  }
 
float faktorial (long double n);
    {
        if (n==0) 
        {   return 1;   }
        else {  return n*faktorial(n-1);    }
    }   
 
long double MyFunction (long double x, long double MF, long double MF1, float n);
    {
    
MF1=MF;
if ((int)n%2!=0) MF=(powf(2.0,(2*n-1))*powf(x,2*n))/(faktorial(2*n));
        else MF=(-1*powf(2.0,(2*n-1))*powf(x,2*n))/(faktorial(2*n)); 
        
MF=MF+MF1;
    n++;
    if (abs(MF-MF1)<=eps) return MF;
else return MyFunction (x, MF, MF1, n);
//////////      
    //MF1=(powf(-1.0,(n+1))*powf(2.0,(2*n-1))*powf(x,2*n))/(faktorial(2*n));
    //MF1=MF2;
    ///*if (abs(MF1-MF2)<=eps) return MF;
    //else return MyFunction (x, MF1, MF2, MF, n);*/
    //do
    //{
    //MF=MF1+MF2;
    //n++;
    //}
    //while (abs(MF1-MF2)>=eps)
    //if (abs(MF1-MF2)<eps) return MF
 
    }
        
 
long double nevyazka (long double x);
    {   
        return sqrt(abs((MyFunction(x)*MyFunction(x))-(sin(x)*sin(x)*sin(x)*sin(x))));
    }
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{   
    long double x_start, x_end, delta_x, eps, x_ideal, x, MF, MF1, MF2;
    float n=1;
        
//  int add( int a, int b)
//{
//   return a + b; // возвращаем результат сложения a и b в виде int
//}
 
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);   
    SetConsoleTextAttribute(hStdout, BACKGROUND_INTENSITY); //выбираем цвет фона
    
flag1: SetConsoleTextAttribute(hStdout, 11);    //цвет шрифта
    printf(Rus("Введите x начальное (от -7 до 7):  ")); //так как в функции для подсчёта синуса угол задается в радианах,
    cin>>x_start;                                       //выходить за эти пределы нет смысла, значение будет больше 360 градусов
    if (x_start<-7 || x_start>7)
        {SetConsoleTextAttribute(hStdout,12);
        printf(Rus("Ошибка!\n"));
        goto flag1;}
 
flag2:  SetConsoleTextAttribute(hStdout, 11);
    printf(Rus("\nВведите x конечное (условия: x_end>x_start и x_end<=7):  "));
    cin>>x_end;
    if (x_end<=x_start || x_end>7)
        {SetConsoleTextAttribute(hStdout,12);
        printf(Rus("Ошибка!\n"));
        goto flag2;}
 
flag3:  SetConsoleTextAttribute(hStdout, 11);
    printf(Rus("\nВведите шаг, т.е дельту x (условия: delta_x>0 и x_end-x_start>=delta_x):  "));
    cin>>delta_x;
    if (delta_x<0 || x_end-x_start<delta_x)
        {SetConsoleTextAttribute(hStdout,12);
        printf(Rus("Ошибка!\n"));
        goto flag3;}
 
flag4: SetConsoleTextAttribute(hStdout, 11);
    printf(Rus("\nВведите значение эпсилон (eps от 0 до 1):  "));
    cin>>eps;
    if (eps>1 || eps<0)
        {SetConsoleTextAttribute(hStdout,12);
        printf(Rus("Ошибка!\n"));
        goto flag4;}
    printf(Rus("\n"));
 
//вывод таблицы с вычислением значения функции в интервале x_start-x_end для заданной точности eps:
printf(Rus("--------------------------------------------------------\n"));
printf(Rus("|    x    |  MyFunction(x)  |  Function(x)  |  Невязка |\n"));
printf(Rus("--------------------------------------------------------\n"));
    
    for (x=x_start;x=x_end;x=x+delta_x)
        {
        printf("| %12f | %12f | %12f | %12f |\n", x, MyFunction(x), sin(x)*sin(x), nevyazka(x));
        printf("--------------------------------------------------------");
        }
 
 
flag5: SetConsoleTextAttribute(hStdout, 11);
    printf(Rus("Введите значение х идеального (x_ideal от -7 до 7):  "));
    cin>>x_ideal;
    if (x_ideal<-7 || x_ideal>7)
        {SetConsoleTextAttribute(hStdout,12);
        printf(Rus("Ошибка!\n"));
        goto flag5;}
    printf(Rus("\n"));
 
//вывод таблицы с вычислением значения функции для заданного x_ideal для различных значений точности eps (в диапазоне от 10^(-1) до 10^(-7))
printf(Rus("----------------------------------------------------------\n"));
printf(Rus("|    eps    |  MyFunction(x)  |  Function(x)  |  Невязка |\n"));
printf(Rus("----------------------------------------------------------\n"));
 
    for (eps=(0.1);eps=(0.0000001);eps=(0.1*0.1))
        {
        x=x_ideal;
        printf("| %12f | %12f | %12f | %12f |\n", eps, MyFunction(x), sin(x)*sin(x), nevyazka(x));
        printf("--------------------------------------------------------");
        }
    
    return 0;
}
помогите пожалуйста, устал уже.

Добавлено через 6 минут
почему выдает ошибки? я ведь вроде сделал объявление функций, разве нет ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru