Есть задание - получить транспонированную матрицу через хитрый такой алгоритм, но суть сейчас не в получении этой матрицы, а в реадизации одной из составляющих алгоритма - суммированию всех столбцов и нахождению наибольшей сумму. Суть в том, что я делаю некий цикл который должен в массив заносить сумму из полученных заранее индексов каждого столба в одномерном массиве, но он считает только один столбец, когда же я пытаюсь перевести его на суммирование каждого столбца и занесение значений в массив - вылетают несуразные ошибки, ассемблерные листинги и прочее ... поясните пожалуйста где я допустил оплошность...
#include <stdio.h>
#include <stdlib.h>
#define sym_null 0
#define max_step_k 10
#define matrix_size 4
static int all_size = 0;
static int global_count = 0;
int* once_matrix_func(void)
{
int* once_matrix;
int* main_deag;
int count_one = 0;
int count_two = 0;
int count_three = 0;
int start_position = 0;
float del;
all_size = matrix_size * matrix_size;
once_matrix = (int*)malloc(sizeof(int)*all_size);
main_deag = (int*)malloc(sizeof(int)*all_size);
for(count_one = 0; count_one < all_size; count_one += 1)
{
if (count_one == (start_position))
{
start_position = (start_position + matrix_size+1);
main_deag[count_three] = count_one;
count_three++;
once_matrix[count_one] = 1;
}
else
once_matrix[count_one] = 0;
}
printf("%s\n", "Our once matrix:");
for(count_two = 0; count_two < all_size; count_two +=1)
{
del = count_two % matrix_size;
if (del == 0)
{
printf("\n");
}
printf("%2d", once_matrix[count_two]);
}
return once_matrix;
}
int* matrix_eqw(int* matrix_one, int* matrix_two)
{
/* int count_one = 0;
int count_two = 0;
int count_three = 0;
int prom_perem = 0;
int* rezult_matrix;
rezult_matrix = (int*)malloc(sizeof(int)*all_size);
for(count_one = 0; count_one <= all_size; count_one +=1)
{
for (count_two = 0; count_two <= matrix_size; count_two +=1)
{
rezult_matrix[count_one] += matrix_two[prom_perem]*matrix_one[count_one];
prom_perem += matrix_size;
}
}
for(count_three = 0; count_three <= all_size; count_three +=1)
{
printf("%d\n", rezult_matrix[count_three]);
}
return rezult_matrix;*/
return 0;
}
/*
int maximum(int* once_matrix)
{
int count_one;
int count_two;
int max;
max = once_matrix[0];
for(count_one = 0; count_one <= matrix_size-1; count_one +=1)
{
if max < once_matrix[count_one]
}
}*/
int max_func(int* once_matrix)
{
int count_one = 0;
int count_two = 0;
int count_three = 0;
int count = 0;
int count2 = 0;
int max[255];
int once[255];
int vrem_count;
int mas_one[255];
int t = 0;
int j = 0;
int vrem = 0;
float del = 0.0;
for(count_one = 0; count_one <= all_size-1; count_one +=1)
{
mas_one[count_one] = 0;
once[count_one] = 1;
}
once[0] = 12;
once[4] = 5;
printf("\n");
printf("%d ", "Our matrix for mx by j:");
for(count_one = 0; count_one <= all_size-1; count_one +=1)
{
del = count_one % matrix_size;
if (del == 0)
printf("\n");
printf("%2d ", once[count_one]);
}
printf("\n");
printf("%s\n", "Elem of out matrix in columns: ");
for(count_one = 0; count_one <= matrix_size-1; count_one +=1)
{
count_three = count_one;
//if(count_one== 1) break;
while(count_three < all_size)
{
max[count] = count_three;
del = (count % matrix_size);
if (del == 0)
printf("\n");
printf("%d \n", max[count]);
count_three += matrix_size;
count++;
}
}
count_one = 0;
count2 = 0;
count_two = 1;
t = 0;
vrem = 0;
for(count_one = 0; count_one = 2; count_one +=1)
{
while (t != matrix_size)
{
vrem = max[count2];
j += once[vrem];
mas_one[global_count] = j;
printf("%d ", mas_one[count_one]);
count2++;
t++;
}
t = 0;
global_count++;
}
/*
printf("\n");
for(count_one = 0; count_one <= matrix_size; count_one +=1)
{
printf("%d ", mas_one[0]);
}*/
return 0;
}
int main(void)
{
int *once_matrix;
int count_one;
once_matrix = once_matrix_func();
matrix_eqw(once_matrix, once_matrix);
max_func(once_matrix);
scanf("%d");
return sym_null;
}