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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nadja
1 / 1 / 0
Регистрация: 20.12.2010
Сообщений: 27
#1

Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив? - C++

11.04.2012, 01:27. Просмотров 510. Ответов 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
43
44
45
46
47
48
49
50
51
double gaus(int n, double c[30][30], double d[30])
{   int k,k1,kn,i,j;
    vector<double> t[30];
    double temp;
    for (k=1;k<n-1;++k)
    {
        if (c[k][k]==0)
        {   
            for (k1=k+1;k1<n;++k1)
            {
                if (c[k1][k]!=0)
                {
                    kn = k1;
                    for( j=1;j<n;++j)
                    {
                        temp = c[k][j];
                        c[k][j] = c[kn][j];
                        c[kn][j] = temp;
                    }
                    temp = d[k];
                    d[k] = d[kn];
                    d[kn] = temp;
                }
            }
        }
    }
    d[k] = d[k]/c[k][k];
    for (i = k+1;i<n;++i)
    {
        d[i] = d[i]-(c[i][k]*d[k]);
    }
    for (j = k+1;j<n;++j)
    {
        c[k][j] = c[k][j]/c[k][k];
        for (i = k+1;i<n;++i)
        {
            c[i][j] = c[i][j]-(c[i][k]*c[k][j]);
        }
    }
t[n] = d[n]/c[n][n];
for (i = n-1;i>1;--i)
{
    for(j = i+1;j<n;++j)
    {
        d[i] = d[i]-(t[j]*c[i][j]);
    }
    t[i] = d[i];
}
 
    return t;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2012, 01:27     Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив?
Посмотрите здесь:

Нужно чтобы функция в зависимости от условий возвращала string или double - C++
Привет, как можно реализовать? Нужно чтобы функция в зависимости от условий возвращала string или double

Как сделать, чтобы функция возвращала массив? - C++
Доброго времени суток! Есть функция которая находит значения 4х элементов массива. как сделать чтобы она возвращала сразу весь массив?

Работа с классами (сделать, чтобы функция возвращала массив, получаемый суммированием двух входных) - C++
В программу передаю 2 массива из пяти чисел. После выполнения функции getAM хочу, чтобы она возвращала массив, получаемый суммированием...

Что нужно изменить, чтобы был динамический массив? - C++
Не нашел ничего дельного на эту тему. Как объявить переменную в данном случае, чтобы массив был динамическим? Не могу понять что делать....

Что нужно изменить, чтобы выводило максимальный элемент каждой строки в одномерный массив? - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; /* run this program using the console pauser or add your own getch,...

Сделать так, чтобы функция возвращала параметр - C++
В общем, есть 3 матрицы, выведение их на экран и перемножение, сделанное через класс. Функции mult1 и mult2 умножают и выводят сразу на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,439
Записей в блоге: 17
11.04.2012, 01:42     Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив? #2
C++
1
double gaus(int n, double c[30][30], double d[30])
Тут ты передаеш не массив как параметр а только его 30*30- элемент

Возвратить непосредственно массив нельзя, можно либо изменить массив тот который передашь как параметр или возвратить указатель на новый динамически созданный массив (но тогда нужно будет не забыть его вручную удалить)
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
11.04.2012, 02:06     Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив? #3
передавай указатель на массив и будет тебе счастье. И массив передашь в функцию, и все изменения возвратятся из неё
C++
1
double gaus(int n, double** c, double* d)
тем более размер ты и так передаёшь
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
11.04.2012, 02:26     Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив? #4
Avazart, вообще то передается массив 30х30, это не вызов функции а ее описание.

Вопрос в другом, зачем возвращать массив, если он передается по ссылке? И тем более массив статический. Если вы хотите вернуть тот вектор что создаете в функции, то измените возвращаемый тип на vector< double >
И в функции думаю нужно написать vector< double > t( 30 ) вместо vector< double > t[ 30 ]
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,439
Записей в блоге: 17
11.04.2012, 02:54     Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив? #5
Toshkarik, да точно, тупанул.
Там действительно функция будет изменять массив который ей передашь, если надо именно возвращать то только через указатель.
Nadja
1 / 1 / 0
Регистрация: 20.12.2010
Сообщений: 27
11.04.2012, 17:25  [ТС]     Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив? #6
спасибо. Сделала вот так ,но функция не верно считает
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
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <vector>
using namespace std;
 
vector<double> gaus(int n, double c[30][30], double d[30])
{   int k,k1,kn,i,j;
    vector<double> t(30);
    double temp;
    for (k=1;k<n-1;++k)
    {
        if (c[k][k]==0)
        {   
            for (k1=k+1;k1<n;++k1)
            {
                if (c[k1][k]!=0)
                {
                    kn = k1;
                    for( j=1;j<n;++j)
                    {
                        temp = c[k][j];
                        c[k][j] = c[kn][j];
                        c[kn][j] = temp;
                    }
                    temp = d[k];
                    d[k] = d[kn];
                    d[kn] = temp;
                }
            }
        }
    }
    d[k] = d[k]/c[k][k];
    for (i = k+1;i<n;++i)
    {
        d[i] = d[i]-(c[i][k]*d[k]);
    }
    for (j = k+1;j<n;++j)
    {
        c[k][j] = c[k][j]/c[k][k];
        for (i = k+1;i<n;++i)
        {
            c[i][j] = c[i][j]-(c[i][k]*c[k][j]);
        }
    }
t[n] = d[n]/c[n][n];
for (i = n-1;i>1;--i)
{
    for(j = i+1;j<n;++j)
    {
        d[i] = d[i]-(t[j]*c[i][j]);
    }
    t[i] = d[i];
}
 
    return t;
}
 
int _tmain(int argc, _TCHAR* argv[])
{int n = 3;
double c[30][30];
double d[30];
for (int i=0; i<n;i++)
{   cout<<"d:"<<endl;
    cin>>d[i];
 
    for (int j=0; j<n; j++)
    {   cout<<"c:"<<endl;
        cin>>c[i][j];
 
    }
}
vector<double>  a(30);
a = gaus(n,c,d);
  for (int i = 0; i < n; ++i)
    cout << a[i] << endl;
    
getch();
}
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
11.04.2012, 19:45     Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив? #7
Что именно она должна считать? И как вы используете эту функцию в main?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2012, 21:42     Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив?
Еще ссылки по теме:

Как сделать так, чтобы функция rand() возвращала разные значения - C++
Добрый вечер, как можно в visual studio в цикле каждый раз задавать новые рандомные значения перменной, к примеру for(int i=0;i&lt;10;i++) ...

Как сделать так что бы функция возвращала строку - C++
Как сделать так что бы функция возвращала строку

Что нужно изменить, чтобы получился однонаправленный список? - C++
Что нужно добавить или изменить, чтобы получился однонаправленный список? struct car{ char name; // название марки машины int top;...

Что нужно изменить в функции,чтобы Visual начал воспринимать - C++
#include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;Windows.h&gt; using namespace std; void sravn(char s); void main() { ...


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

Или воспользуйтесь поиском по форуму:
Nadja
1 / 1 / 0
Регистрация: 20.12.2010
Сообщений: 27
12.04.2012, 21:42  [ТС]     Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив? #8
Должна выводить корни при заданных значениях коэффициентов c[30][30] И d[30].
Yandex
Объявления
12.04.2012, 21:42     Что нужно изменить ,чтобы функция с методом Гаусса возвращала массив?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru