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

Исправьте код - C++

Восстановить пароль Регистрация
 
qwer1234
12 / 12 / 3
Регистрация: 30.10.2012
Сообщений: 463
27.03.2014, 20:08     Исправьте код #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
#include <iostream>
using namespace std;
 
 
 
bool converge(double *xk, double *xkp)
{
    for (int i = 0; i < n; i++) 
    {
        if (fabs(xk[i] - xkp[i]) >= eps) 
            return false;
    }
    return true;
}
 
/*
    Õîä ìåòîäГ*, ãäå:
    a[n][n] - ГЊГ*òðèöГ* êîýôôèöèåГ*òîâ
    x[n], p[n] - Г’ГҐГЄГіГ№ГҐГҐ ГЁ ïðåäûäóùåå ðåøåГ*ГЁГї
    b[n] - Ñòîëáåö ГЇГ°Г*âûõ Г·Г*Г±ГІГҐГ©
    Âñå ïåðå÷èñëåГ*Г*ûå Г¬Г*Г±Г±ГЁГўГ» ГўГҐГ№ГҐГ±ГІГўГҐГ*Г*ûå ГЁ
    äîëæГ*Г» áûòü îïðåäåëåГ*Г» Гў îñГ*îâГ*îé ïðîãðГ*ììå,
    ГІГ*êæå Гў Г¬Г*Г±Г±ГЁГў x[n] ñëåäóåò ïîìåñòèòü Г*Г*Г·Г*ëüГ*îå
    ïðèáëèæåГ*ГЁГҐ ñòîëáöГ* ðåøåГ*ГЁГ© (Г*Г*ïðèìåð, ГўГ±ГҐ Г*óëè)
*/
 
do
{
    for (int i = 0; i < n; i++)
        p[i] = x[i];
 
    for (int i = 0; i < n; i++)
    {
        double var = 0;
        for (int j = 0; j < i; j++)
            var += (a[i][j] * x[j]);
        for (int j = i + 1; j < n; j++)
            var += (a[i][j] * p[j]);
        x[i] = (b[i] - var) / a[i][i];
    }
}
while (!converge(x, p));
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 20:08     Исправьте код
Посмотрите здесь:

C++ исправьте код
C++ Исправьте код
C++ исправьте код
C++ исправьте код
C++ исправьте код
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Progers
New to C++
 Аватар для Progers
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
27.03.2014, 20:24     Исправьте код #2
А какая у вас ошибка?
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
27.03.2014, 20:25     Исправьте код #3
qwer1234, а где main()? И что вы хотите сделать?
qwer1234
12 / 12 / 3
Регистрация: 30.10.2012
Сообщений: 463
27.03.2014, 20:31  [ТС]     Исправьте код #4
Progers, LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/ûóö.exe : fatal error LNK1120: 1 unresolved externals
Progers
New to C++
 Аватар для Progers
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
27.03.2014, 20:31     Исправьте код #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
do
{
    for (int i = 0; i < n; i++)
        p[i] = x[i];
 
    for (int i = 0; i < n; i++)
    {
        double var = 0;
        for (int j = 0; j < i; j++)
            var += (a[i][j] * x[j]);
        for (int j = i + 1; j < n; j++)
            var += (a[i][j] * p[j]);
        x[i] = (b[i] - var) / a[i][i];
    }
}
while (!converge(x, p));
Это добро "засуньте" в функцию.
qwer1234
12 / 12 / 3
Регистрация: 30.10.2012
Сообщений: 463
27.03.2014, 20:32  [ТС]     Исправьте код #6
Ev_Hyper, Метод Гаусса — Зейделя. Отладьте программу

Добавлено через 32 секунды
Progers, можно полностью код, ато я в С++ не шарю нечего
Progers
New to C++
 Аватар для Progers
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
27.03.2014, 20:36     Исправьте код #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
using namespace std;
bool converge(double *xk, double *xkp)
{
    for (int i = 0; i < n; i++) 
    {
        if (fabs(xk[i] - xkp[i]) >= eps) 
            return false;
    }
    return true;
}
 
/*
    Ход метода, где:
    a[n][n] - Матрица коэффициентов
    x[n], p[n] - Текущее и предыдущее решения
    b[n] - Столбец правых частей
    Все перечисленные массивы вещественные и
    должны быть определены в основной программе,
    также в массив x[n] следует поместить начальное
    приближение столбца решений (например, все нули)
*/
 int main()
{
do
{
    for (int i = 0; i < n; i++)
        p[i] = x[i];
 
    for (int i = 0; i < n; i++)
    {
        double var = 0;
        for (int j = 0; j < i; j++)
            var += (a[i][j] * x[j]);
        for (int j = i + 1; j < n; j++)
            var += (a[i][j] * p[j]);
        x[i] = (b[i] - var) / a[i][i];
    }
}
while (!converge(x, p));
return 0;
}
У вас не обявлены переменные. Надеюсь вы умейте их обьявлять.
qwer1234
12 / 12 / 3
Регистрация: 30.10.2012
Сообщений: 463
27.03.2014, 21:12  [ТС]     Исправьте код #8
Progers, error C2065: 'n' : undeclared identifier
D:\Документи\С++\1\1.cpp(7) : error C2065: 'fabs' : undeclared identifier
D:\Документи\С++\1\1.cpp(7) : error C2065: 'eps' : undeclared identifier
D:\Документи\С++\1\1.cpp(30) : error C2065: 'p' : undeclared identifier
D:\Документи\С++\1\1.cpp(30) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(30) : error C2065: 'x' : undeclared identifier
D:\Документи\С++\1\1.cpp(30) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(30) : error C2106: '=' : left operand must be l-value
D:\Документи\С++\1\1.cpp(36) : error C2065: 'a' : undeclared identifier
D:\Документи\С++\1\1.cpp(36) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(36) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(36) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(38) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(38) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(38) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(39) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(39) : error C2065: 'b' : undeclared identifier
D:\Документи\С++\1\1.cpp(39) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(39) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(39) : error C2109: subscript requires array or pointer type
D:\Документи\С++\1\1.cpp(39) : error C2106: '=' : left operand must be l-value
Error executing cl.exe.
Progers
New to C++
 Аватар для Progers
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
27.03.2014, 21:31     Исправьте код #9
Какаята хрень получилась:
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
#include <iostream>
using namespace std;
int n = 0;
int eps = 0;
bool converge(double xk[1000][1000], double xkp[1000][1000])
{
  for(int k = 0; k < n; k++)
  for (int i = 0; i < n; i++) 
    {
      if ((xk[k][i] - xkp[k][i]) >= eps) 
    return false;
    }
  return true;
}
 
/*
    Ход метода, где:
    a[n][n] - Матрица коэффициентов
    x[n], p[n] - Текущее и предыдущее решения
    b[n] - Столбец правых частей
    Все перечисленные массивы вещественные и
    должны быть определены в основной программе,
    также в массив x[n] следует поместить начальное
    приближение столбца решений (например, все нули)
*/
int main()
{
  double p[1000][1000] , x[1000][1000] , a[1000][1000],b[1000][1000];
  cout << "Input n: "; cin >> n;
  cout << "Input eps: "; cin >> eps;
  
do
  {
    for(int k = 0; k < n; k++)
    for (int i = 0; i < n; i++)
      p[k][i] = x[k][i];
 
    for (int i = 0; i < n; i++)
      {
        double var = 0;
        for (int j = 0; j < i; j++)
      {
      var += (a[i][j] * x[i][j]);
      }
        for (int j = i + 1; j < n; j++)
      {
      var += (a[i][j] * p[i][j]);
        x[i][j] = (b[i][j] - var) / a[i][j];
      }
      }
  }
 while (!converge(x, p));
 return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2014, 23:17     Исправьте код
Еще ссылки по теме:

C++ Исправьте код пожалуйста!
C++ Исправьте код
Исправьте код C++

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

Или воспользуйтесь поиском по форуму:
Di3go
Аноним
 Аватар для Di3go
3 / 3 / 2
Регистрация: 15.12.2013
Сообщений: 134
27.03.2014, 23:17     Исправьте код #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
#include <iostream>
using namespace std;
 
 
 
bool converge(double *xk, double *xkp)
{
    for (int i = 0; i < n; i++) 
    {
        if (fabs(xk[i] - xkp[i]) >= eps) 
            return false;
    }
    return true;
}
 
/*
    Ход метода, где:
    a[n][n] - Матрица коэффициентов
    x[n], p[n] - Текущее и предыдущее решения
    b[n] - Столбец правых частей
    Все перечисленные массивы вещественные и
    должны быть определены в основной программе,
    также в массив x[n] следует поместить начальное
    приближение столбца решений (например, все нули)
*/
int main(){
do
{
    for (int i = 0; i < n; i++)
        p[i] = x[i];
 
    for (int i = 0; i < n; i++)
    {
        double var = 0;
        for (int j = 0; j < i; j++)
            var += (a[i][j] * x[j]);
        for (int j = i + 1; j < n; j++)
            var += (a[i][j] * p[j]);
        x[i] = (b[i] - var) / a[i][i];
    }
}
while (!converge(x, p));
// ...
return 0;
}
Yandex
Объявления
27.03.2014, 23:17     Исправьте код
Ответ Создать тему
Опции темы

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