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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
GaDinka
1 / 1 / 0
Регистрация: 01.02.2011
Сообщений: 64
#1

Класс Калькулятор, написать комментарии - C++

31.05.2012, 00:17. Просмотров 1434. Ответов 2
Метки нет (Все метки)

Доброго всем времени суток!
Уважаемые жители форума, у меня к вам есть вот какая просьба!
Я учусь на 3 курсе электротехнического факульета ПНИПУ. Сдаю предмет ПЯВУ, если я его не сдам до 1 июля - меня отчислят!
У меня есть программа, в котрой реализован класс калькулятор, решающий систему уровнения методом Гаусса. Естественно, решала не сама (увы, не мой это язык С++). Молодой человек, который писал программу уже вторую неделю не может помочь в написании комментариев именно по самой реализации в программе метода Гаусса. А сама я уже не могу рзобраться!
Я знаю, что среди вас есть добрые люди, которые смогут помочь! Вообщем, нужно написать комментарии к коду, который прикреплен ниже. Для полной картины прикрепляю программу в архиве. Очень на вас надеюсь! Заранее спасибо!
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
    
    this->find_solve(N);
}
 
void systems::find_solve(unsigned char current){
    if(!det(current)){
        printf("Error #4\n");
        return ;
    }
    if(!this->A[3*(current-1)][0]){
        if(this->A[3*(current-1)+1][0]) for(int i=0;i<4;i++) this->A[3*(current-1)][i] += this->A[3*(current-1)+1][i]; else
            for(int i=0;i<4;i++) this->A[3*(current-1)][i] += this->A[3*(current-1)+2][i];
    }
    for(int i=3;i>=0;i--) this->A[3*(current-1)+1][i] -= this->A[3*(current-1)][i]*this->A[3*(current-1)+1][0]/this->A[3*(current-1)][0];
    if(!this->A[3*(current-1)+1][1]){
        for(int i=0;i<4;i++) this->A[3*(current-1)+1][i] += this->A[3*(current-1)+2][i]+this->A[3*(current-1)][i];
        for(int i=3;i>=0;i--) this->A[3*(current-1)+1][i] -= this->A[3*(current-1)][i]*this->A[3*(current-1)+1][0]/this->A[3*(current-1)][0];
    }
    //Получаем нули в третьей строке
    for(int i=3;i>=0;i--) this->A[3*(current-1)+2][i] -= this->A[3*(current-1)][i]*this->A[3*(current-1)+2][0]/this->A[3*(current-1)][0];
    for(int i=3;i>=1;i--) this->A[3*(current-1)+2][i] -= this->A[3*(current-1)+1][i]*this->A[3*(current-1)+2][1]/this->A[3*(current-1)+1][1];
    if(!this->A[3*(current-1)+2][2]){
        for(int i=0;i<4;i++) this->A[3*(current-1)+2][i] += this->A[3*(current-1)+1][i]+this->A[3*(current-1)][i];
        for(int i=3;i>=0;i--) this->A[3*(current-1)+2][i] -= this->A[3*(current-1)][i]*this->A[3*(current-1)+2][0]/this->A[3*(current-1)][0];
        for(int i=3;i>=1;i--) this->A[3*(current-1)+2][i] -= this->A[3*(current-1)+1][i]*this->A[3*(current-1)+2][1]/this->A[3*(current-1)+1][1];
    }
    for(int i=3;i>=2;i--){
        this->A[3*(current-1)+1][i] -= this->A[3*(current-1)+2][i]*this->A[3*(current-1)+1][2]/this->A[3*(current-1)+2][2];
        this->A[3*(current-1)][i] -= this->A[3*(current-1)+2][i]*this->A[3*(current-1)][2]/this->A[3*(current-1)+2][2];
    }
    for(int i=3;i>=1;i--) this->A[3*(current-1)][i] -= this->A[3*(current-1)+1][i]*this->A[3*(current-1)][1]/this->A[3*(current-1)+1][1];
    for(int i=0;i<3;i++){
        this->A[3*(current-1)+i][3] /= this->A[3*(current-1)+i][i];
        this->A[3*(current-1)+i][i] /= this->A[3*(current-1)+i][i];
    }
}
Вложения
Тип файла: rar Курсовая.rar (831.2 Кб, 20 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 00:17     Класс Калькулятор, написать комментарии
Посмотрите здесь:

C++ Написать комментарии к коду
Комментарии к листингу (калькулятор, текстовый редактор) C++
Написать комментарии C++
C++ написать комментарии к программе
Необходимо написать комментарии к программе C++
C++ Написать комментарии к коду
Написать калькулятор, используя класс C++
C++ Написать комментарии в коде программы (C++)
Написать комментарии к коду C++
C++ Написать комментарии к коду
Написать комментарии к коду C++
C++ Написать комментарии по коду

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
01.06.2012, 07:59     Класс Калькулятор, написать комментарии #2
Строка
C++
1
void systems::find_solve(unsigned char current){
Ключевое слово void означает что функция не возвращает никаких значений.
systems это имя класса
:: является операцией доступа к членам класса или пространства имен.
find_solve это название функции, которая является членом класса systems
current это имя параметра, передаваемого в функцию.
unsigned это тип данных, который означает, что 1 бит из всего количества битов в типе данных не занят знаком. signed означает, что один бит является знаковым.
char это 8 битовый тип данных.
{ это начало функции ( является парным)
} это окончание функции

C++
1
! операнд
Операция ! производится в языке С/С++ следующим образом
!i , i<0 => !i = 0
!i , i>0 => !i = 0
!0 = 1
!1 = 0

Существуют следующие варианты исполнения команды !det(current)
det(current)< 0 => !det(current) == 0
det(current)==0 => !det(current) == 1 в этом случае происходит выполнение printf и return
det(current)==1 => !det(current) == 0
det(current)> 0 => !det(current) == 0

Таким образом следующий кусок выдает сообщение об ошибке, если определитель равен нулю и выходит из функции find_solve. То что после return ничего нет кроме ; означает что из функции ничего при выходе не возвращается. Каждый оператор в языке завершается точкой с запятой
if это условный оператор.

C++
1
2
3
4
if(!det(current)){
        printf("Error #4\n");
        return ;
}
Оператор printf выводит строку заключенную в кавычки типа " на экран.
return осуществляет выход из функции. { это начало блока условного оператора, а } окончание блока условного оператора.

Дома попробую поразбираться с остальным кодом.

Добавлено через 19 часов 5 минут
Пусть дана система m на n, где m - количество столбцов, а n - количество строк
0 1 2 ... m
a0 a1 a2 ... ajm = t1 0
b0 b1 b2 ... bjm = t2 1
c0 c1 c2 ... cjm = t3 2
... ... ... ... ... = ...
cn0 ... ... ... ... = tn n

Чтобы решить систему методом Гаусса, матрицу нужно привести к треугольной форме ( верхней треугольной или нижней треугольной)

Нижняя треугольная форма:
a0 a1 a2 ... ajm 0
0 b1 b2 ... bjm 1
0 0 c2 ... cjm 2
... ... ... ... ...
0 0 0 ... n

Если a0 != 0 решается уравнение a0*x + b0 = 0 => x = -b0 / a0

в индексной форме (первый индекс - строка, второй столбец)
x = - m[1][0] / m[0][0];

b0 новое = a0 * x + b0 = 0
в индексной форме (первый индекс - строка, второй столбец)
m[1][0] = m[0][0] * (- m[1][0] / m[0][0]) + m[1][0]

b1 новое = a1 * x + b1
в индексной форме (первый индекс - строка, второй столбец)
m[1][1] = m[0][1] * (- m[1][0] / m[0][0]) + m[1][1]
сворачивается в
m[1][1] += m[0][1] * (- m[1][0] / m[0][0]) по другому m[1][1] -= m[0][1] * m[1][0] / m[0][0])
...
m[1][m] += m[0][m] * (- m[1][0] / m[0][0])

1..m счетчик от 1 до m по каждому столбцу

затем то же делаем по строкам
x = - m[2][0] / m[0][0];
x = - m[3][0] / m[0][0];
...
x = - m[n][0] / m[0][0];

если a0 == 0 то ищем другую строку, переходим на b0 на с0 и т.д. до cn0


В числовом виде
1 a1 a2 ...
2 b1 b2 ...
3 ... ... ...
c1 ... ... ...
c2 ... ... ...

1 *(-2) + 2
1*(-2) + 3
1*(-2) +c1
1*(-2) +c2

уравнение: 1*x + 2 = 0 =>
x =-2 / 1


-1 a1 a2
2 b1 b2

-1*2 + 2
a1*2 +b1
a2*2+b2


C++
1
2
3
4
5
6
инструкции до if
[B]if[/B][B]([/B]условие[B])[/B]
[B]{[/B]
инструкции внутри if
[B]} [/B]
инструкции после if
if - условный оператор. В скобках ( ) заключается оператор булевой алгебры, результатом выполнения которого является либо 0, либо 1. Если результат выполнения оператора число, то результат проверки оператора 1. Е сли результат выполнения оператора 0 , то результат проверки оператора 0. Если результат выполнения оператора 0, то выполняются инструкции до if и инструкции после if. Если результат выполнения оператора 1, то выполняются инструкции до if, инструкции внутри if и инструкции после if. Существуют следующие операции булевой алгебры:
  • Логическое AND обозначается &&
  • Логическое OR обозначается ||
  • Логическое NOT обозначается !

Может присутствовать один или несколько блоков else

C++
1
2
3
4
5
6
7
8
if(условие)
{
инструкции внутри if
}
else
{
инструкции внутри else
}
называется условным оператором
Если результат проверки оператора 1, то выполняются инструкции внутри if.
Если результат проверки оператора 0, то выполняются инструкции внутри else.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(условие)
{
инструкции внутри if
}
else if(условие)
{
инструкции внутри else 1 
} 
else if(условие)
{
инструкции внутри else 2
} 
else
{
}
По другому условный оператор подобного типа можно записать в виде
C++
1
2
3
4
5
6
7
8
9
10
11
switch( переменная)
{
case значение1:
инструкции 1
break;
case значение2:
инструкции 2
break;
default:
break;
}
Если break нет.
C++
1
2
3
4
5
6
7
8
9
10
switch( переменная)
{
case значение1:
инструкции 1
case значение2:
инструкции 2
break;
default:
break;
}
то выполняются и инструкции 1 и инструкции 2

Скобки {} ограничивают оператор.

Возврата к проверке условия не происходит. Этим условный оператор отличается от циклического.

Циклические условные операторы бывают следующих типов
C++
1
2
3
4
for(действия перед проверкой условия ; условие ; действия  перед проверкой условия)
{
действия после проверки условия
}

C++
1
2
3
4
do
{
действия перед проверкой условия
} while(условие);
C++
1
2
3
4
while(условие)
{
действия после проверки условия
}


C++
1
2
for(int i=0;i<4;i++) 
A[3*(current-1)][i] += A[3*(current-1)+1][i];
Скобки {} отсутствуют, если инструкция только одна. Если инструкций больше одной, то скобки являются обязательными. int i это объявление переменной, областью видимости которой является тело цикла. После исполнения переменная уничтожается. Переменная i может принимать в этом цикле следующие значения: 0 1 2 3
i++ эквивалентно i = i+1 то есть это увеличение переменной на единицу.
i-- эквивалентно i = i-1 то есть это уменьшение переменной на единицу.
То что ++ после переменной означают, что увеличение происходить после исполнения всей инструкции, в которой она находится ( например a = b + i++; означает что a = b + i; i = i+1) Если ++i то увеличение происходит до выполнения всей инструкции ( например a = b + ++i; означает что i = i+1; a = b +i

переменная 1 += переменная 2;эквивалентно переменная 1 = переменная 1 + переменная 2;

this указатель на экземпляр класса. Операция доступа по указателю к членам класса ->



Параметр current это номер текущей системы
Допустимая программой размерность матрицы 3 на 3

current = 0 current-1 = -1 отрицательные индексы не существуют
current = 1 current-1 = 0 3*(current-1) = 0
current = 2 current-1 = 1 3*(current-1) = 3
current = 3 current-1 = 2 3*(current-1) = 6
current = 4 current-1 = 3 3*(current-1) = 9
Класс может хранить несколько систем в наборе контейнеров стандартного контейнера vector, поэтому умножением current на 3 происходит переход между разными системами, хранящимися в одном классе примерно следующим образом

A[3*(current-1)][0] A[3*(current-1)+1][0] A[3*(current-1)+2][0] A[3*(current-1)+3][0] A[3*(current-1)+4][0] ...
A[3*(current-1)][1] A[3*(current-1)+1][1] A[3*(current-1)+2][1] A[3*(current-1)+3][1] A[3*(current-1)+4][1] ...
A[3*(current-1)][2] A[3*(current-1)+1][2] A[3*(current-1)+2][2] A[3*(current-1)+3][2] A[3*(current-1)+4][2] ...
A[3*(current-1)][3] A[3*(current-1)+1][3] A[3*(current-1)+2][3] A[3*(current-1)+3][3] A[3*(current-1)+4][3] ...



Матрица системы которую надо решить имеет следующий вид
A[3*(current-1)][0] A[3*(current-1)+1][0] A[3*(current-1)+2][0]
A[3*(current-1)][1] A[3*(current-1)+1][1] A[3*(current-1)+2][1]
A[3*(current-1)][2] A[3*(current-1)+1][2] A[3*(current-1)+2][2]

Столбец свободных членов системы которую надо решить имеет следующий вид:
A[3*(current-1)][3] A[3*(current-1)+1][3] A[3*(current-1)+2][3]

Умножением на 3 производится сдвиг матриц, поэтому можно упростить код представив что матрица всего одна:
A[(current-1)][0] A[(current-1)+1][0] A[(current-1)+2][0]
A[(current-1)][1] A[(current-1)+1][1] A[(current-1)+2][1]
A[(current-1)][2] A[(current-1)+1][2] A[(current-1)+2][2]
 
A[(current-1)][3] A[(current-1)+1][1] A[(current-1)+2][2]
(столбец свободных членов)


Можно упростить еще больше до такого вида
A[0][0] A[1][0] A[2][0]
A[0][1] A[1][1] A[2][1]
A[0][2] A[1][2] A[2][2]
 
A[0][3] A[1][3] A[2][3]
(столбец свободных членов)


Определитель высчитан функцией det следующим образом по правилу Сарруса
C++
1
2
A[0][0]*A[1][1]*A[2][2] + A[0][1]*A[1][2]*A[2][0]+A[1][0]*A[2][1]*A[0][2]
-A[0][2]*A[1][1]*A[2][0]- A[0][1]*A[1][0]*A[2][2]-A[0][0]*A[2][1]*A[1][2];
Главная диагональ A[0][0]*A[1][1]*A[2][2]
Побочная диагональ A[0][2]*A[1][1]*A[2][0]


Новый вид разбираемого кода:
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
if(!A[0][0])  
{ 
 if(A[1][0])  
  for(int i=0;i<4;i++) 
   A[0][i] += A[1][i];
 else
  for(int i=0;i<4;i++) 
   A[0][i] += A[2][i]; 
}
 
for(int i=3;i>=0;i--) 
 A[1][i] -= A[0][i] * A[1][0] / A[0][0];
 
if(!A[1][1])
{
 for(int i=0;i<4;i++) 
  A[1][i] += A[2][i] + A[0][i];
 for(int i=3;i>=0;i--) 
  A[1][i] -= A[0][i]*A[1][0]/A[0][0];
}
 
for(int i=3;i>=0;i--) 
 A[2][i] -= A[0][i]*A[2][0] / A[0][0];
 
for(int i=3;i>=1;i--) 
 A[2][i] -= A[1][i]*A[2][1] / A[1][1];
 
if(!A[2][2])
{
 for(int i=0;i<4;i++) 
  A[2][i] += A[1][i]+A[0][i];
        
 for(int i=3;i>=0;i--) 
  A[2][i] -= A[0][i]*A[2][0]/A[0][0];
 
 for(int i=3;i>=1;i--) 
  A[2][i] -= A[1][i]*A[2][1]/A[1][1];
}
 
for(int i=3;i>=2;i--)
{
  A[1][i] -= A[2][i]*A[1][2]/A[2][2];
  A[0][i] -= A[2][i]*A[0][2]/A[2][2];
}
 
for(int i=3;i>=1;i--) 
  A[0][i] -= A[1][i]*A[0][1]/A[1][1];    
 
for(int i=0;i<3;i++)
{
 A[i][3] /= this->A[i][i];
 A[i][i] /= this->A[i][i];
}
 
}

Комментарии к новому виду разбираемого кода:

C++
1
2
3
4
5
6
7
8
9
10
// если элемент A[0][0] == 0  ( нужно получить элемент не равный нулю)
if(!A[0][0])  // если A[0][0] == 0 
{ 
 if(A[1][0])    // если A[1][0] != 0
  for(int i=0;i<4;i++) 
   A[0][i] += A[1][i];  //складываем первую и вторую строки/столбцы
 else
  for(int i=0;i<4;i++) 
   A[0][i] += A[2][i]; // складываем первую и третью строки/столбцы
}

// вычисление новых значений строки/столбца
// см выше объяснение метода Гаусса
// m[1][1] -= m[0][1] * m[1][0] / m[0][0])
// ...
// m[1][m] -= m[0][m] * (m[1][0] / m[0][0])
// A[1][3] -= A[0][3] * A[1][0] / A[0][0])
// A[1][2] -= A[0][2] * A[1][0] / A[0][0])
// A[1][1] -= A[0][1] * A[1][0] / A[0][0])
// A[1][0] -= A[0][0] * A[1][0] / A[0][0]) = 0
C++
1
2
for(int i=3;i>=0;i--) 
 A[1][i] -= A[0][i] * A[1][0] / A[0][0];
Система в данном месте получила вид
A[0][0] A[1][0] = 0 A[2][0]
A[0][1] A[1][1]' A[2][1]
A[0][2] A[1][2]' A[2][2]
 
A[0][3] A[1][3]' A[2][3] (столбец свободных членов)


// если элемент A[1][1]' == 0
// то есть система имеет вид
//A[0][0] A[1][0] = 0 A[2][0]
//A[0][1] A[1][1]' = 0 A[2][1]
//A[0][2] A[1][2]' A[2][2]
//A[0][3] A[1][3]' A[2][3] (столбец свободных членов)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if(!A[1][1])
{
 for(int i=0;i<4;i++) 
  A[1][i] += A[2][i] + A[0][i];  // складываем 0 1 и 2 строки/столбцы
 
//A[1][0] = A[1][0]  + A[2][0] + A[0][0];
//A[1][1] = A[1][1]  + A[2][1] + A[0][1];
//A[1][2] = A[1][2]  + A[2][2] + A[0][2];
//A[1][3] = A[1][3]  + A[2][3] + A[0][3];
 
 
// вычисление новых значений строки/столбца
 for(int i=3;i>=0;i--) 
  A[1][i] -= A[0][i]*A[1][0]/A[0][0];
//A[1][3]-= A[0][3]*A[1][0]/A[0][0];
//A[1][2] -= A[0][2]*A[1][0]/A[0][0];
//A[1][1] -= A[0][1]*A[1][0]/A[0][0];
//A[1][0] -= A[0][0]*A[1][0]/A[0][0]; = 0
 
 
}
Система в данном месте получила вид
A[0][0] A[1][0] = 0 A[2][0]
A[0][1] A[1][1]' A[2][1]
A[0][2] A[1][2]' A[2][2]
||
A[0][3] A[1][3]' A[2][3] (столбец свободных членов)

Нужно чтобы A[2][0] был нулем
то есть получился вид
A[0][0] A[1][0] = 0 A[2][0] = 0
A[0][1] A[1][1]' A[2][1]'
A[0][2] A[1][2]' A[2][2]'
A[0][3] A[1][3]' A[2][3]' (столбец свободных членов)

C++
1
2
3
//Получаем нули для одного элемента A[2][0]  и вычисляем новые значения
for(int i=3;i>=0;i--) 
 A[2][i] -= A[0][i]*A[2][0] / A[0][0];
//A[2][3] -= A[0][3]*A[2][0] / A[0][0];
//A[2][2] -= A[0][2]*A[2][0] / A[0][0];
//A[2][1] -= A[0][1]*A[2][0] / A[0][0];
//A[2][0] -= A[0][0]*A[2][0] / A[0][0];

Система в данном месте получила вид
A[0][0] A[1][0] = 0 A[2][0] =0
A[0][1] A[1][1]' A[2][1]'
A[0][2] A[1][2]' A[2][2]'
||
A[0][3] A[1][3]' A[2][3]' (столбец свободных членов)


C++
1
2
3
4
5
6
for(int i=3;i>=1;i--) 
 A[2][i] -= A[1][i]*A[2][1] / A[1][1];
 
//A[2][3] -= A[1][3]*A[2][1] / A[1][1];
//A[2][2] -= A[1][2]*A[2][1] / A[1][1];
//A[2][1] -= A[1][1]*A[2][1] / A[1][1]; // = 0 занулился  A[2][1]
Система в данном месте получила вид
A[0][0] A[1][0] = 0 A[2][0] =0 эту строку не изменяем, поэтому счетчик остановлен на 1
A[0][1] A[1][1]' A[2][1]' = 0
A[0][2] A[1][2]' A[2][2]''
||
A[0][3] A[1][3]' A[2][3]'' (столбец свободных членов)


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// если элемент A[2][2] == 0 
if(!A[2][2])
{
 for(int i=0;i<4;i++) 
  A[2][i] += A[1][i]+A[0][i]; // складываем строки/столбцы
//A[2][0] += A[1][0]+A[0][0]; 
//A[2][1] += A[1][1]+A[0][1];  
//A[2][2] += A[1][12]+A[0][2];  
//A[2][3] += A[1][3]+A[0][3];
        
 for(int i=3;i>=0;i--) 
  A[2][i] -= A[0][i]*A[2][0]/A[0][0]; // вычисляем новые значения
// A[2][3] -= A[0][3]*A[2][0]/A[0][0];
//  A[2][2] -= A[0][2]*A[2][0]/A[0][0];
//  A[2][1] -= A[0][1]*A[2][0]/A[0][0];
//  A[2][0] -= A[0][0]*A[2][0]/A[0][0];=0 занулился
 
 for(int i=3;i>=1;i--) 
  A[2][i] -= A[1][i]*A[2][1]/A[1][1]; // вычисляем новые значения
//  A[2][3] -= A[1][3]*A[2][1]/A[1][1];
//  A[2][2] -= A[1][2]*A[2][1]/A[1][1];
//  A[2][1] -= A[1][1]*A[2][1]/A[1][1];
}
Система в данном месте имеет вид если A[2][2]'' != 0 и A[1][1]!=0
A[0][0] A[1][0]=0 A[2][0]=0
A[0][1] A[1][1]' A[2][1]'=0
A[0][2]* A[1][2]'* A[2][2]''
A[0][3]* A[1][3]'* A[2][3]'' (столбец свободных членов)


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=3;i>=2;i--)
{
  A[1][i] -= A[2][i]*A[1][2]/A[2][2];
  A[0][i] -= A[2][i]*A[0][2]/A[2][2];
 
//  A[1][3] -= A[2][3]*A[1][2]/A[2][2];
// A[0][3] -= A[2][3]*A[0][2]/A[2][2];
 
//  A[1][2] -= A[2][2]*A[1][2]/A[2][2];
// A[0][2] -= A[2][2]*A[0][2]/A[2][2];
 
}
 
for(int i=3;i>=1;i--) 
  A[0][i] -= A[1][i]*A[0][1]/A[1][1];
 
//  A[0][3] -= A[1][3]*A[0][1]/A[1][1];
//  A[0][2] -= A[1][2]*A[0][1]/A[1][1];
//  A[0][1] -= A[1][1]*A[0][1]/A[1][1]; = 0
 
 
// получение x-ов   
for(int i=0;i<3;i++)
{
 A[i][3] /= this->A[i][i];
 A[i][i] /= this->A[i][i];
 
//A[0][3] = A[0][3] / A[0][0]  искомый x?
//A[0][0]  = A[0][0] / A[0][0];
 
//A[1][3] = A[1][3] / A[1][1]  искомый x?
//A[1][1]  = A[1][1] / A[1][1];
 
//A[2][3] = A[2][3] / A[2][2] искомый x?
//A[2][0]  = A[2][2] / A[2][2];
}
 
} // конец метода
GaDinka
1 / 1 / 0
Регистрация: 01.02.2011
Сообщений: 64
01.06.2012, 08:10  [ТС]     Класс Калькулятор, написать комментарии #3
Спасибо Вам большое, добрый человек! Дай Бог вам счатья и здоровья! Очень-очень Вам благодарна!
Yandex
Объявления
01.06.2012, 08:10     Класс Калькулятор, написать комментарии
Ответ Создать тему
Опции темы

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