Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 24.03.2014
Сообщений: 2
1

Вывод процесса решения в методе Крамера

24.03.2014, 17:51. Просмотров 567. Ответов 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
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
TForm1 *Form1;
double **A,**D,*del;
int n;
double opr(double **D,int n)
        {
        if (n==1) return (D[0][0]);
        else
                {
                int j1,j2,j3;
                double s;
                double **p;
                p=new double*[n-1];
                for (j2=0; j2<n-1; j2++) p[j2]=new double[n-1];
                s=0;
                for (j1=0; j1<n; j1++)
                        {
                                for (j2=0; j2<n-1; j2++)
                                        for (j3=0; j3<j1; j3++) p[j2][j3]=D[j2+1][j3];
 
                                                                        for (j2=0; j2<n-1; j2++)
                                        for (j3=j1+1; j3<n; j3++) p[j2][j3-1]=D[j2+1][j3];
                                s=s+pow(-1,j1)*D[0][j1]*opr(p,n-1);
 
                        }
                        for (j2=0; j2<n-1; j2++) delete[]p[j2];
                        delete[]p;
                return s;
                }
        }
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int j1,j2,j3;
D=new double*[n];
A=new double*[n];
del=new double[n+1];
for (j2=0; j2<n; j2++)
        {
        D[j2]=new double[n];
        A[j2]=new double[n+1];
        }
for (j1=0; j1<n; j1++)
        {
        for (j2=0; j2<n; j2++)
                {
                if (StringGrid1->Cells[j2][j1]=="") A[j1][j2]=0;
                else A[j1][j2]=StringGrid1->Cells[j2][j1].ToDouble();
                }
        if (StringGrid2->Cells[0][j1]=="") A[j1][n]=0;
        else A[j1][n]=StringGrid2->Cells[0][j1].ToDouble();
        }
 
for (j1=0; j1<=n; j1++)
        {
        for (j2=0; j2<n; j2++)
                {
                 if (j1==j2) for (j3=0; j3<n; j3++) D[j3][j2]=A[j3][n];
                 else for (j3=0; j3<n; j3++) D[j3][j2]=A[j3][j2];
 
                 }
        del[j1]=opr(D,n);
 
        }
 
for (j2=0; j2<n; j2++)
        {
        if (del[n]==0) StringGrid3->Cells[j2][0]="--";
        else StringGrid3->Cells[j2][0]=FloatToStr(del[j2]/del[n]);
        delete[]D[j2];
        delete[]A[j2];
        }
delete[]D;
delete[]A;
delete[]del;
 
}
//-------------------------------
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2014, 17:51
Ответы с готовыми решениями:

Сложность алгоритмов Гаусса и Крамера решения СЛАУ
Прошу знающих людей объяснить мне какую вычислительную сложность имеют вышеуказанные методы и...

Решения системы трехлинейных уравнений по методу Крамера
решения системы трехлинейных уравнений по методу Крамера.

Создать программу для решения СЛАУ методом Крамера
Доброго времени суток! Уважаемые программисты, нужна ваша помощь! Нужно создать программу для...

Создать форму для решения СЛАУ методом Крамера
вот программа в консольном режиме , может кто помочь создать форму?или мб есть у кого уже ...

2
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30176 / 19711 / 7704
Регистрация: 22.10.2011
Сообщений: 34,360
Записей в блоге: 6
24.03.2014, 18:17 2
Цитата Сообщение от Nickell2008 Посмотреть сообщение
В саму функцию загнать Мемо-лайнес нельзя.
Это по неумению, или в связи с какими-то навязанными догмами? Передай в функцию TStrings, и заталкивай в него ход решения. А потом просто одним разом занесешь содержимое TStrings в Memo, и всего делов...
0
0 / 0 / 1
Регистрация: 24.03.2014
Сообщений: 2
24.03.2014, 21:41  [ТС] 3
C++
1
Это по неумению, или в связи с какими-то навязанными догмами? Передай в функцию TStrings, и заталкивай в него ход решения. А потом просто одним разом занесешь содержимое TStrings в Memo, и всего делов...
Это по неумению. Учусь только.
Я ход мыслей понял, но что-то не получается как нужно, выдает ошибку :
[C++ Error] Unit1.cpp(16): E2141 Declaration syntax error

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
double **A,**D,*del;
int n;
double opr(double **D,int n, String r)
        {
        if (n==1) return (D[0][0]);
        else
                {
                int j1,j2,j3;
                double s;
                double **p;
                p=new double*[n-1];
                for (j2=0; j2<n-1; j2++) p[j2]=new double[n-1];
                s=0;
                for (j1=0; j1<n; j1++)
                        {
                                for (j2=0; j2<n-1; j2++)
                                        for (j3=0; j3<j1; j3++) p[j2][j3]=D[j2+1][j3];
 
                                                                        for (j2=0; j2<n-1; j2++)
                                        for (j3=j1+1; j3<n; j3++) p[j2][j3-1]=D[j2+1][j3];
                                s=s+pow(-1,j1)*D[0][j1]*opr(p,n-1);
                                r=DoubleToString(s);
                                return r;
 
                        }
                        for (j2=0; j2<n-1; j2++) delete[]p[j2];
                        delete[]p;
                return s;
                }
        }
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int j1,j2,j3;
D=new double*[n];
A=new double*[n];
del=new double[n+1];
String r;
for (j2=0; j2<n; j2++)
        {
        D[j2]=new double[n];
        A[j2]=new double[n+1];
        }
for (j1=0; j1<n; j1++)
        {
        for (j2=0; j2<n; j2++)
                {
                if (StringGrid1->Cells[j2][j1]=="") A[j1][j2]=0;
                else A[j1][j2]=StringGrid1->Cells[j2][j1].ToDouble();
                }
        if (StringGrid2->Cells[0][j1]=="") A[j1][n]=0;
        else A[j1][n]=StringGrid2->Cells[0][j1].ToDouble();
        }
 
for (j1=0; j1<=n; j1++)
        {
        for (j2=0; j2<n; j2++)
                {
                 if (j1==j2) for (j3=0; j3<n; j3++) D[j3][j2]=A[j3][n];
                 else for (j3=0; j3<n; j3++) D[j3][j2]=A[j3][j2];
 
                 }
        del[j1]=opr(D,n,r);
        Memo1->Lines->Add(r);
 
        }
 
for (j2=0; j2<n; j2++)
        {
        if (del[n]==0) StringGrid3->Cells[j2][0]="--";
        else StringGrid3->Cells[j2][0]=FloatToStr(del[j2]/del[n]);
        delete[]D[j2];
        delete[]A[j2];
        }
delete[]D;
delete[]A;
delete[]del;
 
}
Добавлено через 24 минуты
Я так понял, нужно загнать переменную в функцию в стринге. Но сама функция не может же содержать 2 переменных разного типа.
К тому же, она обращается сама к себе, и в этом случае нужно опять заганять новое значение в нее. Если этого не делать - ошибка.

Тыкните носом куда что писать, будьте добры

Добавлено через 2 часа 45 минут
Все, решил проблему!
Кликните здесь для просмотра всего текста
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
double **A,**D,*del;
int n;
double opr(double **D,int n)
        {
        if (n==1) return (D[0][0]);
        else
                {
                int j1,j2,j3;
                double s;
                double **p;
                p=new double*[n-1];
                for (j2=0; j2<n-1; j2++) p[j2]=new double[n-1];
                s=0;
                for (j1=0; j1<n; j1++)
                        {
                                for (j2=0; j2<n-1; j2++)
                                        for (j3=0; j3<j1; j3++) p[j2][j3]=D[j2+1][j3];
 
                                                                        for (j2=0; j2<n-1; j2++)
                                        for (j3=j1+1; j3<n; j3++) p[j2][j3-1]=D[j2+1][j3];
                                s=s+pow(-1,j1)*D[0][j1]*opr(p,n-1);
 
                        }
                        for (j2=0; j2<n-1; j2++) delete[]p[j2];
                        delete[]p;
                return s;
                }
        }
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Clear();
int j1,j2,j3;
D=new double*[n];
A=new double*[n];
del=new double[n+1];
for (j2=0; j2<n; j2++)
        {
        D[j2]=new double[n];
        A[j2]=new double[n+1];
        }
for (j1=0; j1<n; j1++)
        {
        for (j2=0; j2<n; j2++)
                {
                if (StringGrid1->Cells[j2][j1]=="") A[j1][j2]=0;
                else A[j1][j2]=StringGrid1->Cells[j2][j1].ToDouble();
                }
        if (StringGrid2->Cells[0][j1]=="") A[j1][n]=0;
        else A[j1][n]=StringGrid2->Cells[0][j1].ToDouble();
        }
 
for (j1=0; j1<=n; j1++)
        {
        for (j2=0; j2<n; j2++)
                {
                 if (j1==j2) for (j3=0; j3<n; j3++) D[j3][j2]=A[j3][n];
                 else for (j3=0; j3<n; j3++) D[j3][j2]=A[j3][j2];
 
                 }
        del[j1]=opr(D,n);
 
        Memo1->Lines->Add("d"+FloatToStr(j1)+" = "+FloatToStr(del[j1]));
 
        Memo1->Lines->Add("x"+FloatToStr(j1)+" = "+"d"+ FloatToStr(j1)+"/"+"d"+FloatToStr(n));
        if (n==j1) { Memo1->Lines->Delete(Memo1->Lines->Count-1);  Memo1->Lines->Add("   ");  }
 
        }
 
for (j2=0; j2<n; j2++)
        {
        if (del[n]==0) StringGrid3->Cells[j2][0]="--";
        else StringGrid3->Cells[j2][0]=FloatToStr(del[j2]/del[n]);
 
                    Memo1->Lines->Add("x"+FloatToStr(j2)+" = "+StringGrid3->Cells[j2][0]);
        delete[]D[j2];
        delete[]A[j2];
        }
delete[]D;
delete[]A;
delete[]del;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2014, 21:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Метод Крамера решения СЛАУ - функция работает неправильно
Здравствуйте! Реализовал метод Крамера решения СЛАУ - функция работает отлично, если...

Метод Крамера и обратной матрицы для решения больших СЛАУ
Здравствуйте, есть ли смысл использовать Метод Крамера и метод обратной матрицы для решения больших...

Создать анимацию в Maple решения системы уравнений методом Крамера
Всем привет. Начинаю разбираться с Maple. Передо мной стоит задача создать анимацию решения...

Реализовать решения СЛАУ методом крамера для четырех уравнений
Здраствуйте добрые люди! Подскажите как реализовать решения СЛАУ методом крамера для 4ех уравнений....


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

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

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