Форум программистов, компьютерный форум, киберфорум
Наши страницы

Код после занесения в функцию перестаёт работать - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отсортировать выходные данные http://www.cyberforum.ru/cpp-beginners/thread1127498.html
Привет всем. Помогите пожалуйста напишите за меня сортировку выходных данных поправить. Есть код, который принимает и выводит то что принял, а как приткнуть сортировку туда, не пойму. h файл...
C++ Написание программ на нескольких языках программирования Написание программ на нескольких языках программирования - слышал, что так можно делать. А как? (Просто для интереса спросил.) http://www.cyberforum.ru/cpp-beginners/thread1127488.html
C++ Сгенерировать неупорядоченный массив целых чисел от 1 до N
Описание. Написать функцию, принимающую на вход произвольное целочисленное значение и возвращающую массив, содержащий последовательность чисел от 1 до этого значения, в котором каждое число...
C++ Как работает оператор switch?
Shape* generator() { switch(rand() % 3) { case 0: return new Triangle; case 1: return new Rectangle; case 2: return new Octagon; Что возвращает switch при case 3?
C++ Написать программу, которая определяет номер строки квадратной матрицы, сумма элементов которой минимальна http://www.cyberforum.ru/cpp-beginners/thread1127433.html
Написать программу, которая определяет номер строки квадратной матрицы, сумма элементов которой минимальна
C++ Составить программу для обработки массива Составить программу для подсчета суммы и количества четных элементов линейной таблицы Y, состоящий из 12 действительных чисел, удовлетворяющих условию|yi|<=a, где - число, вводится. подробнее

Показать сообщение отдельно
Октавиан_Август
2 / 2 / 0
Регистрация: 14.08.2010
Сообщений: 41

Код после занесения в функцию перестаёт работать - C++

23.03.2014, 16:49. Просмотров 166. Ответов 1
Метки (Все метки)

Есть функция (для LU-разложения), взял с этого же форума, только там не было векторов:
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
void myLU(vector<vector <double>> a, int n, vector<vector <double>>L, vector<vector <double>>U) {
    //int i, j, k;
    //инициализация матриц l и u
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <n ; j++)
        {
            if (i == j) L[i][j] = 1.0;
            else L[i][j] = 0.0;
            U[i][j] = 0.0;
        }
    }
    //непосредственно разложение
    for (int k = 0; k<n; k++)
    {
        U[k][k] = a[k][k];
        for (int i = k + 1; i<n; i++)
        {
            L[i][k] = a[i][k] / U[k][k];
            U[k][i] = a[k][i];
        }
        for (int i = k + 1; i<n; i++)
        {
            for (int j = k + 1; j<n; j++) a[i][j] = a[i][j] - L[i][k] * U[k][j];
        }
    }
    
}
Также есть код
C++
1
2
3
vector<vector <double>> l;
vector<vector <double>> u;
vector<vector <double>> A;
для объявления переменных , который висит вне всего этого.
Суть проблемы: если в main написать просто текст функции (обращаясь к нужным массивам), то всё работает нормально. Если же написать код LU(A,n,l,u), то после его выполнения содержимое векторов l и u не изменяется (остаются нолики, как при инициализации). Ошибок компиляции нет, дебаг выявил, что с переменными L и U в функции всё также хорошо (их элементы принимают нужные значения), но соответствующие им l и u при этом не изменяются. Вопрос: что надо делать? Надо обязательно использовать что-то из контейнеров STL, так что вариант "как в С" не прокатит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru