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

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

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

Метод Гауса, Visual 2008 - C++

17.09.2009, 13:36. Просмотров 837. Ответов 5
Метки нет (Все метки)

Не могу понять, что происходит с программой..только осваиваю visual...запускаю, происходит выполнение и консольное окно закрывается, ошибок компиляции вроде нет...помогите как запустить ее на visuale 2008..(

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
#include "stdio.h"
#include "iostream.h"
 
 
// возвращает true если LU-разложение для матрицы,
// состоящей из строк и столбцов с currRowAndColumn п numberOfEquation, было найдено
bool getLUDecomposition( double **matrixU, double **matrixL, int currRowAndColumn, int numberOfEquation ) {
    bool result;
    int i, k;           // переменные циклов 
    double tempItem;    // Вспомогательная переменная
 
    // если текущий элемент на диагонали равен 0 - LU-разложение не найдено
    result = ( matrixU[currRowAndColumn][currRowAndColumn] != 0 );      
    if ( result && currRowAndColumn < numberOfEquation - 1 ) {
        // определение новых значений элементов матрицы U
        // и получение нового столбца в матрице L
        for ( i = currRowAndColumn + 1; i < numberOfEquation; i++ ) {
            matrixL[i][currRowAndColumn] = matrixU[i][currRowAndColumn] / matrixU[currRowAndColumn][currRowAndColumn];
            tempItem = - matrixL[i][currRowAndColumn];
            for ( k = currRowAndColumn; k < numberOfEquation; k++ ) {
                matrixU[i][k] = matrixU[i][k] + matrixU[currRowAndColumn][k]*tempItem;
            }
        }
 
        // рекурсивный вызов
        result = getLUDecomposition( matrixU, matrixL, currRowAndColumn + 1, numberOfEquation );
    }
 
    return result;
}
 
void main() {
    int i, j;
    int size;
    double **matrixU, **matrixL;
 getchar();
 
    cout << "Gauss'es method of LU.\nEnter system dimension: ";
    cin >> size;
 
    matrixU = new double*[size];
    matrixL = new double*[size];
    for ( i = 0; i < size; i++ ) {
        matrixU[i] = new double[size];
        matrixL[i] = new double[size];
        for ( j = 0; j < size; j ++ ){
            matrixL[i][j] = ( i == j ? 1 : 0 );
        }
    }
 
    for ( i = 0; i < size; i ++ ){
        cout << "Enter " << i + 1 << " row: ";
        for ( j = 0; j < size; j ++ ){
            cin >> matrixU[i][j];
        }
    }
 
    if ( !getLUDecomposition( matrixU, matrixL, 0, size ) ) {
        cout << "LU-decomposition for this matrix not found";
    }
    else {
        cout << "L-matrix is:\n";
        for ( i = 0; i < size; i ++ ){
            for ( j = 0; j < size; j ++ ){
                cout << matrixL[i][j] << " ";
            }
            cout << "\n";
        }
        cout << "\nU-matrix is:\n";
        for ( i = 0; i < size; i ++ ){
            for ( j = 0; j < size; j ++ ){
                cout << matrixU[i][j] << " ";
            }
            cout << "\n";
        }
    }
 
    cout << "\nPress \"Enter\" to continue..." << endl; 
    getchar();  
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2009, 13:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод Гауса, Visual 2008 (C++):

Метод Гауса - C++
люди если кто может помочь помогите с задание таким Методом Гаусса решить систему n линейных алгебраических уравне-ний c n неизвестными....

Метод Гауса есть? - C++
Поделитесь плиз програмкой для решения СЛАУ методом гауса=)

Метод гауса система ленейных уравнений - C++
Когда система линейных уравнений решенная методом Гаусса имеет бесконечное мноджество решений? какое должно быть условие?

метод гауса..обьясните как работает программа - C++
ipMatr(); for(opMatr(),k=0;k&lt;=n;k++) //прямой ход метода Гаусса; {for(aa=fabs(a),i=k,j=k+1;j&lt;=n;j++)//поиск макс....

Если проект создала в Visual C++ Express 2008, он должен запуститься просто в VS 2008? - C++
Извините за глупый вопрос, просто времени нет устанавливать и проверять( Очень спешу

Написать программу. Задания нужно выполнять на языке Visual C++ в среде Microsoft Visual Studio 2008 - C++
Можете написать программу? Задание по номером 3.24 (2 рисунок).

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
17.09.2009, 13:38 #2
создаю исполняемый файл запускаю окно появляется на доли секунды и изчезает
0
Victooor
0 / 0 / 0
Регистрация: 17.09.2009
Сообщений: 19
17.09.2009, 14:13  [ТС] #3
Использую же функцию getchar()..глянь в конце кода, да и cin же должен ждать ввода значений...ничего не происходит..
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
17.09.2009, 15:48 #4
Вместо 79 строки вставь
C++
1
2
cin.get();
cin.get();
1
Victooor
0 / 0 / 0
Регистрация: 17.09.2009
Сообщений: 19
19.09.2009, 07:07  [ТС] #5
код
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
#include "stdafx.h"
#include "stdio.h"
#include "iostream"
 
 
// возвращает true если LU-разложение для матрицы,
// состоящей из строк и столбцов с currRowAndColumn п numberOfEquation, было найдено
bool getLUDecomposition( double **matrixU, double **matrixL, int currRowAndColumn, int numberOfEquation ) {
        bool result;
        int i, k;                       // переменные циклов 
        double tempItem;        // Вспомогательная переменная
 
        // если текущий элемент на диагонали равен 0 - LU-разложение не найдено
        result = ( matrixU[currRowAndColumn][currRowAndColumn] != 0 );          
        if ( result && currRowAndColumn < numberOfEquation - 1 ) {
                // определение новых значений элементов матрицы U
                // и получение нового столбца в матрице L
                for ( i = currRowAndColumn + 1; i < numberOfEquation; i++ ) {
                        matrixL[i][currRowAndColumn] = matrixU[i][currRowAndColumn] / matrixU[currRowAndColumn][currRowAndColumn];
                        tempItem = - matrixL[i][currRowAndColumn];
                        for ( k = currRowAndColumn; k < numberOfEquation; k++ ) {
                                matrixU[i][k] = matrixU[i][k] + matrixU[currRowAndColumn][k]*tempItem;
                        }
                }
 
                // рекурсивный вызов
                result = getLUDecomposition( matrixU, matrixL, currRowAndColumn + 1, numberOfEquation );
        }
 
        return result;
}
using std::cout;
using std::cin;
using std::endl;
void main() {
        int i, j;
        int size;
        double **matrixU, **matrixL;
 getchar();
 
    cout << "Gauss'es method of LU.\nEnter system dimension: ";
    cin >> size;
 
        matrixU = new double*[size];
        matrixL = new double*[size];
        for ( i = 0; i < size; i++ ) {
                matrixU[i] = new double[size];
                matrixL[i] = new double[size];
                for ( j = 0; j < size; j ++ ){
                        matrixL[i][j] = ( i == j ? 1 : 0 );
                }
        }
 
        for ( i = 0; i < size; i ++ ){
                cout << "Enter " << i + 1 << " row: ";
                for ( j = 0; j < size; j ++ ){
                        cin >> matrixU[i][j];
                }
        }
 
        if ( !getLUDecomposition( matrixU, matrixL, 0, size ) ) {
                cout << "LU-decomposition for this matrix not found";
        }
        else {
                cout << "L-matrix is:\n";
                for ( i = 0; i < size; i ++ ){
                        for ( j = 0; j < size; j ++ ){
                                cout << matrixL[i][j] << " ";
                        }
                        cout << "\n";
                }
                cout << "\nU-matrix is:\n";
                for ( i = 0; i < size; i ++ ){
                        for ( j = 0; j < size; j ++ ){
                                cout << matrixU[i][j] << " ";
                        }
                        cout << "\n";
                }
        }
 
    cout << "\nPress \"Enter\" to continue..." << endl; 
    cin.get(); 
    cin.get();
}
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
19.09.2009, 09:03 #6
Victooor, это уже правильно работающий код или что это?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2009, 09:03
Привет! Вот еще темы с ответами:

несовместимость visual c++ 6.0 и visual studio 2008 - C++
почему правильно гаписанная программа в visual c++ 6.0 не работает в visual studio 2008 , а именно #include &lt;iostream&gt; ...

несовместимость visual c++ 6.0 и visual studio 2008 - C++
почему правильно написанная программа в visual c++ 6.0 не работает в visual studio 2008 , а именно #include &lt;iostream&gt; using namespace...

visual c ++ 2008 - C++
Почему в 2008 не работает #include

из Visual 6.0 к MS Visual Std 2008 - C++
Подскажите я начал не много изучать C++ но писал до сех пор на VC 6.0 а ща устоновил MS Visual Std 2008 ни как там не могу 1 программу...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.09.2009, 09:03
Ответ Создать тему
Опции темы

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