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

Не получается присвоить значение указателя в функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Saub
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
14.04.2012, 16:09     Не получается присвоить значение указателя в функции #1
C++
1
2
3
4
5
6
7
8
9
void Gauss(double *x[n],double b[n])
{
for (int i = n-1; i >0 ; i--) {
    *x[i]=0;
    for (int j = n; j < i; j--) {
    *x[i]+=-*x[j]*A[i][j];
    }
    *x[i]=*x[i]+b[i];
}
Cобственно говоря этот код компилируется, но не присваивает значение и вылетает с ошибкой Хотелось бы понять в чем ошибка?
P.S. A-глобально объявлена.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
14.04.2012, 16:15     Не получается присвоить значение указателя в функции #2
C++
1
double *x[n]
под этим у вас подразумевается двумерный массив?
переменная n тоже объявлена глобально?
Saub
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
14.04.2012, 16:17  [ТС]     Не получается присвоить значение указателя в функции #3
Переменная n обявлена в #define. Нет под double *x[n] подразумевается одномерный массив.
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
14.04.2012, 16:27     Не получается присвоить значение указателя в функции #4
Цитата Сообщение от Saub Посмотреть сообщение
Переменная n обявлена в #define. Нет под double *x[n] подразумевается одномерный массив.
Если вам надо передать одномерный массив в фукцию, то правильно так
C++
1
2
3
void Gauss(double *x){
   x[0]=0; 
}
*x[n] - это объявление массива из n указателей
Saub
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
14.04.2012, 16:32  [ТС]     Не получается присвоить значение указателя в функции #5
Хм, окей, спасибо, попробую.

Добавлено через 3 минуты
Мм, боюсь так тоже неверно.
C++
1
2
3
4
5
6
bool Res()
{double *x,x1;
    init();
    Bring();
    Gauss(x,B);
}
Таким образом я вызываю функцию:

C++
1
2
3
4
5
6
7
8
9
void Gauss(double *x,double b[n])
{
for (int i = n-1; i >0 ; i--) {
    x[i]=0;
    for (int j = n; j < i; j--) {
    x[i]+=-x[j]*A[i][j];
    }
    x[i]=x[i]+b[i];
}
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
14.04.2012, 16:35     Не получается присвоить значение указателя в функции #6
Надо память выделить, если я правильно понял проблему.
C++
1
double *x=new double[n];
Saub
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
14.04.2012, 16:37  [ТС]     Не получается присвоить значение указателя в функции #7
Хм, а это действительно помогло. Спасибо.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.04.2012, 16:42     Не получается присвоить значение указателя в функции #8
Цитата Сообщение от Saub Посмотреть сообщение
Нет под double *x[n] подразумевается одномерный массив.
[] и * эквивалентны, применено одновременно то и другое, получается *x[n], **x и x[][] - одно и тоже. Массив двумерен.

Добавлено через 1 минуту
Цитата Сообщение от Saub Посмотреть сообщение
Переменная n обявлена в #define.
В дефайн нельзя объявить переменную.

Добавлено через 1 минуту
Цитата Сообщение от Saub Посмотреть сообщение
под double *x[n] подразумевается одномерный массив.
,
Цитата Сообщение от Saub Посмотреть сообщение
Gauss
. Метод Гаусса работает с матрицей.

Добавлено через 1 минуту
Цитата Сообщение от Saub Посмотреть сообщение
void Gauss(double *x[n],double b[n])
{
for (int i = n-1; i >0 ; i--) {
* * *x[i]=0;
* * for (int j = n; j < i; j--) {
* * *x[i]+=-*x[j]*A[i][j];
* * }
* * *x[i]=*x[i]+b[i];
}
Внутри нифига не Гаусс, в нём должно быть двойное вложение цикла + обратный цикл с однократным вложением.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2012, 18:13     Не получается присвоить значение указателя в функции
Еще ссылки по теме:

C++ Вычислить значение функции y для x=a(h)b - получается всего один результат
Как присвоить возвращаемое значение функции переменной? C++
При передаче указателя в качестве аргумента функции теряется значение C++

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

Или воспользуйтесь поиском по форуму:
Saub
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
14.04.2012, 18:13  [ТС]     Не получается присвоить значение указателя в функции #9
Ыыы, боюсь Вас огорчить. Я согласен что n это не переменная в данном случае, а по сути константа. По поводу неработоспособности мы еще посмотрим, притом что внутри не Гаусс, это лишь формирование вектора выходных переменных.

Добавлено через 1 час 22 минуты
В той функции действительно была одна ошибка, но в целом все верно.
Yandex
Объявления
14.04.2012, 18:13     Не получается присвоить значение указателя в функции
Ответ Создать тему
Опции темы

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