Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
vetali4ek
0 / 0 / 0
Регистрация: 10.05.2010
Сообщений: 1
#1

Решеине матричных уровнений - C++ Builder

13.05.2010, 23:59. Просмотров 352. Ответов 0
Метки нет (Все метки)

Дело в том, что я разбираюсь в С++ а С++Builder что-то ни как мне не идёт((((((
Уважаемые Програмисты Пожалуста помогите!!!!
Нужно....сделать перевод С++ на С++Builder.
матричные уравнения могут быть 3 типов
1) А*х*В=С;
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
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
#include <graphics.h>
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <dos.h>
 
 
///Global variables///
FILE *fl;
/////////////////////////////////////////////////////////////////////////////
 
  double **distrib(int n,int k)
    { double **p;
      int i;
 
      p=new double *[n];
      for(i=0;i<n;i++)
    p[i]=new double [k*n];
      return p;
    }
 
/////////////////////////////////////////////////////////////////////////////
 
  ///Enter elements of matrix///
  void make(double **p,int n,int col,int row)
 
 
    {
      int i, j;
      gotoxy(col,row);
      for(i=0;i<n;i++)
    for(j=0;j<2*n;j++)
      if(j < n)
        {
          cout<<"a["<<i+1<<"]["<<j+1<<"]=";
          cin>>p[i][j];
          gotoxy(col,row);
          delline( );
 
        }
      else
        if(j= =n+i) p[i][j]=1;
        else p[i][j]=0;
    }
 
/////////////////////////////////////////////////////////////////////////////
 
   ///Show matrix///
   void show(double **p,int n)
    {
      int i,j;
      for(i=0;i<n;i++)
    {
     gotoxy(20,wherey( )+1);
     for(j=0;j<n;j++)
      printf("%9.3f",p[i][j]);
    }
    }
 
/////////////////////////////////////////////////////////////////////////////
 
   ///Inverse matrix (Gaus)///
   void eval(double **p,int n)
    {
      int i,ih,j,k;
      double c;
 
      for(k=0;k<n;k++)
    {
      for(ih=k,i=k+1;i<n;i++)
        if(fabs(p[i][k]) > fabs(p[ih][k])) ih=i;
 
      if(!p[ih][k]) return;
            if(ih != k)
        for(j=k;j<2*n;j++)
          { c=p[k][j];
        p[k][j]=p[ih][j];
        p[ih][j]=c;
          }
 
      for(j=k+1;j<2*n;j++)
        p[k][j]/=p[k][k];
 
      for(i=0;i<n;i++)
        if(i!=k)
          for(j=k+1;j<2*n;j++)
        p[i][j]-=p[k][j]*p[i][k];
    }
 
    }
 
/////////////////////////////////////////////////////////////////////////////
 
   ///Copy matrix///
   void copy(double **ps, double **pd, int n)
    {
      int i,j;
      for(i=0;i<n;i++)
    for(j=0;j<n;j++)
      pd[i][j]=ps[i][n+j];
    }
 
/////////////////////////////////////////////////////////////////////////////
 
   ///Calculation x=A-1*C*B-1///
   void X_1(int n)
    { double **x;
      double **A,**B,**C;
      double **A_1,**B_1;
      A=distrib(n,2);
      B=distrib(n,2);
      C=distrib(n,2);
      clrscr();
      gotoxy(22,10);
      cout<<"Enter elements matrix A: ) ";
      make(A,n,22,12);
 
      clrscr( );
      gotoxy(22,10);
      cout<<"Enter elements matrix B: ) ";
      make(B,n,22,12);
      clrscr( );
      gotoxy(22,10);
      cout<<"Enter elements matrix C: ) ";
      make(C,n,22,12);
      eval(A,n);
      eval(B,n);
      A_1=distrib(n,1);
      copy(A,A_1,n);
      B_1=distrib(n,1);
      copy(B,B_1,n);
 
      for (int i=0;i<n;i++)
       for (int j=0;j<n;j++)
    { for (int k=0;k<n;k++)
       { x[i][j]=A_1[i][j]*C[k][j];
         x[i][j]=x[i][j]*B_1[k][j];
       }
 
    }
 
      clrscr( );
      gotoxy(22,10);
      cout<<"Resultats    x=A-1*C*B-1:\n";
      show(x,n);
      char q;
      cout<<"\n\nSave matrix in file? (y/n): ";
      cin>>q;
      if (q=='y') { if ((fl=fopen("c:\\matrix.txt","a"))= =NULL){ cout<<"ERROR!!!";
                                  getch( );
                                  exit(1);
                                }
            fwrite(&x,sizeof(x),1,fl);
            fclose(fl);
          }
      else return;
 
    }
 
///////////////////////////////////////////////////////////////////////////// 
 
 
   ///Calculation x=A-1*B///
   void X_2(int n)
    { double **x;
      double **A,**B;
      double **A_1;
      A=distrib(n,2);
      B=distrib(n,2);
 
      clrscr( );
      gotoxy(22,10);
      cout<<"Enter elements matrix A: ) ";
      make(A,n,22,12);
      clrscr( );
      gotoxy(22,10);
      cout<<"Enter elements matrix B: ) ";
      make(B,n,22,12);
      eval(A,n);
      A_1=distrib(n,1);
      copy(A,A_1,n);
 
      for (int i=0;i<n;i++)
       for (int j=0;j<n;j++)
    { for (int k=0;k<n;k++)
       x[i][j]=A_1[i][j]*B[k][j];
    }
 
      clrscr( );
      gotoxy(22,10);
      cout<<"Resultats    x=A-1*B:\n";
      show(x,n);
      char q;
      cout<<"\n\nSave matrix in file? (y/n): ";
      cin>>q;
      if (q=='y') { if ((fl=fopen("c:\\matrix.txt","a"))==NULL) { cout<<"ERROR!!!";
                                  getch();
                                  exit(1);
                                }
            fwrite(&x,sizeof(x),1,fl);
            fclose(fl);
          }
      else return;
 
    }
 
 
/////////////////////////////////////////////////////////////////////////////
 
   ///Calculation x=B*A-1///
   void X_3(int n)
    { double **x;
      double **A,**B;
      double **A_1;
      A=distrib(n,2);
      B=distrib(n,2);
 
      clrscr( );
      gotoxy(22,10);
      cout<<"Enter elements matrix A: ) ";
      make(A,n,22,12);
      clrscr( );
      gotoxy(22,10);
      cout<<"Enter elements matrix B: ) ";
      make(B,n,22,12);
      eval(A,n);
      A_1=distrib(n,1);
      copy(A,A_1,n);
      for (int i=0;i<n;i++)
       for (int j=0;j<n;j++)
    { for (int k=0;k<n;k++)
       x[i][j]=B[i][k]*A_1[k][j];
    }
 
      clrscr( );
      gotoxy(22,10);
      cout<<"Resultats    x=B*A-1:\n";
      show(x,n);
      char q;
      cout<<"\n\nSave matrix in file? (y/n): ";
      cin>>q;
      if (q= ='y') { if ((fl=fopen("c:\\matrix.txt","a"))= =NULL) { cout<<"ERROR!!!";
                                  getch( );
                                  exit(1);
                                }
            fwrite(&x,sizeof(x),1,fl);
            fclose(fl);
          }
      else return; }
 
 
/////////////////////////////////////////////////////////////////////////////
 
  ///Writing in file///
  void Show_file(int n)
   { double **x;
     if ((fl=fopen("c:\\matrix.txt","r"))= =NULL) { cout<<"ERROR!!!";
                           getch( );
                           exit(1);
                         }
     fread(&x,sizeof(x),1,fl);
     show(x,n);
     gotoxy(30,wherey( )+2);
     cout<<"Press Enter for back";
     getch( );
     fclose(fl);
   }
 
/////////////////////////////////////////////////////////////////////////////
 
///Main modul///
main( )
 {
   clrscr( );
   int n;
   double *x;
   do{
    clrscr( );
    gotoxy(22,10);
 
    ///Menu///
    cout<<"\n\t\t\t   Menu\n\n\t\t\t1. X=(A-1)*C*(B-1)";
    cout<<"\n\t\t\t2. X=A-1*B"<<"\n\t\t\t3. X=B*(A-1)";
    cout<<"\n\t\t\t4. Show File"<<"\n\t\t\t5. Exit";
    cout<<endl<<endl<<"\t\t (A-1) – obernena matrica do A"<<endl;
    cout<<"\t\t (B-1) – obernena matrica do B";
    switch(getch( ))
    {
      ///Calculation x=A-1*C*B-1///
      case '1':{ clrscr( );
         gotoxy(22,10);
         cout<<"Enter size matrix: ) ";
         cin>>n;
         X_1(n);
 
 
         gotoxy(30,wherey( )+2); 
                     cout<<"Press Enter for back";
         getch( );
         break;
           }
      ///Calculation x=A-1*B///
      case '2':{ clrscr();
         gotoxy(22,10);
         cout<<"Enter size matrix: ) ";
         cin>>n;
         X_2(n);
         gotoxy(30,wherey()+2);
         cout<<"Press Enter for back";
         getch();
         break;
           }
      ///Calculation x=B*A-1///
      case '3':{ clrscr( );
         gotoxy(22,10);
         cout<<"Enter size matrix: ) ";
         cin>>n;
         X_3(n);
         gotoxy(30,wherey( )+2);
         cout<<"Press Enter for back";
         getch( );
         break;
           }
      ///Shoe file///
      case '4':{ clrscr( );
         gotoxy(22,10);
         cout<<"Last writing in file: )\n\n";
         Show_file(n);
         break;
           }
      ///Exit///
      case '5': exit(0);
 
    }
   }while(1);
 
   return 0;
 }
Все это надо на С++ Builder!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2010, 23:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Решеине матричных уровнений (C++ Builder):

Как создать программу для решения матричных игр?
Есть пример на Pascal надо реализовать на Builder c++

Система Уровнений
Вычислить значение у, если к=0, то у=1-1/2-1/3-…-1/n ...

3 дифференцифльных уровнений
помогите решить 3 дифференциальных уровнений: -xy'+y=ln x+1 буду блогодарен...

Приближенное решение уровнений
Используя алгоритм деления отрезка пополам, найти с точностью 0,001 корни...

Решение системы уровнений
Дорогие друзья! Подскажите как проще всего решить систему уровненный при помощи...

Решение системы уровнений
Решить систему уравнений методами: 1) Крамера 2) Метод обратной матрицы 3)...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2010, 23:59
Привет! Вот еще темы с решениями:

Решение системы уровнений
Корень( (0-x)^2+(0-y)^2 +(0-z^2) )=147 Корень( (109-x)^2+(0-y)^2 +(0-z^2)...

Решение системы линейных уровнений
Здравствуйте, у меня такая проблема, нужно решить большую систему линейных...

Решение систем линейных уровнений
Добрый день есть такое задание помогите пожалуйста (осталось решить два примера...

решить систему линейных уровнений
решить систему линейных уровнений а1х+в1у=с1 а2х+в2у=с2


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

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

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