Цитата(Ghost_V @ Jan 5 2009, 15:11)

......а мне именно декодер только нужен. ( расжимать)
#include <stdlib.h>
int *temp_multiply_matrix_place, temp_multiply_matrix_place_x, temp_multiply_matrix_place_y;
void copy_matrix(temp_multiply_matrix_place, size_x_b, size_y_a, result)
int *temp_multiply_matrix_place, size_x_b, size_y_a, *result;
{
int i,j,accum;
for(i=0, accum=0; i<size_y_a; i++)
{
for(j=0;j<size_x_b;j++)
{
result[accum+j] = temp_multiply_matrix_place[accum+j];
}
accum+=size_x_b;
}
}
void mul_matrix(a, size_x_a, size_y_a, b, size_x_b, size_y_b, result)
int *a,*b, *result, size_x_a, size_y_a, size_x_b, size_y_b;
{
int i,j,k, row_accum_1,row_accum_2,row_accum_3, sum_num;
sum_num = (size_x_a<size_y_b)?size_x_a:size_y_b;
if(a!=result && b!=result)
{
for(i=0, row_accum_1 = 0, row_accum_2=0; i<size_y_a; i++)
{
for(j=0; j<size_x_b; j++)
{
result[row_accum_2+j] = 0;
for(k=0, row_accum_3=0;k<sum_num;k++)
{
result[row_accum_2+j] += a[row_accum_1+k]*b[row_accum_3+j];
row_accum_3+=size_x_b;
}
}
row_accum_1+=size_x_a;
row_accum_2+=size_x_b;
}
}
else
{
mul_matrix(a, size_x_a, size_y_a, b, size_x_b, size_y_b, temp_multiply_matrix_place);
copy_matrix(temp_multiply_matrix_place, size_x_b, size_y_a, result);
}
}
int main()
{
temp_multiply_matrix_place_x = 10;
temp_multiply_matrix_place_y = 10;
temp_multiply_matrix_place = calloc(temp_multiply_matrix_place_x,temp_multiply_matrix_place_y);
/*
int a[3][2] = {{1,2},{3,2},{1,3}};
int b[2][3] = {{1,2,3},{3,2,1}};
int c[3][3] = {{0,0,0},{0,0,0},{0,0,0}};
mul_matrix(a, 2,3,b,3,2,c);
*/
int a[3][3] = {{1,2,3},{3,2,1},{1,3,2}};
int b[3][3] = {{1,2,3},{3,2,1},{2,2,2}};
mul_matrix(a, 3,3,b,3,3,a);
free(temp_multiply_matrix_place);
return 0;
}
вот..... на "ЛАБУ" похоже, но я тоды только учился