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

Программа для вычисления значения функции. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Запрет ввода числа с точкой http://www.cyberforum.ru/cpp-beginners/thread169880.html
Как запретить ввод десятичных чисел? Напрягает, из-за этого прога падает. Плюс, не нашел вариантов проверки на наличие у числа десятичной части. Спасайте:(
C++ Дано действительное число а.Вычислить f(a) Доброе время суток. Кто может решить задачу.Дано действительное число а.Вычислить f(a),если f(x)={x^2,при-2≤x<2, {4,в_противном_случае http://www.cyberforum.ru/cpp-beginners/thread169866.html
Что такое This и с чем его едят C++
Доброго дня/ночи Вот пытаюсь выкурить мануалы по теме "this". Прочитал надцать листов литературы, но так особо не могу понять - this возвращает только адрес обьекта, в котором он содержится? вот пример, над которым я сижу #include<iostream> using namespace std; class ClassTMP { private: int data; public:
C++ Работа с масивом
Всем доброго времени суток! В общем вот задача: есть таблица с 4-мя полями,(номер, наименование, тип, кол-во) последнее заполнено целочисленными значениями. Табличка или вводится вручную или из файла. Небходимо в обеспечить линейный и бинарный поиск по интервалу(границы вводит пользователь), а так же сортировку методом Шелла и шейкерную сортировку(это вроде пузырька, да??). помогите кто чем...
C++ Вывод результата в дочернем потоке http://www.cyberforum.ru/cpp-beginners/thread169843.html
Имеется программа которая вычисляет три суммы для i, j, k. Программа разбита на два потока. Главный и дочерний. Нужно вывести результат вычислений в главном потоке. Посмотрите пожалуйста код, правильно ли я сделал ? Нужно обязательно использовать семафоры при выводе результата в дочернем потоке. #include <iostream> #include <pthread.h> #include <semaphore.h> #include <conio.h> int S=0; int...
C++ Недопустимые локальные определения функций Вот почитал еще немного литературы и решил попробовать написать прогу. #include <iostream> #include <string.h> #include <iostream> int main(){ setlocale(LC_ALL,"Russian"); class Subd{ private: подробнее

Показать сообщение отдельно
dyap
2 / 2 / 0
Регистрация: 20.09.2010
Сообщений: 58
16.10.2010, 21:27  [ТС]     Программа для вычисления значения функции.
Вообщем написал рабочий косинус, синус. Сама программа работает, но сделал проверку стандартным косинусом и синусом и значение не всегда совпадают...Точнее где-то после 12 начинаются расхождения...Тоесть с 1 до 10 с шагом 0.5 все значения совпадают, а если с 1 до 30, например, то после 10 не то...
Вот программа:
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
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
 
 
double cosin ( double x)
{   
    double g=10;
    double p,s,n;
    const double e = 0.5E-8;
    const double PI = 3.1415926535897932384626433832795;//задаём константу pi
 
    while ((x>=2*PI) || (x<=-2*PI))
    {
        if (x<0)
            x = x + 2*PI;
        else 
            x = x - 2*PI;
    }
 
    for(s=1,p=1,n=1;fabs(p)>e;n+=2)
    {
        p=(-p*x*x)/(n*(n+1));
        s+=p;
    }   
    return s;
}
 
double sinus (double x)
{   
    double p,s,n;
    const double e = 0.5E-8;
 
    for(s=0,p=x,n=1;fabs(p)>e;n++)
    {   
        s+=p;
        p=(-p*x*x)/(2*n*(2*n+1));
    }
    return s;
}
 
double zn ( double x, double n ) 
{
    double r = 1, q = 1, s;
    while ( r <= n ) 
    {
        q = q*x*x;
        r++;
    }
    s = q*x / ( 2*n+2 );
    return s;
}
 
void main ()
{
    setlocale ( LC_ALL,".1251" );
    double x,m,t,u,i,k,a,b,h,sum,j,l;
 
    printf ( "Введите значение a \n" );
    scanf ( "%lf",&a );
 
    printf ( "Введите значение b \n" );
    scanf ( "%lf",&b );
 
    printf ( "Введите значение шага (h) \n" );
    scanf ( "%lf",&h );
 
    printf ( "Введите значение m\n" );
    scanf (" %lf",&u );
 
    if ( h == 0 )//Сравниваем H с нулём
    {
        printf ( "\n\n\n Ошибка ввода !  шаг (H) не равен нулю      \n\n\n" );
        goto str;//переходим в конец програмы
    }
    if ( h < 0 )//Сравниваем H с нулём
    {
        printf ( "\n\n\n Ошибка ввода !  шаг (H) только положительный   \n\n\n" );
        goto str;//переходим в конец програмы
    }
    if (a==0)
    {
        printf ("\n\n\n А не равно 0, т.к. ctn для нуля неопределен \n\n\n");
        goto str;
    }
    //составление шапки таблицы
    printf ( "  -----------------------------------------------------------------------------\n" );
    printf ( "  | Значение переменной X |        Сумма            |  Значение с помощью Ctng |\n" );    
    printf ( "  -----------------------------------------------------------------------------\n" );
 
    k = 1;
    if ( a <= b )
    {
 
        for ( i = a; i <= b; i += h )//цикл прохождения Х от A до B с шагом H
        {   
            j = 0;
            sum = 0;
            for ( x = 1; x <= u; x ++ )//цикл прохождения переменной M от 1 до введеного числа М,т.е. нахождение колличества членов в сумме
            {
                k = i;
                k = k*x;
                m =cosin (k)/sinus (k);//вызываем функцию ctng и присваеваем её значение переменой M
                t = zn (i,x);//вызываем функцию zn и присваеваем её значение переменой t
                sum = sum + m*t;//нахождение суммы
                j = j +  t*cos(k)/sin(k);
            }
            //вывод значений Х и суммы в таблице
 
            printf ( "  |%16.4lf       |%25.4lf|%25.4lf|\n",i,sum,j );
            printf ( "  -----------------------------------------------------------------------------\n" );
        }
    }
     else if ( a > b ) 
        {
                for ( i = a; i >= b; i -= h )//цикл прохождения Х от A до B с шагом H
                {   
                        j = 0;
                        sum = 0;
                        for ( x = 1; x <= u; x ++ )//цикл прохождения переменной M от 1 до введеного числа М,т.е. нахождение колличества членов в сумме
                        {
                                k = i;
                                k = k*x;
                                m = cosin (k)/sinus (k);//вызываем функцию ctng и присваеваем её значение переменой M
                                t = zn (i,x);//вызываем функцию zn и присваеваем её значение переменой t
                                sum = sum + m*t;
                                j = j + t*cos(k)/sin(k);
                        }
                //вывод значений Х и суммы в таблице
                }
                printf ( "  |%16.4lf       |%25.4lf|%25.4lf|\n",i,sum,j );
                printf ( "  -----------------------------------------------------------------------------\n" );
        }
str:;
}
Может, кто-нибудь знает в чем проблемка?...
 
Текущее время: 20:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru