Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
YegorFANkill
0 / 0 / 0
Регистрация: 27.09.2015
Сообщений: 31
1

Как прописать в коде исходные СЛАУ

17.10.2015, 18:29. Просмотров 191. Ответов 4
Метки нет (Все метки)

Дано 6 уравнений с 6 ю неизвестными, как их прописать в коде что бы каждый раз их не вводить
Уравнения:
I1+I4-I2=0
I5+I3-I2=0
I3+I6-I1=0
8*I1+16*I3+9*I2=360
9*I2+13*I4+21*I5=400
21*I5-16*I3-12*I6=210
вот код
C++ (Qt)
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
#include<iostream>
#include <math.h>
#include <stdlib.h>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "RUS");
   int i, j, n, m;
//создаем массив
   cout << "введи число уравнений: ";
         cin >> n;
         cout << "введи число неизвестных: ";
         cin >> m;
         m+=1;
    float **matrix = new float *[n];
         for (i=0; i<n; i++)
             matrix[i] = new float [m];
 
//инициализируем
 
    for (i = 0; i<n; i++)
 
        for (j = 0; j<m; j++)
        {
            cout << "Элемент " << "[" << i+1 << " , " << j+1 << "]: "  ;
 
            cin >> matrix[i][j];
}
 
 //выводим массив
    cout << "matrix: " << endl;
      for (i=0; i<n; i++)
       {
          for (j=0; j<m; j++)
            cout << matrix[i][j] << " ";
        cout << endl;
       }
    cout << endl;
 
//Метод Гаусса
//Прямой ход, приведение к верхнетреугольному виду
    float  tmp, xx[m];
    int k;
 
    for (i=0; i<n; i++)
     {
       tmp=matrix[i][i];
         for (j=n;j>=i;j--)
             matrix[i][j]/=tmp;
           for (j=i+1;j<n;j++)
          {
             tmp=matrix[j][i];
               for (k=n;k>=i;k--)
             matrix[j][k]-=tmp*matrix[i][k];
          }
      }
  /*обратный ход*/
    xx[n-1] = matrix[n-1][n];
     for (i=n-2; i>=0; i--)
       {
           xx[i] = matrix[i][n];
           for (j=i+1;j<n;j++) xx[i]-=matrix[i][j]*xx[j];
       }
 
//Выводим решения
       for (i=0; i<n; i++)
           cout << xx[i] << " ";
       cout << endl;
 
    delete[] matrix;
 
   return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2015, 18:29
Ответы с готовыми решениями:

не понимаю как открыть исходные файлы
не понимаю как открыть исходные файлы

Как получить исходные данные из 10-й строки файла?
При написании консольного приложения на visual-studio, возникла проблема, мне...

Как включить исходные и заголовочные файлы в проект? (Dev c++)
Решаю задачки из книги Р.Лафоре &quot;Объектно-ориентированное программирование С++&quot;...

Как прописать id файла
Как можно прописать id файла, то так нельзя. Заранее благодарен. #include...

Как прописать формулу?
Здравствуйте!Подскажите пожалуйста если есть формула...

4
zss
Модератор
Эксперт С++
7410 / 6800 / 4302
Регистрация: 18.12.2011
Сообщений: 17,965
Завершенные тесты: 1
17.10.2015, 18:37 2
C++
1
2
3
4
5
const int n=6,m=7;
double matrix[n][m]={
{1.9,-2.3,5.,-12.4,-0.2,1.0},
.... <- аналогично еще 5 строк
};
0
YegorFANkill
0 / 0 / 0
Регистрация: 27.09.2015
Сообщений: 31
17.10.2015, 18:51  [ТС] 3
ошибку выдает
[Warning] deleting array 'double matrix [6][7]' [enabled by default]
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
#include<iostream>
#include <math.h>
#include <stdlib.h>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "RUS");
   int i, j;
const int n=6,m=7;
double matrix[n][m]={
{1,-1,0,1,0,0,0},
{0,-1,1,0,1,0,0},
{-1,0,1,0,0,1,0},
{8,9,16,0,0,0,360},
{0,9,0,13,21,0,400},
{0,0,-16,0,21,-12,210},
};
 
 //âûâîäèì Г¬Г*Г±Г±ГЁГў
    cout << "matrix: " << endl;
      for (i=0; i<n; i++)
       {
          for (j=0; j<m; j++)
            cout << matrix[i][j] << " ";
        cout << endl;
       }
    cout << endl;
 
//Ìåòîä ГѓГ*ГіГ±Г±Г*
//Ïðÿìîé õîä, ïðèâåäåГ*ГЁГҐ ГЄ âåðõГ*åòðåóãîëüГ*îìó âèäó
    float  tmp, xx[m];
    int k;
 
    for (i=0; i<n; i++)
     {
       tmp=matrix[i][i];
         for (j=n;j>=i;j--)
             matrix[i][j]/=tmp;
           for (j=i+1;j<n;j++)
          {
             tmp=matrix[j][i];
               for (k=n;k>=i;k--)
             matrix[j][k]-=tmp*matrix[i][k];
          }
      }
  /*îáðГ*ГІГ*ûé õîä*/
    xx[n-1] = matrix[n-1][n];
     for (i=n-2; i>=0; i--)
       {
           xx[i] = matrix[i][n];
           for (j=i+1;j<n;j++) xx[i]-=matrix[i][j]*xx[j];
       }
 
//Âûâîäèì ðåøåГ*ГЁГї
       for (i=0; i<n; i++)
           cout << xx[i] << " ";
       cout << endl;
 
    delete[] matrix;
 
   return 0;
}
0
zss
Модератор
Эксперт С++
7410 / 6800 / 4302
Регистрация: 18.12.2011
Сообщений: 17,965
Завершенные тесты: 1
17.10.2015, 18:55 4
Так уберите 60 строку
0
YegorFANkill
0 / 0 / 0
Регистрация: 27.09.2015
Сообщений: 31
17.10.2015, 19:20  [ТС] 5
не считает теперь

Добавлено через 16 минут
если поменять местами 3 1х уравнения с другими, будет считать, вроде правильно, но ответ не сходится с тем случаем если вводит уравнения элемент за элементом
0
17.10.2015, 19:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2015, 19:20

Как прописать алгоритм...
на С++...для перевода из 16 в 10 систему счисления? там прописывать АBCDEF...

Как прописать консольную команду
Не подскажете как в консольном приложениии С++ прописать консольную команду...

Не знаю как прописать main
В университете задали написать прогу с различными функциями сортировки стеков,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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