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

Ошибка С4700 - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Fahrengeht
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 13
12.07.2013, 19:03     Ошибка С4700 #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
116
117
118
119
120
121
122
123
#include <conio.h>
#include <math.h>
#include <iostream>
using namespace std;
 
 
double f(double x)
{
 
    return (2*x)-(3*log(x))-3;
}
 
double fi(double x, double L) 
{
 
    return  x+L*f(x);
}
 double f1(double x) 
 {
 
    return   2-(3/x);
}
 
double f2(double x)
{
 
    return   3/pow(x, 2);
}
 
void Dihotomia(double a,double b,double eps,double c,int n)
{
  n=0;
    do 
    {
        c=(a+b)/2;
        if (f(c)*f(a)<=0) b=c;
        else a=c;
        n+=1;
    }
    while (fabs(a-b)>=eps);
}
 
 
 
void Prost_iter(double x, double c,double b,double eps)
{
    int n=0;
    double L=-0.35;
    do 
    {
        c=fi(x,L);
        b=fabs(x-c);
        x=c;
        n+=1;
    }
    while (b>=eps);
        getchar();
}
 
void Newton(double a,double b,double c,double eps)
{
    int n=0;
    if(f(a)*f2(a)>0) c=a;
    else c=b;
    do 
    {
        c=c-f(c)/f1(c);
        n+=1;
    }
    while (fabs(f(c))>=eps);
        getchar();
}
int main()
{   
    setlocale(LC_ALL, "Russian" );
    int t,n;
    double a,b,c,eps,x,L=-0.35;
a:
    { 
    system("cls");
    cout<<"\t\t\t2x-3ln(x)-3"<<endl;
    cout<<"\t\t\tВыберете метод решения:"<<endl;
    cout<<"1--Метод дихотомии."<<endl;
    cout<<"2--Метод простых итераций."<<endl;
    cout<<"3--Метод ньютона."<<endl;
    cout<<"0--Возврат к выбору методов."<<endl;
    cin>>t;
    switch(t)
    { 
    case 1:
    cout<<"a="; cin>>a;
    cout<<"b="; cin>>b;
    cout<<"Точность ="; cin>>eps;
    cout<<"Корень ="<<c<<"\n";
    cout<<"Число итераций ="<<n<<"\n";
    cout<<"Значение функции ="<<f(c)<<"\n";
    Dihotomia(a,b,eps,c,n);
    break;
    case 2:
    cout<<"x="; cin>>x;
    cout<<"Точность ="; cin>>eps;
    cout<<"Корень ="<<c<<"\n";
    cout<<"Число итераций="<<n<<"\n";
    cout<<"Значение функции ="<<f(c)<<"\n";
    Prost_iter(a,b,x,eps);
    break;
    case 3:
    cout<<"a="; cin>>a;
    cout<<"b="; cin>>b;
    cout<<"Точность ="; cin>>eps;
    cout<<"Корень ="<<c<<"\n";
    cout<<"Число итераций ="<<n<<"\n";
    cout<<"Значение функции ="<<f(c)<<"\n";
    Newton(a,b,c,eps);
    break;
    }
    cin>>t;
    if(t==0)
    {
    goto a;
    }
}
}
warning C4700: использована неинициализированная локальная переменная "n"
warning C4700: использована неинициализированная локальная переменная "с"

Как я понял int main должна передавать значения(a,b) в void, в там же должен идти расчет, и void должен вернуть результаты в main (c,n).Как это реализовать ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2013, 19:03     Ошибка С4700
Посмотрите здесь:

В чём ошибка.В коде там где коментарий там ошибка поучается. C++
C++ Вылетает ошибка error C2061: синтаксическая ошибка: идентификатор "_TCHAR"
C++ Глупая ошибка, но до сих пор неисправленная ошибка: ";"
Синтаксическая ошибка: Ошибка 1 error C2059 C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
12.07.2013, 21:12     Ошибка С4700 #21
Цитата Сообщение от Fahrengeht Посмотреть сообщение
и void должен вернуть результаты в main (c,n).Как это реализовать
Передавайте параметры по ссылке
void Dihotomia(double a,double b,double eps,double &c,int &n)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fahrengeht
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 13
12.07.2013, 21:14  [ТС]     Ошибка С4700 #22
Спасибо,помогло.
coloc
12.07.2013, 21:14
  #23

Не по теме:

Fahrengeht, никогда не пиши спагетти код...

Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
12.07.2013, 21:17     Ошибка С4700 #24
Цитата Сообщение от Fahrengeht Посмотреть сообщение
А какая разница
Так в переменных, которые вы считаете, сначала храниться мусор, который вы печатаете на экране, а потом только подсчитываете их значения

Добавлено через 2 минуты
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
double f(double x)
{
 
    return (2*x)-(3*log(x))-3;
}
 
double fi(double x, double L) 
{
 
    return  x+L*f(x);
}
 double f1(double x) 
 {
 
    return   2-(3/x);
}
 
double f2(double x)
{
 
    return   3/pow(x, 2);
}
   int t,n;
    double a,b,c,eps,x,L=-0.35;
void Dihotomia(double a,double b,double eps)
{
  n=0;
  c=0;
    do 
    {
        c=(a+b)/2;
        if (f(c)*f(a)<=0) b=c;
        else a=c;
        n+=1;
    }
    while (fabs(a-b)>=eps);
}
 
 
 
void Prost_iter(double x,double eps)
{
    n=0;
    c=0;
    double L=-0.35;
    do 
    {
        c=fi(x,L);
        b=fabs(x-c);
        x=c;
        n+=1;
    }
    while (b>=eps);
        getchar();
}
 
void Newton(double a,double b,double eps)
{
    n=0;
    c=0;
    if(f(a)*f2(a)>0) c=a;
    else c=b;
    do 
    {
        c=c-f(c)/f1(c);
        n+=1;
    }
    while (fabs(f(c))>=eps);
        getchar();
}
int main()
{   
    setlocale(LC_ALL, "Russian" );
a:
    { 
    system("cls");
    cout<<"\t\t\t2x-3ln(x)-3"<<endl;
    cout<<"\t\t\tВыберете метод решения:"<<endl;
    cout<<"1--Метод дихотомии."<<endl;
    cout<<"2--Метод простых итераций."<<endl;
    cout<<"3--Метод ньютона."<<endl;
    cout<<"0--Возврат к выбору методов."<<endl;
    cin>>t;
    switch(t)
    { 
    case 1:
    cout<<"a="; cin>>a;
    cout<<"b="; cin>>b;
    cout<<"Точность ="; cin>>eps;
    Dihotomia(a,b,eps);
    cout<<"Корень ="<<c<<"\n";
    cout<<"Число итераций ="<<n<<"\n";
    cout<<"Значение функции ="<<f(c)<<"\n";
    
    break;
    case 2:
    cout<<"x="; cin>>x;
    cout<<"Точность ="; cin>>eps;
    Prost_iter(x,eps);
    cout<<"Корень ="<<c<<"\n";
    cout<<"Число итераций="<<n<<"\n";
    cout<<"Значение функции ="<<f(c)<<"\n";
    
    break;
    case 3:
    cout<<"a="; cin>>a;
    cout<<"b="; cin>>b;
    cout<<"Точность ="; cin>>eps;
    Newton(a,b,eps);
    cout<<"Корень ="<<c<<"\n";
    cout<<"Число итераций ="<<n<<"\n";
    cout<<"Значение функции ="<<f(c)<<"\n";
    
    break;
    }
    cin>>t;
    if(t==0)
    {
    goto a;
    }
}
}
всё вроде норм считает
Yandex
Объявления
12.07.2013, 21:17     Ошибка С4700
Ответ Создать тему
Опции темы

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