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

Помогите исправить ошибки в моей программе LU-разложение за Гауссом(Dev-C++) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Моргание экрана (graphics.h) http://www.cyberforum.ru/cpp-beginners/thread363390.html
Привет. Я уже наверное уже всех задолбал со своей "Жизнью" :) Извиняйте, ещё один вопрос, надеюсь, что последний. #ifndef LIFE_H #define LIFE_H class Life { public: Life (); // конструктор
C++ Найти количество чисел. Добрый день, помогите пожалуйста составить программу: Вводятся числа a и b. Найти количество таких чисел в диапазоне , которые являются точными квадратами. У меня получилось, что-то вроде этого, ноооо опять же, меня терзают смутные сомнения:D Спасибо! #include<iostream> #include<conio.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread363379.html
Вычислить сумму нечётных чисел и количество чисел равных 0 в последовательности C++
Дана последовательность чисел, окачивающихся 0. 1. Вычилсить сумму нечётных чисел. 2. Количество чисел равных 0. Используя конструкцию CASE организовать меню для выбора пользователем решаемой задачи.
C++ написать программу, проверяющую, можно ли в пятеричную запись числа х вставить цифру 4 так, чтобы оно стало степенью 2
написать программу проверяющую можно ли в пятеричную запись числа х вставить цифру 4 так чтобы оно стало степенью 2 использовать +,=,<,-,*,/,% заранее благодарю 3.3 Запрещено создавать темы с бессмысленными названиями вроде "Помогите!", "Вопрос" и т.п.
C++ Проблемы с rand() в Dev-C++ http://www.cyberforum.ru/cpp-beginners/thread363349.html
Всем привет=))))Форумчане, нужна ваша помощь!!!!У меня не очень получается с программированием.Мне кажется у меня проблемы с функцией rand()О_о.Сначала числа в матрице генерировались нормально, но при вводе одной и той же размерности, сама матрица не менялась...Я нашла на форуме небольшой пример. После чего у меня начало выводить всякий мусор (т.е. матрица выводилась n-раз), а сейчас и вовсе не...
C++ Необходимо создать меню к игре Я новичек, поэтому мне сложнова-то обьяснить. Мне необходимо создать меню к игре: 1. появляется окно - в нем пункты - правила игры, новая игра, загрузить игру, таблица рекордов, выход 2. курсором перебираешь пункты меню, хотелось бы чтоб еще прорисовывалась стрелочка(треугольник) возле пункта на котором сейчас стоишь 3. выбираешь пункт (либо он визуально вдавливался, либо цветом выделялся при... подробнее

Показать сообщение отдельно
Лёлик
 Аватар для Лёлик
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 8
09.10.2011, 11:24     Помогите исправить ошибки в моей программе LU-разложение за Гауссом(Dev-C++)
Help me,please!!!!!!!
У меня возникли трудности с реализацией этой задачи (Dev-C++):Задана квадратная матрица МА nxn (n – задаёт пользователь). элементы матрицы заполняются случайными целыми числами
в диапазоне [-5;5]. Написать программу, какая делает LU-разложение
даной матрицы. Я брала в некоторых частях кусочки готовых программ и думаю, что здесь масса ошибок...Форумчани, помогите если не трудно...Выдаёт ошибку:где-то с #include <cstdlib>. Вот мой код:
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
#include <iomanip>//setw()
#include <cstdlib>// rand (), srand ()
#include <windows.h>
using namespace std;
 
// пользовательские функции:
// меняем местами строки в массиве с коэфицентами уравнения
 
void exchange(double **mas, int n,int from, int to){
    for(int i=0; i < n; i++){
        mas[from][i] = mas[from][i] + mas[to][i];
        mas[to][i] = mas[from][i] - mas[to][i];
        mas[from][i] = mas[from][i] - mas[to][i];
    }
}
// определяем ближайшую строку с не 0 диоганалью вниз
int get_n_no_empty(double **MA, int n, int begin){
    for(int i=begin+1; i < n; i++){
        if(MA[i][i] != 0){
            return i;
        }
    }
    cout << "Данная система не решается методом Гаусcа" << endl;
    getch();
    exit(1);
}
 
// функция ждет пока пользователь прочтет и нажмет на кнопку, не обязательная функция
void pause(){
    cout << "Нажмите любую кнопку для продолжения" << endl;
    getch();
}
 
 
 
int main()
{
setlocale(LC_ALL, "Russian"); //чтоб буквы были русскими 
 
 int n,i,j; //размер матрицы
 double **MA,**U,**L // матрицы 
 
// переменной razmer присвоим размер матрицы */
cout<<"Введите размерность матрицы МА:\n";
cin>>razmer;
 
    // создание динамических переменных
    MA = new double*[n]; //память для матрицы
    U = new double*[n];
    L = new double*[razmer];
    
    for(int i=0; i < razmer; i++){
        MA[i] = new double[razmer];
  
//присвоим значение матрице MA 
            for (int j=0;j<n;j++)
            {time_t temp = time(NULL);//получаем время
             srand(temp); //инициализируем генератор случайныйх чисел полученным временем
             MA[i][j] = rand()%(-11)-5; //заполняем матрицу случайным образом от -5 до 5
        }
        }
        //вывод матрицы на экран
        cout<<"Сформированная матрица:\n";
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
                cout<<setw(5)<<*(*(MA+i)+j)<<ends;//setw(5)-ширина поля вывода з iomanip.h
            cout<<endl;
        }
 // начинаем решать
    // прямой проход
    
    for(int k=0; k < n-1; k++){//думаю,где-то здесь есть проблемы
        // вычитаем по строкам
        for(int m=k+1; m < n; m++){
            // если на диагонали элемент = 0, то поменяем местами строки
            if(MA[m][m] == 0) exchange(MA, n, m, get_n_no_empty(MA, n, m));
            
            double M[m][k]=MA[m][k]/MA[0][k];
            cout<<"Коэфициент M["m"]["k"]:"<<M[m][k]<<endl;
            //вычисление новых коэфицентов уравнения
           
            for(int z=0; z < n; z++){
                MA[m][z] = MA[m][k] - MA[0][k] * M[m][k];
             //вывод матрицы на экран
        cout<<"Сформированная эквивалентная матрица :\n";
        //Теперь  прировняем эквивалентную матрицу MA[m][z] к U
        for(int m=k+1; m < n; m++)
        {U[m] = new double[n];
            for(int z=0; z < n; z++){
                MA[m][z]=U[m][z];
            cout<<endl;
        }
            }
        }
    }  cout << "L берём как одиничную матрицу:\n";
        for ( i = 0; i < n; i ++ ){
            for ( j = 0; j < n; j ++ ){
                cout << matrixL[i][j] << " ";
            }
            cout << "\n";
        }
/*В нижнюю /\-ю матрицу L подставим те коэфициенты, которые которые использовались
для построения верхней треугольной матрицы U- как это сделать ещё не придумала(запуталась в коэф.*/
     
getch();
system("pause");
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru