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

Помогите написать программу для решения слау методом Гаусса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подсчитать сколько раз элементы массива меняют знак http://www.cyberforum.ru/cpp-beginners/thread569093.html
Дан массив ненулевых целых чисел. Определить сколько раз элементы массива, при просмотре от его начала, меняют знак. #include <iostream> #include <ctime> using namespace std; int main () { setlocale (LC_CTYPE, "Russian"); srand(time(NULL));
C++ подскажите, как можно сохранить переменную, вводимую во время работы программы после ее закрытия допустим есть переменная a ... int a; cin>>a; ... при повторном открытии программы переменная нигде не сохранится. как ее сохранить? заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread569080.html
Составные типы данных в процедурах и функциях C++
Кто может помогите решить задачу: Описать процедуру RemoveRows(A, M, N, K1, K2), удаляющую из вещественной матрицы A размера M × N строки с номерами от K1 до K2 включительно (предполагается, что 1 < K1 ≤ K2). Если K1 > M, то матрица не изменяется; если K2 > M, то удаляются строки матрицы с номерами от K1 до M. Двумерный массив A и числа M, N являются входными и выходными параметрами. Используя...
домино C++
нужен исходик игры домино на с++ builder в нете нашол ток на делфи . помогите программа оч надо
C++ Найти самое длинное слово http://www.cyberforum.ru/cpp-beginners/thread569017.html
входной файл содержит некоторый текст,состоящий из слов, разделенных одним пробелом. составить программный код, в котором анализируются содержащиеся там слова, и выдаётся самое длинное слово. Посмогите пожалуйста, заранее спасибо.
C++ Ошибка при сравнении символов 1) НЕ могу понять в чем ошибка при сравнении символов вот пример одной: Энтропия.cpp(18): error C2446: ==: нет преобразования "const char *" в "int" Не существует контекста, в котором такое преобразование возможно Энтропия.cpp(18): error C2040: ==: "int" отличается по уровням косвенного обращения от "const char " 2) Что за ошибка Энтропия.cpp(87): error C2017: недопустимая... подробнее

Показать сообщение отдельно
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
09.05.2012, 12:42     Помогите написать программу для решения слау методом Гаусса
Так-с. Сначала покритикуем код.
Цитата Сообщение от McRowan Посмотреть сообщение
int MassivA[20][20], MassivC[20], MassivItog[20][20];
-- такие вещи делаются динамическими массивами, и без "сферических в вакууме" 20.

Цитата Сообщение от McRowan Посмотреть сообщение
// сортировка на диагональных местах не должно быть "0", нужно соединить с прямым ходом
-- здесь есть 2 минуса. 1-й в том, что 0 у вас может выйти и не в самом начале, а позднее, когда вы уже отнимете несколько строк. Второй в том, что у вас и на следующей строке в этом столбце может стоять 0, и тогда проблемма не решена.
Теперь советы.
1) Массивы обьявляем так:
C++
1
2
3
4
5
6
7
8
int* *MassivA=new int*[n];
int* MassivC=new int[n];
int* *MassivItog=new int*[n];
for(int i=0; i<n; i++)
{
MassivA[i]=new int[n];
MassivItog[i]=new int[n+1];
}
2) Прямой проход:
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
for(int i=0; i<n; i++)
{
if(MassivItog[i][i]!=0)
{
int a = MassivItog[i][i];
for (j = i + 1; j < n; ++j)
 {
int b = MassivItog[j][i];
for ( int k = 0; k < n+1; ++k)
MassivItog[j][k] = a * MassivItog[j][k] - b * MassivItog[i][k];
 }
}
else
{
bool flag=false;//Этот флаг нам говорит, есть ли строки с не 0 в этом столбце
for(int j=i+1; j<n; j++)
if(MassivItog[j][i]!=0)
{
flag=true;
for(int k=0; k<n+1; k++)
{
int tmp=0;
tmp=MassivItog[i][k];
MassivItog[i][k]=MassivItog[j][k];
MassivItog[j][k]=tmp;
}
break;
}
if(flag==flase)
{
printf("System has no solunions, or it has infinity solutions\n");
system("PAUSE");
return 0;
}
else
i--;
}
}
На обратном проходе у нас уже не могут быть 0 на главной диагонали.
Отнимаем и не паримся. Даже более того, отнимаем от столбца свободных членов, а в матрице просто зануляем.
C++
1
2
3
4
5
6
7
8
9
10
for(int i=n-1; i>0; i--)
{
int a=MassivItog[i][i];
for(int j=i-1; j>=0; j++)
{
int b=MassivItog[j][i];
MassivItog[j][n]=a*MassivItog[j][n]-b*MassivItog[i][n];
MassivItog[j][i]=0;
}
}
 
Текущее время: 01:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru