IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Работа с матрицами
Neonig
сообщение 9.10.2007 20:22
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Мужской

Репутация: -  -1  +


Здравствуйте.
Есть задание - получить транспонированную матрицу через хитрый такой алгоритм, но суть сейчас не в получении этой матрицы, а в реадизации одной из составляющих алгоритма - суммированию всех столбцов и нахождению наибольшей сумму. Суть в том, что я делаю некий цикл который должен в массив заносить сумму из полученных заранее индексов каждого столба в одномерном массиве, но он считает только один столбец, когда же я пытаюсь перевести его на суммирование каждого столбца и занесение значений в массив - вылетают несуразные ошибки, ассемблерные листинги и прочее ... поясните пожалуйста где я допустил оплошность...


#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;
}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 30.07.2025 4:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"