Форум программистов, компьютерный форум 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++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Valentina
66 / 66 / 3
Регистрация: 13.05.2012
Сообщений: 130
12.07.2013, 19:07     Ошибка С4700 #2
Цитата Сообщение от Fahrengeht Посмотреть сообщение
warning C4700: использована неинициализированная локальная переменная "n"
warning C4700: использована неинициализированная локальная переменная "с"
это не ошибка, это предупреждение
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
12.07.2013, 19:11     Ошибка С4700 #3
Вопрос: warning C4700: использована неинициализированная локальная переменная "n"
warning C4700: использована неинициализированная локальная переменная "с"
Ответ 1: Это не ошибка, это предупреждение. Исправить этим предупреждения можно просто, когда вы создаете переменную, желательно ей тут-же определять значение. Допустим:
int n = 0; // Создали переменную и тут-же ее инициализировали значением 0


Вопрос: Как я понял int main должна передавать значения(a,b) в void, в там же должен идти расчет, и void должен вернуть результаты в main (c,n).Как это реализовать ?
Ответ 2: С помощью параметров функции, ну и после того как все там посчитали, и функция стала не нужно, возвращаете значение с помощью return имя_возрашаемой_ переменной;
Fahrengeht
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 13
12.07.2013, 19:24  [ТС]     Ошибка С4700 #4
return в void?, да вы батенька даете.
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
12.07.2013, 20:31     Ошибка С4700 #5
Цитата Сообщение от Fahrengeht Посмотреть сообщение
int main должна передавать значения(a,b) в void
В какой void, т.е. в какую п/п(у вас 3 п/п с void)?
Fahrengeht
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 13
12.07.2013, 20:43  [ТС]     Ошибка С4700 #6
да хотя бы в первую,чтоб понять как делать.
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
12.07.2013, 20:44     Ошибка С4700 #7
Цитата Сообщение от Fahrengeht Посмотреть сообщение
Да во вссе три.
Ок, что должна возвращать каждая п/п(какое значение)?
Fahrengeht
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 13
12.07.2013, 20:46  [ТС]     Ошибка С4700 #8
c и n.
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
12.07.2013, 20:48     Ошибка С4700 #9
Ну через return ясен пень не получиться, объявляй c и n глобально
Fahrengeht
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 13
12.07.2013, 20:50  [ТС]     Ошибка С4700 #10
не пашет.
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
12.07.2013, 20:52     Ошибка С4700 #11
Цитата Сообщение от Fahrengeht Посмотреть сообщение
не пашет.
Как именно? Неправильно считает или ...?
Fahrengeht
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 13
12.07.2013, 20:54  [ТС]     Ошибка С4700 #12
да.

Добавлено через 56 секунд
технически все верно,но связи функции и процедуры нет
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
12.07.2013, 20:54     Ошибка С4700 #13
Покажи код, когда объявлены c и n глобально
Fahrengeht
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 13
12.07.2013, 20:55  [ТС]     Ошибка С4700 #14
В в майне с клавы набираем значения а и б
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
12.07.2013, 20:56     Ошибка С4700 #15
Цитата Сообщение от Fahrengeht Посмотреть сообщение
В в майне с клавы набираем значения а и б
И...?
Fahrengeht
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 13
12.07.2013, 20:57  [ТС]     Ошибка С4700 #16
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
#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);
}
   int t,n;
    double a,b,c,eps,x,L=-0.35;
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;
    }
}
}
Добавлено через 1 минуту
эти значения передаются процедуре,идет расчет,и результаты расчета (с и н) должны вернуться в майн
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
12.07.2013, 20:59     Ошибка С4700 #17
Удалите из main int t,n; double a,b,c,eps,x,L=-0.35; т.к. здесь это уже другие переменные, локальные
Fahrengeht
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 13
12.07.2013, 21:01  [ТС]     Ошибка С4700 #18
непомогает
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
12.07.2013, 21:07     Ошибка С4700 #19
Цитата Сообщение от Fahrengeht Посмотреть сообщение
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);
Вы сначала выдаёте на экран "подсчитанные" значения, а только потом их считаете
C
1
2
3
4
5
6
7
    cout<<"a="; cin>>a;
    cout<<"b="; cin>>b;
    cout<<"Точность ="; cin>>eps;
    Dihotomia(a,b,eps,c,n);
    cout<<"Корень ="<<c<<"\n";
    cout<<"Число итераций ="<<n<<"\n";
    cout<<"Значение функции ="<<f(c)<<"\n";
Fahrengeht
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 13
12.07.2013, 21:10  [ТС]     Ошибка С4700 #20
А какая разница,темболее не помогает.
Yandex
Объявления
12.07.2013, 21:10     Ошибка С4700
Ответ Создать тему
Опции темы

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