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

Call of nonfunction - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
iezuit
1 / 1 / 0
Регистрация: 16.10.2009
Сообщений: 29
23.11.2011, 14:08     Call of nonfunction #1
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
 double eps = 1e-9;
 int k;
//------------epsilon
double ep (double x)
{
     int i; double q,a,s;
     i = 0; s  = a = 1;
     while (fabs (a) > eps){
     i++;
     q = x/i;
     a *= q;
     s += a;
     }
     if (i > k) k = i;
     return s;
}
//--------------------cosinus
double cs ( double x)
{
     int i; double q,a,s;
     i = 0; s = a= 1;
     while (fabs (a) > eps){
     i++;
     q = -x*x/(2*i*(2*i-1));
     a *= q;
     s += a;
     }
     if (i>k) k=i;
     return s;
}
//----------------------sinus
double sn ( double x)
{
     int i; double q,a,s;
     i = 0; s = a = x;
     while (fabs (a) > eps){
     i++;
     q = -x*x/(2*i*(2*i+1));
     a *= q;
     s += a;
     }
     if (i > k) k=i;
     return s;
}
double tang (double x)
{ return sn(x)/cs(x);
}
//--------------------------------------------------myF
void main()
{       double x[20];
    int i,n;
    double y, yst, dl;
    clrscr();
    printf(" Vvedite to4nosti \n");
    scanf("%le",&eps);
    printf(" Vvedite kol-vo argumentov \n");
    scanf("%d",&n);
for(i=0;i<n;i++)
    {
          printf(" Vvedite znacenie argumenta \n");
          scanf("%lf",&x[i]);
    }
//tablitsa dl'a vivoda dannih
    printf("\n");
    putch(201);
    for(i=1; i<=4; i++) putch(205); putch(209);
    for(i=1; i<=11; i++) putch(205); putch(209);
    for(i=1; i<=19; i++) putch(205); putch(209);
    for(i=1; i<=19; i++) putch(205); putch(209);
    for(i=1; i<=12; i++) putch(205); putch(209);
    for(i=1; i<=4; i++) putch(205); putch(187);
 
    printf("\n%c No %c %5c %5c %9c %9c %9s %9c %6c %5c %2c %c \n",
           186, 179, 'x', 179, 'y', 179, "y*", 179, 'd', 179, 'k', 186);
    putch(199);
    for(i=1; i<=4; i++) putch(196); putch(197);
    for(i=1; i<=11; i++) putch(196); putch(197);
    for(i=1; i<=19; i++) putch(196); putch(197);
    for(i=1; i<=19; i++) putch(196); putch(197);
    for(i=1; i<=12; i++) putch(196); putch(197);
    for(i=1; i<=4; i++) putch(196); putch(182);
 
    printf("\n");
    for(i=0; i<n; i++)
    {
          k = 0;
 
          x[i]=x[i]*M_PI/180;
          if(1-sin(x[i]) == 0)
        printf("%c %2d %c %9.5lf %c %17c functia ne opredelena %17c \n",
             186, i+1, 179, x[i], 179, ' ', 186);
 
          else {
         y=ep(x[i])*tang(x[i])-sn(2*x[i])/(0.4-cs(x[i]));
         yst=eps(x[i])*(sin(x[i])/cos(x[i]))-sin(2*x[i])/(0.4-cos(x[i]));
         dl=fabs(yst-y);
 
         printf("%c %2d %c %9.5lf %c %17.12lf %c %17.12lf %c %10.3le %c %2d %c \n",
             186, i+1, 179, x[i], 179, y, 179, yst, 179, dl, 179, k, 186);
          }
    }putch(200);
    for(i=1; i<=4; i++) putch(205); putch(207);
    for(i=1; i<=11; i++) putch(205); putch(207);
    for(i=1; i<=19; i++) putch(205); putch(207);
    for(i=1; i<=19; i++) putch(205); putch(207);
    for(i=1; i<=12; i++) putch(205); putch(207);
    for(i=1; i<=4; i++) putch(205); putch(188);
 
 
 
    getch();
}
На строчке:
yst=eps(x[i])*(sin(x[i])/cos(x[i]))-sin(2*x[i])/(0.4-cos(x[i]));
выдает ошибку call of nonfunction, уже часа два пытаюсь найти в чем же штука.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 14:08     Call of nonfunction
Посмотрите здесь:

Call of nonfunction C++
Ошибка E2314 Call of nonfunction C++
exceptions (no matching function for call to .) C++
Шаблоны no match for call to C++
C++ При компиляции выдает ошибку E2314 Call of nonfunction Full
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
23.11.2011, 14:34     Call of nonfunction #2
Я вижу у вас различие в следующих двух строках

C++
1
2
                 y=ep(x[i])*tang(x[i])-sn(2*x[i])/(0.4-cs(x[i]));
                 yst=eps(x[i])*(sin(x[i])/cos(x[i]))-sin(2*x[i])/(0.4-cos(x[i]));
В первой строке вызывается функция ep(), а во второй eps(). Может быть с этим связана ошибка? То есть что вы неправильно указали имя функции?

А eps у вас объявлена как глобальная переменная.

C++
1
double eps = 1e-9;
Это пример того, что к наименованию объектов нужно подходить более тщательно.
thick_int
Заблокирован
23.11.2011, 14:41     Call of nonfunction #3
В четвертой строке Вашей программы определена глобальная переменная с имене eps.
А в 98 строке Вашей программы Вы пытаетесь вызвать функцию с этим иенем, а этого делать нельзя
поскольку переменные и функции разделяют одно и то же пространство имен.
Грубо говоря, нельзя в одной программе в одной и той же области видиости иметь и переменную и функцию с однимм и те же именем.

А вообще, как Вы именуете функции и переменные - это классиический способ сделать ощибку.
У Вас, например, есть глобальная переменная с имене eps и есть функция с иенем ep. Может быть тут ошибка.
iezuit
1 / 1 / 0
Регистрация: 16.10.2009
Сообщений: 29
23.11.2011, 18:29  [ТС]     Call of nonfunction #4
фуууух, разобрался в чем беда. Дело в том, что я действительно запутался в наименованиях, в строчке 98 вместо
C++
1
yst=eps(x[i])*(sin(x[i])/cos(x[i]))-sin(2*x[i])/(0.4-cos(x[i]));
следовало написать
C++
1
yst=exp(x[i])*(sin(x[i])/cos(x[i]))-sin(2*x[i])/(0.4-cos(x[i]));
, т.е. стандарт для e^x
Таттыгул
0 / 0 / 0
Регистрация: 31.10.2016
Сообщений: 3
02.11.2016, 16:16     Call of nonfunction #5
[C++ Error] Uday.cpp(19): E2314 Call of nonfunction
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
02.11.2016, 16:36     Call of nonfunction #6
Цитата Сообщение от Таттыгул Посмотреть сообщение
[C++ Error] Uday.cpp(19): E2314 Call of nonfunction
Мы рады. В чём проблема? Зачем апать старую тему бессмысленным постом? Если есть вопросы - создайте новую тему и выложите туда проблемный код.
Yandex
Объявления
02.11.2016, 16:36     Call of nonfunction
Ответ Создать тему
Опции темы

Текущее время: 19:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru