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

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

Войти
Регистрация
Восстановить пароль
 
Slav1991
0 / 0 / 1
Регистрация: 07.01.2010
Сообщений: 44
#1

Вычислить матрицу по двум другим - C++

17.02.2010, 20:00. Просмотров 916. Ответов 14
Метки нет (Все метки)

помогите составить прогу пжлст.Вот требования и формула по которой считается матрица С:
1. Выполнить с помощью подпрограмм. Обойтись без глобальных переменных.
2. Размерность массивов вводится в процессе работы программы.
3. Максимальное значение размерности – 8x8.
4. Организовать возможность ввода значений размерности и элементов с клавиатуры и из текстового файла и выдачи результатов на дисплей и в текстовый или типизированный файл.
5. Выбор направления ввода-вывода организовать с помощью простейших запросов (типа Y/N).
С=(А-В^2)*(2A+B)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2010, 20:00     Вычислить матрицу по двум другим
Посмотрите здесь:

Определить из трех чисел одно не равное двум другим - C++
Даны три целых числа, одно из которых отличается от двух других, равных между собой. Определить порядковый номер числа, отличного от...

Дано число n. Вычислить сумму n членов арифметической прогрессии по любым двум её членам и их номерам - C++
Дано число n. Вычислить сумму n членов арифметической прогрессии по любым двум её членам и их номерам.

Вычислить матрицу - C++
Дана матрица М(4,5) и константа С. Вычислить матрицу D, равную произведению элементов матрицы М на константу.

Cоздать и вычислить матрицу. - C++
помогите программный код написать плиззз задание: дана матрица S вычислить сумму главной диагонали матрицу вводить с клавиатуры плизз...

Вычислить новую матрицу по формуле - C++
Здравствуйте, вобщем есть программка мне нужно вычислить матрицу В, по матрице А. Ответ мне выдается иероглифами в первой матрице....

Вычислить матрицу С=В*В. Найти ошибку в программе - C++
Дана матрица В(4 *4). Вычислить матрицу С=В*В. #include <iostream> using namespace std; int main() { int B,C; int i,j,k; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
17.02.2010, 20:07     Вычислить матрицу по двум другим #2
попробуй начать а кто-нить продолжит
Slav1991
0 / 0 / 1
Регистрация: 07.01.2010
Сообщений: 44
17.02.2010, 20:24  [ТС]     Вычислить матрицу по двум другим #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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
float  * CreateM(unsigned int idx, unsigned int idy)
{
    float * map = new float[idx*idy];
    for(unsigned int y = 0; y < idy; y++)
    {
        for(unsigned int x = 0; x < idx; x++)
        {
            *(map+(y*idy)+x) = 0;
        }
    }
    return map;
}
 
void SumM(float * const map, float const * const map_a, float const * const map_b, unsigned int idx, unsigned int idy)
{
    for(unsigned int y = 0; y < idy; y++)
    {
        for(unsigned int x = 0; x < idx; x++)
        {
            *(map+(y*idy)+x) = *(map_a+(y*idy)+x) + *(map_b+(y*idy)+x);
        }
    }
}
 
void InvertM(float * const map, float const * const map_a, unsigned int idx, unsigned int idy)
{
    for(unsigned int y = 0; y < idy; y++)
    {
        for(unsigned int x = 0; x < idx; x++)
        {
            *(map+(y*idy)+x) = (*(map_a+(y*idy)+x) * -1);
        }
    }
}
 
void MultiplicationM(float * const map, float const * const map_a, float const * const map_b, unsigned int idx, unsigned int idy)
{
/*
    for(unsigned int yr = 0; yr < idx; yr++)
    {
        for(unsigned int x = 0; x < idx; x++)
        {
            *(map+(yr*idx)+x) = 0;
            for(unsigned int y = 0; y < idx; y++)
            {
                *(map+(yr*idx)+x) = *(map+(yr*idx)+x) + ((*(map_a+(x*idx)+y)) * (*(map_b+(y*idx)+x)));
            }
        }
    }
*/
    for(unsigned int y = 0; y < idy; y++)
    {
        for(unsigned int x = 0; x < idx; x++)
        {
            *(map+(y*idy)+x) = *(map_a+(y*idy)+x) * *(map_b+(y*idy)+x);
        }
 
    }
}
 
void MultiplicationMConst(float * const map, float const * const map_a, unsigned int idx, unsigned int idy, float val)
{
    for(unsigned int x = 0; x < idx; x++)
    {
        for(unsigned int y = 0; y < idy; y++)
        {
            *(map+(y*idy)+x) = (*(map_a+(y*idy)+x)) * val;
        }
    }
}
 
void PrintM(float const * const map_a, unsigned int idx, unsigned int idy, const char * text)
{
    printf("%s\n",text);
    char buffer[65];
    for(unsigned int y = 0; y < idy; y++)
    {
        for(unsigned int x = 0; x < idx; x++)
        {
            // char buffer[_CVTBUFSIZE];
            float val = *(map_a+(y*idy)+x);
            // _gcvt( val, 17, buffer );
            printf("M[%d][%d]=%10.10f\t", y,x,val);
        }
        printf("\n");
    }
}
 
void PrintMFile(float const * const map_a, unsigned int idx, unsigned int idy, const char * file_name)
{
    FILE *stream;
    if( (stream = fopen( file_name, "w" )) == NULL )
    {
        printf("”*©« %s *ВҐ *ВҐ©¤ВҐ*", file_name);
    }
     else
     {
        //char buffer[_CVTBUFSIZE];
        for(unsigned int y = 0; y < idy; y++)
        {
            for(unsigned int x = 0; x < idx; x++)
            {
                float val = *(map_a+(y*idy)+x);
                //_gcvt( val, 17, buffer );
                fprintf(stream, "M[%d][%d]=%10.10f\t", y,x,val);
            }
            fprintf(stream, "\n");
        }
        fclose( stream );
    }
}
 
void InitMConsole(float * const map, unsigned int idx, unsigned int idy)
{
    for(unsigned int y = 0; y < idy; y++)
    {
        for(unsigned int x = 0; x < idx; x++)
        {
            printf("M[%d][%d]=", y,x);
            scanf("%f",(map+(y*idy)+x));
        }
    }
}
 
void InitMFile(float * const map, unsigned int idx, unsigned int idy, const char * file_name)
{
    FILE *stream;
    if( (stream = fopen( file_name, "r" )) == NULL )
    {
        printf("”*©« %s *ВҐ *ВҐ©¤ВҐ*", file_name);
    }
     else
     {
        for(unsigned int y = 0; y < idy; y++)
        {
            for(unsigned int x = 0; x < idx; x++)
            {
                fscanf(stream, "%f",(map+(y*idy)+x));
            }
        }
        fclose( stream );
    }
}
 
int CheckYN(const char * text)
{
    int ret = 0;
    int val = 0;
    while((val != char('Y')) &&
          (val != char('y')) &&
          (val != char('N')) &&
          (val != char('n'))
         )
    {
        printf("%s (Y/N):",text);
        val = getch();
        printf("\n");
    }
    if ((val == char('Y')) || (val == char('y'))) ret = 1;
    return ret;
}
 
int main()
{
    //unsigned int idx = 3;
 
    unsigned int idx = 0;
    unsigned int idy = 0;
 
 
          printf("vvedite razmernost:\n");
    printf("X=");
    scanf("%i",&idx);
    printf("Y=");
    scanf("%i",&idy);
 
    if(idx > 8 || idy > 8)
    {
      printf("razmernost doljna bit (8 x 8)!!!");
      return 0;
    }
 
    float * map_a = CreateM(idx, idy);
    float * map_b = CreateM(idx, idy);
    float * map_t1 = CreateM(idx, idy);
    float * map_t2 = CreateM(idx, idy);
 
    if (CheckYN("read from file?"))
    {
        InitMFile(map_a, idx, idy, "D:\\lab11.txt");
        InitMFile(map_b, idx, idy, "D:\\lab11.txt");
    }
    else
    {
        printf("vvedite elementi matrix A\n");
        InitMConsole(map_a, idx, idy);
        printf("vvedite elememti matrix B\n");
        InitMConsole(map_b, idx, idy);
    }
 
    //PrintM(map_a, idx, "MAP A");
    //PrintM(map_b, idx, "MAP B");
 
    MultiplicationM(map_t1, map_b, map_b, idx, idy); // B^2
    //PrintM(map_t1, idx, "MAP B^2");
    InvertM(map_t1, map_t1, idx, idy); // -B^2
    //PrintM(map_t1, idx, "MAP -B^2");
    SumM(map_t1, map_a, map_t1,idx, idy); // A-B^2
    //PrintM(map_t1, idx, "MAP A-B^2");
 
    MultiplicationMConst(map_t2, map_a, idx, idy, 2); // A*2
    //PrintM(map_t2, idx, "MAP A*2");
    SumM(map_t2, map_t2, map_b, idx, idy); // A*2+B
    //PrintM(map_t2, idx, "MAP A*2+B");
 
    MultiplicationM(map_t1, map_t1, map_t2, idx, idy); // (A-B^2)*(A*2+B)
    PrintM(map_t1, idx, idy, "MAP (A-B^2)*(A*2+B)");
 
    if (CheckYN("write to file?"))
    {
        PrintMFile(map_t1, idx, idy, "c.txt");
    }
    else
    {
        PrintM(map_t1, idx, idy, "MAP (A-B^2)*(A*2+B)");
    }
 
    delete map_a;
    delete map_b;
    delete map_t1;
    delete map_t2;
    return 0;
}
Добавлено через 15 минут
или такой вариант, ток по другой формуле:
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
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
typedef int massiv[8][8];
 
int print_file(const massiv *mas, int mas_h, int mas_w)
{
    FILE *fC;
 
    fC = fopen( "massiv_C.txt", "w");
    if (fC==NULL)
    {
        printf("File \"massiv_C.txt\" could not be created.\n");
        getch();
        return -1;
    }
 
    for(int i=0;i<mas_h;i++)
    {
        for(int j=0;j<mas_w;j++)
        {
            fprintf (fC, "%d\t", (*mas)[i][j]);
        }
        fprintf (fC, "\n\n");
    }
 
    fclose(fC);
    return 1;
}
 
void print_mon(const massiv *mas, int mas_h, int mas_w)
{
    for(int i=0;i<mas_h;i++)
    {
        for(int j=0;j<mas_w;j++)
        {
            printf("%d\t", (*mas)[i][j]);
        }
        printf("\n\n");
    }
}
 
 
int scan_file(FILE *stream, massiv *mas, int mas_h, int mas_w)
{
    int X;
 
    for(int i=0;i<mas_h;i++)
        for(int j=0; j<mas_w; j++)
        {
            if(fscanf(stream, "%d", &X)==1)
                (*mas)[i][j]=X;
            else
            {
                printf("Unexpected end of file!\n");
                return 0;
            }
        }
        fclose(stream);
 
    return 1;
}
 
int get_h_w_and_scan(massiv *A, massiv *B, int &h, int &w)
{
 
    FILE *fA;
    fA = fopen( "massiv_A.txt", "r");
    if (fA==NULL)
    {
        printf("File \"massiv_A.txt\" not found.\n");
        getch();
        return -1;
    }
 
 
    FILE *fB;
    fB = fopen( "massiv_B.txt", "r");
    if (fB==NULL)
    {
        printf("File \"massiv_B.txt\" not found.\n");
        getch();
        return -1;
    }
 
    char ch;
    while(fscanf(fA, "%c", &ch)==1)
    {
        if(ch==' ') w++;
        if(ch=='\n')
        {
            h++;
            w=0;
        }
    }
 
    if(h==0 && w==0)
        printf("File: massiv_A.txt - is empty or not exist!\n");
    else
    {
        w++;
        h++;
    }
 
    rewind(fA);
 
    scan_file(fA, A, h, w);
    scan_file(fB, B, h, w);
 
    return 1;
}
 
void scan_cons(massiv *mas, int mas_h, int mas_w)
{
    printf("Enter elements of nassiv:\n");
 
    for(int i=0;i<mas_h;i++)
        for(int j=0;j<mas_w;j++)
        {
            printf("[%d][%d]: ",i+1,j+1);
            scanf("%d", &((*mas)[i][j]));
        }
 
}
 
void mas_plus_mas(const massiv *mas1, const massiv *mas2, massiv *mas3, int mas_h, int mas_w)
{
   for(int i=0;i<mas_h;i++)
       for(int j=0;j<mas_w;j++)
        {
            (*mas3)[i][j]=(*mas1)[i][j]+(*mas2)[i][j];
        }
}
 
void mas_x_chislo(const massiv *mas1, massiv *mas2, int chislo, int mas_h, int mas_w)
{
   for(int i=0;i<mas_h;i++)
       for(int j=0;j<mas_w;j++)
        {
            (*mas2)[i][j]=(*mas1)[i][j]*chislo;
        }
}
 
void mas_x_mas(const massiv *mas1, const massiv *mas2, massiv *mas3, int mas_h, int mas_w)
{
   for(int i=0;i<mas_h;i++)
       for(int j=0;j<mas_w;j++)
        {
            int E=0;
            for(int a=i, b=0, k=0, l=j;b<mas_w && k<mas_h;b++, k++)
            {
                (*mas3)[i][j]=(*mas1)[a][b] * (*mas2)[k][l]+E;
                E=(*mas3)[i][j];
            }
 
        }
}
 
 
int main()
{
    massiv A, B, C, temp1, temp2, temp3, temp4;
    int ok = 1, h=0, w=0;
 
 
    clrscr();
 
    printf("Do you want to get data from file? (Y/N)\n");
 
    if(getch() == 'y') {
        ok = get_h_w_and_scan(&A, &B, h, w);
        printf("W=%d H=%d\n", w, h);
    } else {
        printf("Enter 'h' and 'w' of massivs:\n");
        scanf("%d %d", &h, &w);
        scan_cons(&A, h, w);
        scan_cons(&B, h, w);
    }
 
    if(ok == 0)
    {
        printf("Do you want to write data from consol? (Y/N)\n");
        if(getch() == 'y')
        {
            printf("Enter 'h' and 'w' of massivs:\n");
            scanf("%d %d", &h, &w);
            scan_cons(&A, h, w);
            scan_cons(&B, h, w);
            ok=1;
        }
    }
 
    if(ok != 0)
     {
          printf("Massiv A: \n");
          print_mon(&A, h, w);
 
          printf("\nMassiv B: \n");
          print_mon(&B, h, w);
 
          mas_x_chislo(&B, &temp1, -1, h, w);
          mas_plus_mas(&A, &temp1, &temp2, h, w);
          mas_plus_mas(&A, &B, &temp3, h, w);
          mas_x_mas(&temp2, &temp3, &temp1, h, w);
          mas_x_mas(&A, &B, &temp2, h, w);
          mas_x_chislo(&temp2, &temp3, -2, h, w);
          mas_plus_mas(&temp1, &temp3, &C, h, w);
 
          printf("\nMassiv C: \n");
          print_mon(&C, h, w);
 
          printf("Do you want to write data to file? (Y/N)\n");
 
          if(getch()=='y')
               print_file(&C,h,w);
 
     }
            
            printf("\nThe program is finished...");
    getch();
    return 0;
}
Slav1991
0 / 0 / 1
Регистрация: 07.01.2010
Сообщений: 44
18.02.2010, 21:10  [ТС]     Вычислить матрицу по двум другим #4
помогите исправить одну ошибку!!!
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
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <stdlib.h>
 
void summa( int* a, int* b, int* c,int razmer);
void raznost( int* a, int* b, int* c,int razmer);
void proizved( int* a, int* b, int* c,int razmer);
void umnNaChislo( int* a,int* c, int razmer, int numb);
void vvod( int* a,int razmer);
void vivod( int* matr, int razmer, char bukva);
void v_fail( int* a,int razmer,char* imya);
void iz_faila( int* a,int razmer, char* imya);
 
 
void main()
{
    int *a,*b,*c,*d,*e;
    int x,razmer;
    
 
    printf("Vvod iz faila/s klaviatury? (1/2) ");
    scanf("%d",&x);
    if (x == 1)
    {
        
        iz_faila(a,razmer,"A.txt");
        iz_faila(b,razmer,"B.txt");
 
    }
    else
    {
 
        printf("Vvedite razmernost`: ");
        scanf("%d",&razmer);
        if(razmer<1||razmer>8)
        {
            printf("Error: nepravil`naja razmernost`!!!"); getch();
            return;
        }
    
        a = (int*)malloc(razmer*razmer*sizeof(int));
        b = (int*)malloc(razmer*razmer*sizeof(int));
        c = (int*)malloc(razmer*razmer*sizeof(int));
        d = (int*)malloc(razmer*razmer*sizeof(int));
        e = (int*)malloc(razmer*razmer*sizeof(int));
        vvod(a,razmer);
        vvod(b,razmer);
    }
    
    proizved(a,a,c,razmer);
    summa(c,b,c,razmer);
     proizved(c,b,e,razmer);
    umnNaChislo(a,d,2,razmer);
    raznost(d,e,c,razmer);
    
    printf("Vyvesti v fail/na displey? (1/2) ");
    scanf("%d",&x);
    if (x == 1)
        v_fail(c,razmer,"C.txt");
    else
        vivod(c,razmer,'C');
 
    free(a);
    free(b);
    free(c);
    free(d);
}
 
void vivod(int* matr, int razmer, char bukva)
{
    int i,j;
    printf("Matrica %c:\n",bukva);
    for(i=0;i<razmer;i++)
    {
        for(j=0;j<razmer;j++)
            printf("%5d |",*(matr+i*razmer+j));
        printf("\n");
    }
    getch();
}
 
void summa( int* a, int* b,int* c,int razmer)
{
    int i,j;
 
    for(i=0;i<razmer;i++)
        for(j=0;j<razmer;j++)
            *(c+i*razmer+j) = *(a+i*razmer+j)+*(b+i*razmer+j);
}
 
void raznost( int* a, int* b,int* c, int razmer)
{
    int i,j;
 
    for(i=0;i<razmer;i++)
        for(j=0;j<razmer;j++)
            *(c+i*razmer+j) = *(a+i*razmer+j)-*(b+i*razmer+j);
}
 
void proizved( int* a, int* b,int* c, int razmer)
{
    int i,j,k,t;
 
    for(i=0;i<razmer;i++)
    {
        for(j=0;j<razmer;j++)
        {
            t = 0;
            for(k=0;k<razmer;k++)
                t += *(a+i*razmer+j) * (*(b+i*razmer+j));
            *(c+i*razmer+j) = t;
        }
    }
}
 
void umnNaChislo( int* a, int* c, int numb, int razmer)
{
    int i,j;
 
    for(i=0;i<razmer;i++)
        for(j=0;j<razmer;j++)
        *(c+i*razmer+j) = *(a+i*razmer+j)*numb;
}
 
void vvod(int* a, int razmer)
{
    int i,j;
 
    for(i=0;i<razmer;i++)
        for(j=0;j<razmer;j++)
        {
            printf("Vvedite element [%d][%d]:",i+1,j+1);
            scanf("%d",&*(a+i*razmer+j));
        }
}
 
void_v fail(int* a,int razmer,char* imya)
{
    FILE* file;
    int i,j,c;
    printf("Vyvod v fail textovyj/tipizirovannyj? (1/2) ");
    scanf("%d",&c);
    if(c == 1)
    {
        if(file = fopen(imya,"wt"))
        {
            for(i=0;i<razmer;i++)
            {
                for(j=0;j<razmer;j++)
                    fprintf(file,"%5d | ",*(a+i*razmer+j));
                fprintf(file,"\n");
            }
        }
        else
        {
            printf("Error of open!"); getch(); exit(0);
        }
    }
    else
    {
        if(file = fopen(imya,"wb"))
        {
            for(i=0;i<razmer;i++)
                fwrite(a[i],sizeof(int),razmer,file);
        }
        else
        {
            printf("Error of open!"); getch(); exit(0);
        }
    }
}
 
void_iz faila(int** a,int razmer,char *imya)
{
    FILE* file;
    int i,j,c;
    printf("Vvod iz faila textovogo/tipizirovannogo? (1/2) ");
    scanf("%d",&c);
    if(c == 1)
    {
        if(file = fopen(imya,"rt"))
        {
        a = (int*)malloc(razmer*razmer*sizeof(int));
        b = (int*)malloc(razmer*razmer*sizeof(int));
        c = (int*)malloc(razmer*razmer*sizeof(int));
        d = (int*)malloc(razmer*razmer*sizeof(int));
        e = (int*)malloc(razmer*razmer*sizeof(int));
            for(i=0;i<razmer;i++)
            {
                for(j=0;j<razmer;j++)
                    fscanf(file,"%d",&*(a+i*razmer+j));
            }
        }
        else
        {
            printf("Error of open!"); getch(); exit(0);
        }
    }
    else
    {
        if(file = fopen(imya,"rb"))
        {
            for(i=0;i<razmer;i++)
                fread(a[i],sizeof(int),razmer,file);
        }
        else
        {
            printf("Error of open!"); getch(); exit(0);
        }
    }
}
Добавлено через 27 минут
аааааааааааааууууууууууууууу

Добавлено через 13 минут
SOS!!!!!!!!!! HELP!!!!!!!!!!!!!!!
Pavel1133
3 / 3 / 0
Регистрация: 12.10.2009
Сообщений: 81
18.02.2010, 21:34     Вычислить матрицу по двум другим #5
код ошибки в студию
Slav1991
0 / 0 / 1
Регистрация: 07.01.2010
Сообщений: 44
18.02.2010, 21:43  [ТС]     Вычислить матрицу по двум другим #6
Declaration sintax error в 138 строке
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
18.02.2010, 21:46     Вычислить матрицу по двум другим #7
138: void_v fail //надо так как написано в прототипе, тем более типа void_v не существует:
напиши так: void v_fail
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,423
18.02.2010, 21:47     Вычислить матрицу по двум другим #8
тихий ужас
Slav1991
0 / 0 / 1
Регистрация: 07.01.2010
Сообщений: 44
22.02.2010, 18:37  [ТС]     Вычислить матрицу по двум другим #9
помогите исправить ошибку в функции DEISTVIE
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
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
 
void VVOD(float Matrix[8][8],int M);
void VYVOD(float Matrix[8][8],int M);
void MINUS(float Matrix1[8][8],float Matrix2[8][8],float Res[8][8],int M);
void PLUS(float Matrix1[8][8],float Matrix2[8][8],float Res[8][8],int M);
void UMNOGENIE(float Matrix1[8][8],float Matrix2[8][8],float Res[8][8],int M);
void DEISTVIE(float Matrix1[8][8],float Matrix2[8][8],float Res[8][8],int M);
 
int main()
{   int N,Pr,i,j;
    FILE*f;
    float A[8][8],B[8][8],C[8][8];
 
    printf("Vvedite Priznak=1-dannye iz faila!; Priznak2=dannye s klaviaturi!\n");
    printf("Priznak=");
    scanf("%d",&N);
    if(Pr==2)
 
{   printf("Vvedite Razmernost Matric N*N\n");
    printf("N=");
    scanf("%d",&N);
    printf("Vvedite Matricu A \n");
    VVOD(A,N);
    printf("Vvedite Matricu B \n");
    VVOD(B,N);
}
    if(Pr==1)
{   f=fopen("D:\\abc.txt","r");
    while(!feof(f))
    {
        fscanf(f,"%d\n",&N);
        printf("N=%d\n",N);
        for(i=0;i<N;i++)
        for(j=0;j<N;j++)
        scanf("%f",&A[i][j]);
        for(i=0;i<N;i++)
        for(j=0;j<N;j++)
        scanf("%f",&B[i][j]);
        }   }
    if(N>8)
{   printf("Nedopustimo Bolshaya Razmernost! Vvedite razmernost<=8*8\n");
    return 0;
}   fclose(f);
 
    DEISTVIE(A,B,C,N);
    getch();
    return 0;
}
    void VVOD(float Matrix[8][8],int M)
    {   int i,j;
        for(i=0;i<M;i++)
        for(j=0;j<M;j++)
        scanf("%f",&Matrix[i][j]);
    }
    void VYVOD(float Matrix[8][8],int M)
    {   int i,j;
        printf("Vyvod Matrici\n");
        for(i=0;i<M;i++)
        for(j=0;j<M;j++)
        printf("%5.2f  \t",Matrix[i][j]);
    }
    void MINUS(float Matrix1[8][8],float Matrix2[8][8],float Res[8][8],int M)
    {   int i,j;
        for(i=0;i<M;i++)
        for(j=0;j<M;j++)
        Res[i][j]=Matrix1[i][j]-Matrix2[i][j];
    }
    void PLUS(float Matrix1[8][8],float Matrix2[8][8],float Res[8][8],int M)
    {   int i,j;
        for(i=0;i<M;i++)
        for(j=0;j<M;j++)
        Res[i][j]=Matrix1[i][j]+Matrix2[i][j];
    }
    void UMNOJENIE(float Matrix1[8][8],float Matrix2[8][8],float Res[8][8],int M)
    {   int i,j,k;
        for(i=0;i<M;i++)
        for(j=0;j<M;j++)
        for(Res[i][j]=0,k=0;k<M;k++)
        Res[i][j]+=Matrix1[i][k]*Matrix2[k][j];
    }
    void UMNOJENIE_NA_CHISLO(float Matrix[8][8],int Chislo,float Res[8][8],int M)
    {   int i,j;
        for(i=0;i<M;i++)
        for(j=0;j<M;j++)
        Res[i][j]=Matrix[i][j]*Chislo;
    }
    void DEISTVIE(float Matrix1[8][8],float Matrix2[8][8],float Res[8][8],int M)
    {   float B2[8][8],A2[8][8],T[8][8],U[8][8],Res[8][8];
        int i,j;
        FILE*g;
        UMNOGENIE(Matrix2,Matrix2,B2,M);
        MINUS(Matrix1,B2,T,M);
        UMNOJENIE_NA_CHISLO(Matrix1,2,A2,M);
        PLUS(A2,Matrix2,U,M);
        UMNOGENIE(T,U,Res,M);
        printf("Vyvod Matrici C:C=(A-B*B)*(2*A+B) \n");
        VYVOD(Res,M);
        g=fopen("D:\\abc.txt","a");
            if(g!=0)
            {   for(i=0;i<M;i++)
                for(j=0;j<M;j++)
                printf("%5.2f  \t",Res[i][j]);
            }
                fclose(g);
            }
Добавлено через 54 секунды
в 91 строке
@KOT@
81 / 39 / 2
Регистрация: 29.01.2010
Сообщений: 386
22.02.2010, 18:38     Вычислить матрицу по двум другим #10
какая ошибка???
Slav1991
0 / 0 / 1
Регистрация: 07.01.2010
Сообщений: 44
22.02.2010, 18:39  [ТС]     Вычислить матрицу по двум другим #11
Error MAIN_LAB.CPP 91: Multiple declaration for 'Res' in function DEISTVIE(float ( *)[8],float ( *)[8],float ( *)[8],int)
Slav1991
0 / 0 / 1
Регистрация: 07.01.2010
Сообщений: 44
22.02.2010, 19:08  [ТС]     Вычислить матрицу по двум другим #12
Multiple declaration for 'Res' in function DEISTVIE(float ( *)[8],float ( *)[8],float ( *)[8],int)

Добавлено через 1 минуту
Multiple declaration for 'Res' in function DEISTVIE

Добавлено через 1 минуту
Multiple declaration for 'Res' in function DEISTVIE

Добавлено через 24 минуты
помогите, очень надо!!
ArtSL
8 / 7 / 0
Регистрация: 14.02.2010
Сообщений: 40
22.02.2010, 20:20     Вычислить матрицу по двум другим #13
у тебя происходит переопределение функции Res, зачем ее два раза определять??
float B2[8][8],A2[8][8],T[8][8],U[8][8],Res[8][8];
отсюда Res[8][8] удали.
Slav1991
0 / 0 / 1
Регистрация: 07.01.2010
Сообщений: 44
11.03.2010, 20:59  [ТС]     Вычислить матрицу по двум другим #14
где тут ошибка?С файла не читает и проверка N>8 не выполняется
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
#include<stdio.h>
#include <conio.h>
 
void VVOD(float Matrix[8][8],int M);
void VYVOD(float Matrix[8][8],int M);
void MINUS(float Matrix1[8][8],float Matrix2[8][8],float RES[8][8],int M);
void PLUS(float Matrix1[8][8],float Matrix2[8][8],float RES[8][8],int M);
void UMNOGENIE(float Matrix1[8][8],float Matrix2[8][8],float RES[8][8],int M);
void DEISTVIE(float Matrix1[8][8],float Matrix2[8][8],float RES[8][8],int M);
 
 
int main()
{
int N,Pr,i,j;FILE *f;
float A[8][8],B[8][8],C[8][8];
 
     printf("Vvedite Priznak=1-dannye iz faila!; Priznak=2-dannye s klaviatury! \n");
      printf("Priznak="); scanf("%d",&Pr);
      if(Pr==2)
     {
         printf("Vvedite Razmernost Matric N*N \n");
         printf("N=");scanf("%d",&N);
         printf("Vvedite Matritsu A \n");
         VVOD(A,N);
        printf("Vvedite Matritsu B \n");
         VVOD(B,N);
     }
 
     if(Pr==1)
     { f=fopen("D:\\abc.txt","r");
         while(!feof(f))
        {
            fscanf(f,"%d\n",&N); printf("N=%d\n",N);
                 for(i=0;i<N;i++)
                        for(j=0;j<N;j++)
                          fscanf(f,"%f\t",&A[i][j]);
                        for(i=0;i<N;i++)
                        for(j=0;j<N;j++)
                            fscanf(f,"%f\t",&B[i][j]);
     }
        fclose(f);
     }
 
if(N>8)
{ printf("Nedopustimo Bolshaya Razmernost! Vvedite razmernost <=8*8 \n"); return 0;}
 
 
getch();
 
printf("Matritsa A \n");
VYVOD(A,N);
printf("Matritsa B \n");
VYVOD(B,N);
DEISTVIE(A,B,C,N);
 
return 0;
}
 
 
 void VVOD(float Matrix[8][8],int M)
 {
     int i,j;
     for(i=0;i<M;i++)
         for(j=0;j<M;j++)
             scanf("%f",&Matrix[i][j]);
 
 }
 
 void VYVOD(float Matrix[8][8],int M)
 {
      int i,j;
     printf("Vyvod Matritsu \n");
      for(i=0;i<M;printf("\n"),i++)
         for(j=0;j<M;j++)
             printf("%5.2f   \t" ,Matrix[i][j]);
 }
 
 
void MINUS(float Matrix1[8][8],float Matrix2[8][8],float RES[8][8],int M)
{
    int i,j;
     for(i=0;i<M;i++)
         for(j=0;j<M;j++)
             RES[i][j]=Matrix1[i][j]-Matrix2[i][j];
 
 
}
void PLUS(float Matrix1[8][8],float Matrix2[8][8],float RES[8][8],int M)
{
    int i,j;
     for(i=0;i<M;i++)
         for(j=0;j<M;j++)
             RES[i][j]=Matrix1[i][j]+Matrix2[i][j];
 
 
}
void UMNOGENIE(float Matrix1[8][8],float Matrix2[8][8],float RES[8][8],int M)
{
    int i,j,k;
     for(i=0;i<M;i++)
         for(j=0;j<M;j++)
             for(RES[i][j]=0,k=0;k<M;k++)
                 RES[i][j]+=Matrix1[i][k]*Matrix2[k][j];
}
void UMNOGENIE_Na_Chislo(float Matrix[8][8],int Chislo,float RES[8][8],int M)
{
    int i,j;
     for(i=0;i<M;i++)
         for(j=0;j<M;j++)
             RES[i][j]=Matrix[i][j]*Chislo;
}
 
void DEISTVIE(float Matrix1[8][8],float Matrix2[8][8],float RES[8][8],int M)
{
 
float B2[8][8],A2[8][8],T[8][8],U[8][8];
FILE *g;
int i,j;
UMNOGENIE(Matrix2,Matrix2,B2,M);
 
MINUS(Matrix1,B2,T,M);
 
UMNOGENIE_Na_Chislo(Matrix1,2,A2,M);
 
PLUS(A2,Matrix2,U,M);
PLUS(T,U,RES,M);
printf("Vyvod Matrici C: C=(A-B*B)+(2*A+B) \n");
VYVOD(RES,M);
g=fopen("D:\\abc.txt","a");
         if(g!=0)
        {   fprintf(g,"\n");
            for(i=0;i<M;fprintf(g,"\n"),i++)
 
                for(j=0;j<M;j++)
                    fprintf(g,"%5.2f   \t" ,RES[i][j]);
        }
fclose(g);
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2010, 21:52     Вычислить матрицу по двум другим
Еще ссылки по теме:

Вычислить матрицу С, являющуюся суммой матриц А и В - C++
Вычислить матрицу С(N,N), являющуюся суммой матриц А(N,N) и В(N,N). Матрица А задана, а элементы матрицы B вычисляются по формуле b i j...

Вычислить матрицу А в n-степени, где n - натуральное число - C++
Вычислить матрицу А в n-степени, где n - натуральное число. Запутался, что писал дальше, помогите, пожалуйста. #include&lt;iostream&gt; ...

Вычислить матрицу D по заданному в варианте матричному выражению - C++
Заданы матрицы А, В, С максимальной размерности (20, 20). Вычислить матрицу D по заданному в варианте матричному выражению. Предусмотреть...

Ввести матрицу A(6, 6) и вычислить среднее значение каждой строки - C++
Ввести матрицу A(6, 6) и вычислить среднее значение каждой строки.


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

Или воспользуйтесь поиском по форуму:
Slav1991
0 / 0 / 1
Регистрация: 07.01.2010
Сообщений: 44
18.03.2010, 21:52  [ТС]     Вычислить матрицу по двум другим #15
помогите найти максимальный элемент матрицы.Оформить в виде функции

Добавлено через 14 минут
помогите кто-нидь

Добавлено через 12 минут
help!!!
Yandex
Объявления
18.03.2010, 21:52     Вычислить матрицу по двум другим
Ответ Создать тему
Опции темы

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