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

Ошибка кода калькулятора матриц - C++

Восстановить пароль Регистрация
 
CMLDA
 Аватар для CMLDA
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 6
03.12.2012, 22:34     Ошибка кода калькулятора матриц #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
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
//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
#include<stdio.h>
#include <iomanip.h>
#include <windows.h>
#include <math.h>
#include<stdlib.h>
#define NN 6
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
void main(void)
{
system("TITLE Matrix");
double mas[2][2],det,mas1[3][3],mas2[3][3],mas3[2][2],mas4[2][2],c,mas5[3][3],mas6[3][3];
int i,j,x,tmp;
char vub;
for (;;) {
 do {
cout <<"\nМiні-функцiональний калькулятор матриць. Для виходу з програми натиснiть q.";
cout <<"\n1 Порахувати матрицю 2х2";
cout <<"\n2 Порахувати матрицю 3х3";
cout <<"\n3 Транспонування квадратної матриці по головній і побічній діагоналях";
cout <<"\n4 Мінори квадратної матриці по заданим рядкам і стовпчикам";
cout <<"\n5 Множення числа на матрицю 2х2";
cout <<"\n6 Множення числа на матрицю 3х3";
cout <<"\n7 Додавання матриць 2х2";
cout <<"\n8 Додавання матриць 3х3";
cout <<"\n9 Про програму";
cout <<"\n";
cout <<"\nЗробіть ваш вибір:";
cin >> vub;
}
while ( vub < '1' || vub > '9' && vub != 'q');
if (vub == 'q') break;
    switch (vub)
    {
       case '1':
            mas==0;
            det==0;
            cout<<"\nПерший елемент матриці--->";
            cin>>mas[0][0];
            cout<<"Другий елемент матриці--->";
            cin>>mas[0][1];
            cout<<"Третій елемент матриці--->";
            cin>>mas[1][0];
            cout<<"Четвертий елемент матриці--->";
            cin>>mas[1][1];
            for (int i=0; i<2; i++)
            {
            for (int j=0; j<2; j++)
            cout << "\nВаша матриця 2х2:";
            cout << mas[i][j] << "\t";
            }
            cout << "\n";
            det=(((mas[0][0])*(mas[1][1]))-((mas[1][0])*(mas[0][1])));
            cout<<"det="<<"("<<mas[0][0]<<"*"<<mas[1][1]<<")"<<"-"<<"("<<mas[1][0]<<"*"<<mas[0][1]<<")"<<"="<<det;
       break;
       case '2':
               cout<<"Перший елемент матриці--->";
               cin>>mas1[0][0];
               cout<<"Другий елемент матриці--->";
               cin>>mas1[0][1];
               cout<<"Третій елемент матриці--->";
               cin>>mas1[0][2];
               cout<<"Четвертий елемент матриці--->";
               cin>>mas1[1][0];
               cout<<"П'ятий елемент матриці--->";
               cin>>mas1[1][1];
               cout<<"Шостий елемент матриці--->";
               cin>>mas1[1][2];
               cout<<"Сьомий елемент матриці--->";
               cin>>mas1[2][0];
               cout<<"Восьмий елемент матриці--->";
               cin>>mas1[2][1];
               cout<<"Дев'ятий елемент матриці--->";
               cin>>mas1[2][2];
               for (int i=0; i<3; i++)
               {
               for (int j=0; j<3; j++)
               cout << "\nВаша матриця 3х3:";
               cout << mas1[i][j] << "\t";
               }
               cout << "\n";
               det=((mas1[0][0])*(mas1[1][1])*(mas1[2][2]))+((mas1[2][0])*(mas1[0][1])*(mas1[1][2]))+((mas1[1][0])*(mas1[2][1])*(mas1[0][2]))-((mas1[2][0])*(mas1[1][1])*(mas1[0][2]))-((mas1[0][0])*(mas1[2][1])*(mas1[1][2]))-((mas1[1][0])*(mas1[0][1])*(mas1[2][2]));
               cout<<"det="<<"("<<mas1[0][0]<<"*"<<mas1[1][1]<<"*"<<mas1[2][2]<<")"<<"+"<<"("<<mas1[2][0]<<"*"<<mas1[0][1]<<"*"<<mas1[1][2]<<")"<<"+"<<"("<<mas1[1][0]<<"*"<<mas1[2][1]<<"*"<<mas1[0][2]<<")"<<"-"<<"("<<mas1[2][0]<<"*"<<mas1[1][1]<<"*"<<mas1[0][2]<<")"<<"-"<<"("<<mas1[0][0]<<"*"<<mas1[2][1]<<"*"<<mas1[1][2]<<")"<<"-"<<"("<<mas1[1][0]<<"*"<<mas1[0][1]<<"*"<<mas1[2][2]<<")"<<"="<<det;
       break;
       case '3':
               {
               int **mas, n, i,j;
               SetConsoleCP(1251);
               SetConsoleOutputCP(1251);
               cout<<"Введіть кількість рядків і стовпчиків: "<< endl;
               cin>>n;
               mas=new int*[n];
               for(i=0; i<n; i++)
               mas[i]=new int[n];
               cout<<"Введіть елементи матриці: "<< endl;
               for(i=0; i<n; i++)
               for(j=0; j<n; j++)
               {
               cout<<"["<<i<<"]["<<j<<"]= ";
               cin>>mas[i][j];
               }
               cout<<"Ваша матриця"<<endl;
               for(i=0; i<n; i++)
               {
               for(j=0; j<n; j++)
               cout<<mas[i][j]<<" ";
               cout<<endl;
               }
               cout<<"Транспонована матриця по головній діагоналі:"<<endl;
               for(i=0; i<n; i++)
               {
               for(j=0; j<n; j++)
               cout<<mas[j][i]<<" ";
               cout<<endl;
               }
               cout<<"Транспонована матриця по побічній діагоналі:"<<endl;
               for(i=0; i<n; i++)
               {
               for(j=0; j<n; j++)
               cout<<mas[n-1-j][n-1-i]<<" ";
               cout<<endl;
               }
               cout<<endl;
               getch();
               }
       break;
       case '4':
               float a[NN][NN],kst;
               int i,j,n,im,jm,p,k=0,t;
               char yn;
// <----Введення розміру квадратної матриці---->
               while(k==0)
               {
               printf("\nВведіть розмір матриці (від 2 до %d): N=",NN);
               n=getche()-48;
               if ((n<2) || (n>NN)) k=0;
               else k=1;
               }
// <----Ввід матриці a[NN][NN]---->
               k=0;
               while(k==0)
               {
               printf("\n\nЗадати матрицю випадково? y/n: ");
               yn=getche();
               if ((yn=='y') || (yn=='n')) k=1;
               else k=0;
               }
               switch(yn)
               {
               case 'y': for(i=0;i<n;i++) for(j=0;j<n;j++) a[i][j]=rand()%100;break;
               default:
               {
               printf("\nВведіть матрицю %dx%d\n",n,n);
               for(i=0;i<n;i++)
               for(j=0;j<n;j++)
               scanf("%f",&a[i][j]);
               }
               break;
               }
// <----Вивід введеної матриці---->
               printf("\n");
              for(i=0;i<n;i++)
              {
              for(j=0;j<n;j++) printf("%6.2f\t",a[i][j]);
              printf("\n\n");
              }
// <----Вводимо мінор---->
              printf("За якими номерами рядків і стовпчиків будемо шукати мінор? i=");
              im=getche()-49;
              printf(" j=");
              jm=getche()-49;
// <----Рахуємо матрицю мінора---->
              for (i=0; i<n; i++)
              if(i==im) for(p=i; p<n; p++) for(j=0; j<n; j++) a[p][j]=a[p+1][j];
              for (j=0; j<n; j++)
              if(j==jm) for(p=j; p<n; p++) for(i=0; i<n; i++) a[i][p]=a[i][p+1];
              n-=1;
// <----Виводимо матрицю---->
              printf("\n");
              for(i=0;i<n;i++)
              {
              for(j=0;j<n;j++) printf("%6.2f\t",a[i][j]);
              printf("\n\n");
              }
// <----Рахуємо мінор---->
              p=0;
              for (i=0; i<n-1; i++)
              {
              t=1;
              while(a[i][i]==0)
              {
              for(j=0; j<n; j++)
              {
              a[i][j]=kst;
              a[i][j]=a[i+t][j];
              a[i+t][j]=kst;
              }
              p++;
              t++;
              }
              for (k=i+1; k<n; k++)
              {
              kst=a[k][i]/a[i][i];
              for(j=0; j<n; j++)
              a[k][j]-=a[i][j]*kst;
              }
              }
              kst=pow(-1,p);
              for(i=0; i<n; i++)
              kst*=a[i][i];
              printf("Мінор по А[%d][%d] дорівнює: %14.3f",im+1,jm+1,kst);
              getch();
       break;
       case '5':
               cout<<"\nПерший елемент матриці--->";
               cin>>mas3[0][0];
               cout<<"Другий елемент матриці--->";
               cin>>mas3[0][1];
               cout<<"Третій елемент матриці--->";
               cin>>mas3[1][0];
               cout<<"Четвертий елемент матриці--->";
               cin>>mas3[1][1];
               for (int i=0; i<2; i++)
               {
               for (int j=0; j<2; j++)
               cout << "\nВаша матриця 2х2:";
               cout << mas3[i][j] << "\t";
               }
               {
               cout << "\nВедіть число на яке потрібно помножити матрицю:";
               cin >>c;
               mas4[0][0]=((mas3[0][0])*c);
               mas4[0][1]=((mas3[0][1])*c);
               mas4[1][0]=((mas3[1][0])*c);
               mas4[1][1]=((mas3[1][1])*c);
               for (int i=0; i<2; i++)
               {
               for (int j=0; j<2; j++)
               cout << "\nВаша домножена матриця:";
               cout << mas4[i][j] << "\t";
               }
               }
            break;
       case '6':
               cout<<"Перший елемент матриці--->";
               cin>>mas5[0][0];
               cout<<"Другий елемент матриці--->";
               cin>>mas5[0][1];
               cout<<"Третій елемент матриці--->";
               cin>>mas5[0][2];
               cout<<"Четвертий елемент матриці--->";
               cin>>mas5[1][0];
               cout<<"П'ятий елемент матриці--->";
               cin>>mas5[1][1];
               cout<<"Шостий елемент матриці--->";
               cin>>mas5[1][2];
               cout<<"Сьомий елемент матриці--->";
               cin>>mas5[2][0];
               cout<<"Восьмий елемент матриці--->";
               cin>>mas5[2][1];
               cout<<"Дев'ятий елемент матриці--->";
               cin>>mas5[2][2];
               for (int i=0; i<3; i++)
               {
               for (int j=0; j<3; j++)
               cout << "\nВаша матриця 3х3:";
               cout << mas5[i][j] << "\t";
               }
               {
               cout << "\nВедіть число на яке потрібно помножити матрицю:";
               с==0;
               cin >>c;
               mas6[0][0]=((mas5[0][0])*c);
               mas6[0][1]=((mas5[0][1])*c);
               mas6[0][2]=((mas5[0][2])*c);
               mas6[1][0]=((mas5[1][0])*c);
               mas6[1][1]=((mas5[1][1])*c);
               mas6[1][2]=((mas5[1][2])*c);
               mas6[2][0]=((mas5[2][0])*c);
               mas6[2][1]=((mas5[2][1])*c);
               mas6[2][2]=((mas5[2][2])*c);
               for (int i=0; i<3; i++)
               {
               for (int j=0; j<3 j++)
               cout << "\nВаша домножена матриця:";
               cout << mas6[i][j] << "\t";
            break;
       case '7':
            break;
       case '8':
            break;
       case '9':
            break;
       default:
            cout <<"\nДякуємо за*використання нашої програми";
}
        }
        }
 
//---------------------------------------------------------------------------
Миниатюры
Ошибка кода калькулятора матриц  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
03.12.2012, 22:58     Ошибка кода калькулятора матриц #2
по моему лучше все переделать

это у вас такое присваивание?
Цитата Сообщение от CMLDA Посмотреть сообщение
mas==0;
* * * * * * det==0
вот список ошибок после нескольких исправлений
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(38): warning C4553: '==' : operator has no effect; did you intend '='?
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(39): warning C4553: '==' : operator has no effect; did you intend '='?
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(52): warning C4258: 'j' : definition from the for loop is ignored; the definition from the enclosing scope is used
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(50) : definition of 'j' ignored
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(15) : definition of 'j' used
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(81): warning C4258: 'j' : definition from the for loop is ignored; the definition from the enclosing scope is used
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(79) : definition of 'j' ignored
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(15) : definition of 'j' used
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(126): warning C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\conio.h(131) : see declaration of 'getch'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(137): warning C4996: 'getche': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getche. See online help for details.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\conio.h(132) : see declaration of 'getche'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(146): warning C4996: 'getche': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getche. See online help for details.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\conio.h(132) : see declaration of 'getche'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(152): warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(158): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\stdio.h(290) : see declaration of 'scanf'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(171): warning C4996: 'getche': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getche. See online help for details.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\conio.h(132) : see declaration of 'getche'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(173): warning C4996: 'getche': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getche. See online help for details.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\conio.h(132) : see declaration of 'getche'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(210): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(214): warning C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\conio.h(131) : see declaration of 'getch'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(229): warning C4258: 'j' : definition from the for loop is ignored; the definition from the enclosing scope is used
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(227) : definition of 'j' ignored
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(131) : definition of 'j' used
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(242): warning C4258: 'j' : definition from the for loop is ignored; the definition from the enclosing scope is used
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(240) : definition of 'j' ignored
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(131) : definition of 'j' used
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(269): warning C4258: 'j' : definition from the for loop is ignored; the definition from the enclosing scope is used
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(267) : definition of 'j' ignored
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(131) : definition of 'j' used
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(288): warning C4258: 'j' : definition from the for loop is ignored; the definition from the enclosing scope is used
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(286) : definition of 'j' ignored
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(131) : definition of 'j' used
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(290): error C2360: initialization of 'i' is skipped by 'case' label
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(284) : see declaration of 'i'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(290): error C2360: initialization of 'с' is skipped by 'case' label
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(273) : see declaration of 'с'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(292): error C2360: initialization of 'i' is skipped by 'case' label
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(284) : see declaration of 'i'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(292): error C2360: initialization of 'с' is skipped by 'case' label
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(273) : see declaration of 'с'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(294): error C2360: initialization of 'i' is skipped by 'case' label
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(284) : see declaration of 'i'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(294): error C2360: initialization of 'с' is skipped by 'case' label
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(273) : see declaration of 'с'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(296): error C2361: initialization of 'i' is skipped by 'default' label
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(284) : see declaration of 'i'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(296): error C2361: initialization of 'с' is skipped by 'default' label
1> c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(273) : see declaration of 'с'
1>c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(302): fatal error C1075: end of file found before the left brace '{' at 'c:\users\stanislav\documents\visual studio 2012\projects\consoleapplication11\consoleapplication11\source.cpp(12)' was matched
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
03.12.2012, 22:59     Ошибка кода калькулятора матриц #3
ужоснах. наверно половина ошибок не было бы, если бы вы номрально форматировали код.
вот это например:
C++
1
2
3
4
5
6
for (int i=0; i<2; i++)
{
for (int j=0; j<2; j++)
cout << "\nВаша матриця 2х2:";
cout << mas[i][j] << "\t";
}
Читать сложно, понять что делается - еще сложнее. Ошибок много. Бробираясь через них наткнулся на наверно последнюю, которую мне в лом искать из-за кривого форматирования. это несоответствие открывающих и закрывающих скобок '{' '}'
Вот мои потуги, попробуйте сравнить свою и эту версию специальной тулзой для сравнивания кода, может поможет. А вообще писать нормально надо, а не так, как это у вас.

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
//---------------------------------------------------------------------------
#include <iostream>
#include <conio.h>
#include<stdio.h>
#include <iomanip>
#include <windows.h>
#include <math.h>
#include<stdlib.h>
#define NN 6
//#pragma hdrstop
//---------------------------------------------------------------------------
//#pragma argsused
using namespace std;
void main(void)
{
system("TITLE Matrix");
double mas[2][2],det,mas1[3][3],mas2[3][3],mas3[2][2],mas4[2][2],c,mas5[3][3],mas6[3][3];
//int i,j,x,tmp;
char vub;
for (;;) {
 do {
cout <<"\nМiні-функцiональний калькулятор матриць. Для виходу з програми натиснiть q.";
cout <<"\n1 Порахувати матрицю 2х2";
cout <<"\n2 Порахувати матрицю 3х3";
cout <<"\n3 Транспонування квадратної матриці по головній і побічній діагоналях";
cout <<"\n4 Мінори квадратної матриці по заданим рядкам і стовпчикам";
cout <<"\n5 Множення числа на матрицю 2х2";
cout <<"\n6 Множення числа на матрицю 3х3";
cout <<"\n7 Додавання матриць 2х2";
cout <<"\n8 Додавання матриць 3х3";
cout <<"\n9 Про програму";
cout <<"\n";
cout <<"\nЗробіть ваш вибір:";
cin >> vub;
}
while ( vub < '1' || vub > '9' && vub != 'q');
if (vub == 'q') break;
    switch (vub)
    {
       case '1':
            mas[0][0]=0;
            det=0;
            cout<<"\nПерший елемент матриці--->";
            cin>>mas[0][0];
            cout<<"Другий елемент матриці--->";
            cin>>mas[0][1];
            cout<<"Третій елемент матриці--->";
            cin>>mas[1][0];
            cout<<"Четвертий елемент матриці--->";
            cin>>mas[1][1];
            for (int i=0; i<2; i++)
            {
                for (int j=0; j<2; j++)
                {
                cout << "\nВаша матриця 2х2:";
                cout << mas[i][j] << "\t";
                }
            }
            cout << "\n";
            det=(((mas[0][0])*(mas[1][1]))-((mas[1][0])*(mas[0][1])));
            cout<<"det="<<"("<<mas[0][0]<<"*"<<mas[1][1]<<")"<<"-"<<"("<<mas[1][0]<<"*"<<mas[0][1]<<")"<<"="<<det;
       break;
       case '2':
               cout<<"Перший елемент матриці--->";
               cin>>mas1[0][0];
               cout<<"Другий елемент матриці--->";
               cin>>mas1[0][1];
               cout<<"Третій елемент матриці--->";
               cin>>mas1[0][2];
               cout<<"Четвертий елемент матриці--->";
               cin>>mas1[1][0];
               cout<<"П'ятий елемент матриці--->";
               cin>>mas1[1][1];
               cout<<"Шостий елемент матриці--->";
               cin>>mas1[1][2];
               cout<<"Сьомий елемент матриці--->";
               cin>>mas1[2][0];
               cout<<"Восьмий елемент матриці--->";
               cin>>mas1[2][1];
               cout<<"Дев'ятий елемент матриці--->";
               cin>>mas1[2][2];
               for (int i=0; i<3; i++)
               {
                   for (int j=0; j<3; j++)
                   {
                   cout << "\nВаша матриця 3х3:";
                   cout << mas1[i][j] << "\t";
                   }
               }
               cout << "\n";
               det=((mas1[0][0])*(mas1[1][1])*(mas1[2][2]))+((mas1[2][0])*(mas1[0][1])*(mas1[1][2]))+((mas1[1][0])*(mas1[2][1])*(mas1[0][2]))-((mas1[2][0])*(mas1[1][1])*(mas1[0][2]))-((mas1[0][0])*(mas1[2][1])*(mas1[1][2]))-((mas1[1][0])*(mas1[0][1])*(mas1[2][2]));
               cout<<"det="<<"("<<mas1[0][0]<<"*"<<mas1[1][1]<<"*"<<mas1[2][2]<<")"<<"+"<<"("<<mas1[2][0]<<"*"<<mas1[0][1]<<"*"<<mas1[1][2]<<")"<<"+"<<"("<<mas1[1][0]<<"*"<<mas1[2][1]<<"*"<<mas1[0][2]<<")"<<"-"<<"("<<mas1[2][0]<<"*"<<mas1[1][1]<<"*"<<mas1[0][2]<<")"<<"-"<<"("<<mas1[0][0]<<"*"<<mas1[2][1]<<"*"<<mas1[1][2]<<")"<<"-"<<"("<<mas1[1][0]<<"*"<<mas1[0][1]<<"*"<<mas1[2][2]<<")"<<"="<<det;
       break;
       case '3':
               {
               int **mas, n, i,j;
               SetConsoleCP(1251);
               SetConsoleOutputCP(1251);
               cout<<"Введіть кількість рядків і стовпчиків: "<< endl;
               cin>>n;
               mas=new int*[n];
               for(i=0; i<n; i++)
               mas[i]=new int[n];
               cout<<"Введіть елементи матриці: "<< endl;
               for(i=0; i<n; i++)
               for(j=0; j<n; j++)
               {
               cout<<"["<<i<<"]["<<j<<"]= ";
               cin>>mas[i][j];
               }
               cout<<"Ваша матриця"<<endl;
               for(i=0; i<n; i++)
               {
               for(j=0; j<n; j++)
               cout<<mas[i][j]<<" ";
               cout<<endl;
               }
               cout<<"Транспонована матриця по головній діагоналі:"<<endl;
               for(i=0; i<n; i++)
               {
               for(j=0; j<n; j++)
               cout<<mas[j][i]<<" ";
               cout<<endl;
               }
               cout<<"Транспонована матриця по побічній діагоналі:"<<endl;
               for(i=0; i<n; i++)
               {
               for(j=0; j<n; j++)
               cout<<mas[n-1-j][n-1-i]<<" ";
               cout<<endl;
               }
               cout<<endl;
               getch();
               }
       break;
       case '4':
           {
               float a[NN][NN],kst;
               int i,j,n,im,jm,p,k=0,t;
               char yn;
// <----Введення розміру квадратної матриці---->
               while(k==0)
               {
               printf("\nВведіть розмір матриці (від 2 до %d): N=",NN);
               n=getche()-48;
               if ((n<2) || (n>NN)) k=0;
               else k=1;
               }
// <----Ввід матриці a[NN][NN]---->
               k=0;
               while(k==0)
               {
               printf("\n\nЗадати матрицю випадково? y/n: ");
               yn=getche();
               if ((yn=='y') || (yn=='n')) k=1;
               else k=0;
               }
               switch(yn)
               {
               case 'y': for(i=0;i<n;i++) for(j=0;j<n;j++) a[i][j]=rand()%100;break;
               default:
               {
               printf("\nВведіть матрицю %dx%d\n",n,n);
               for(i=0;i<n;i++)
               for(j=0;j<n;j++)
               scanf("%f",&a[i][j]);
               }
               break;
               }
// <----Вивід введеної матриці---->
               printf("\n");
              for(i=0;i<n;i++)
              {
              for(j=0;j<n;j++) printf("%6.2f\t",a[i][j]);
              printf("\n\n");
              }
// <----Вводимо мінор---->
              printf("За якими номерами рядків і стовпчиків будемо шукати мінор? i=");
              im=getche()-49;
              printf(" j=");
              jm=getche()-49;
// <----Рахуємо матрицю мінора---->
              for (i=0; i<n; i++)
              if(i==im) for(p=i; p<n; p++) for(j=0; j<n; j++) a[p][j]=a[p+1][j];
              for (j=0; j<n; j++)
              if(j==jm) for(p=j; p<n; p++) for(i=0; i<n; i++) a[i][p]=a[i][p+1];
              n-=1;
// <----Виводимо матрицю---->
              printf("\n");
              for(i=0;i<n;i++)
              {
              for(j=0;j<n;j++) printf("%6.2f\t",a[i][j]);
              printf("\n\n");
              }
// <----Рахуємо мінор---->
              p=0;
              for (i=0; i<n-1; i++)
              {
              t=1;
              while(a[i][i]==0)
              {
              for(j=0; j<n; j++)
              {
              a[i][j]=kst;
              a[i][j]=a[i+t][j];
              a[i+t][j]=kst;
              }
              p++;
              t++;
              }
              for (k=i+1; k<n; k++)
              {
              kst=a[k][i]/a[i][i];
              for(j=0; j<n; j++)
              a[k][j]-=a[i][j]*kst;
              }
              }
              kst=pow(-1.f, float(p));
              for(i=0; i<n; i++)
              kst*=a[i][i];
              printf("Мінор по А[%d][%d] дорівнює: %14.3f",im+1,jm+1,kst);
              getch();
       break;
           }
 
       case '5':
               cout<<"\nПерший елемент матриці--->";
               cin>>mas3[0][0];
               cout<<"Другий елемент матриці--->";
               cin>>mas3[0][1];
               cout<<"Третій елемент матриці--->";
               cin>>mas3[1][0];
               cout<<"Четвертий елемент матриці--->";
               cin>>mas3[1][1];
               for (int i=0; i<2; i++)
               {
                   for (int j=0; j<2; j++)
                   {
                       cout << "\nВаша матриця 2х2:";
                       cout << mas3[i][j] << "\t";
                   }
               }
               {
               cout << "\nВедіть число на яке потрібно помножити матрицю:";
               cin >>c;
               mas4[0][0]=((mas3[0][0])*c);
               mas4[0][1]=((mas3[0][1])*c);
               mas4[1][0]=((mas3[1][0])*c);
               mas4[1][1]=((mas3[1][1])*c);
               for (int i=0; i<2; i++)
               {
                   for (int j=0; j<2; j++)
                   {
                       cout << "\nВаша домножена матриця:";
                       cout << mas4[i][j] << "\t";
                   }
               }
               }
            break;
       case '6':
           {
               cout<<"Перший елемент матриці--->";
               cin>>mas5[0][0];
               cout<<"Другий елемент матриці--->";
               cin>>mas5[0][1];
               cout<<"Третій елемент матриці--->";
               cin>>mas5[0][2];
               cout<<"Четвертий елемент матриці--->";
               cin>>mas5[1][0];
               cout<<"П'ятий елемент матриці--->";
               cin>>mas5[1][1];
               cout<<"Шостий елемент матриці--->";
               cin>>mas5[1][2];
               cout<<"Сьомий елемент матриці--->";
               cin>>mas5[2][0];
               cout<<"Восьмий елемент матриці--->";
               cin>>mas5[2][1];
               cout<<"Дев'ятий елемент матриці--->";
               cin>>mas5[2][2];
               for (int i=0; i<3; i++)
               {
                   for (int j=0; j<3; j++)
                   {
                       cout << "\nВаша матриця 3х3:";
                       cout << mas5[i][j] << "\t";
                   }
               }
               {
               cout << "\nВедіть число на яке потрібно помножити матрицю:";
               int с = 0;
               cin >>c;
               mas6[0][0]=((mas5[0][0])*c);
               mas6[0][1]=((mas5[0][1])*c);
               mas6[0][2]=((mas5[0][2])*c);
               mas6[1][0]=((mas5[1][0])*c);
               mas6[1][1]=((mas5[1][1])*c);
               mas6[1][2]=((mas5[1][2])*c);
               mas6[2][0]=((mas5[2][0])*c);
               mas6[2][1]=((mas5[2][1])*c);
               mas6[2][2]=((mas5[2][2])*c);
               for (int i=0; i<3; i++)
               {
                   for (int j=0; j<3; j++)
                   {
                    cout << "\nВаша домножена матриця:";
                    cout << mas6[i][j] << "\t";
                   }
               }
            break;
               }
       case '7':
            break;
       case '8':
            break;
       case '9':
            break;
       default:
            cout <<"\nДякуємо за*використання нашої програми";
}
        }
        }
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
03.12.2012, 23:03     Ошибка кода калькулятора матриц #4
Цитата Сообщение от DU Посмотреть сообщение
Бробираясь через них наткнулся на наверно последнюю, которую мне в лом искать из-за кривого форматирования. это несоответствие открывающих и закрывающих скобок '{' '}'
я тоже нашел, нужно было в конец добавить закрывающуюся скобку
Yandex
Объявления
03.12.2012, 23:03     Ошибка кода калькулятора матриц
Ответ Создать тему
Опции темы

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