Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 22:02   #1
Ledom
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 66
Восклицание оригинальный алгоритм сложения элементов матрицы

помогите пожалуйста составить алгоритм нахождения суммы элементов квадратной матрицы, необходимые элементы закрашены красным, рисунок во вложении.
спасибо)
Изображения
Тип файла: jpg Kvadrat.jpg (38.3 Кб, 142 просмотров)
Ledom вне форума Ответить с цитированием
Старый 01.12.2010, 01:37   #2
Ledom
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 66
По умолчанию

если долго мучатся что-нибудь получиться)
написал алгоритм считает правильно, возможно не самый простой вариант, но увы до другого не дошел...
написал через копирование элементов одного из треугольника, затем транспонирование основной матрицы и сложение с матрицей с копией треугольником, далее нахожу сумму элементов матрицы лежащих на и ниже главной диагонали....
вот так... может кто-нибудь предложит как-то упростить?
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
unsigned char i,j,N,K;
float S=0,A[10][10],B[10][10],At[10][10],C[10][10];
clrscr();
printf("Vvedite razmernost' kvadratnoy matricu: ");
scanf ("%d",&N);
if(N%2==0)K=N/2;
else K=(N+1)/2;
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
	{
	printf("vvedite element matricu A[%d,%d]: ",i,j);
	scanf("%f",&A[i][j]);
	}
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
if(i>=j) B[i][j]=A[i][j];
else B[i][j]=0;

for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
if(i+j>N+1)B[i][j]=0;

for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
At[i][j]=A[j][i];

for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
{
if(i+j<N+1) At[i][j]=0;
if((i==K)&&(i==j)) At[i][j]=0;
}

for(i=1;i<=N;i++)
{C[i][j]=0;
for(j=1;j<=N;j++)
C[i][j]=B[i][j]+At[i][j];
}

for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
if(i>=j)S=S+C[i][j];
printf("\nS=%-5.2f",S);
getch();
}
Ledom вне форума Ответить с цитированием
Старый 01.12.2010, 01:56   #3
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

А мож так попробовать
Код:
sum := 0;
//это для левого
for (j = 0; j < n/2; j ++)
{
     for(i = j; i < (n - j); i++)
     sum += matrix[i][j];
}
//это для правого
for (j = n-1; j > (n/2+1); j--)
{
     for(i = (n-j -1); i < (j + 1); i++)
     sum += matrix[i][j];
}
Ну примерно глянь мож доработаешь
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 01.12.2010, 20:54   #4
Ledom
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 66
По умолчанию

спасибо, так сразу не пришло... но еще погляжу... может ченить придумаю)
Ledom вне форума Ответить с цитированием
Старый 04.12.2010, 00:36   #5
Ledom
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 66
По умолчанию

нашел более рациональный вариант может кому поможет:
Код:
if(N1%2!=0) { //N1 размерность квадратной матрицы
	     K=(N1-1)/2;//проверка на четность для нахождения индекса элемента на пересечении диагоналей 
	      for(j=0;j<N1;j++)
		for (i=0;i<N1;i++)
		    if(j<=K)
			{
			if((i>=j)&&((i+j)<=(N1-1)))
			S+=X[i][j];
			}
		    else if((i<=j)&&((i+j)>=(N1-1))) S+=X[i][j];
	    }

  else {
	K=N1/2; // 
	for(j=0;j<N1;j++)
	 for (i=0;i<N1;i++)
	      if(j<K)
		    {
		     if((i>=j)&&(i+j<=N1-1))
		     S+=X[i][j];
		    }
	      else if((i<=j)&&(i+j>=N1-1)) S+=X[i][j];
       }
Ledom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма четных элементов матрицы. Произведение элементов 3-го столбца. Минимальный элемент матрицы. renovare Помощь студентам 2 03.07.2009 21:13
Найти максимальный из положительных элементов матрицы и сумму отрицательных элементов. bessonov12 Microsoft Office Excel 7 04.05.2009 05:44
количество элементов матрицы, больших среднего арифмитического всех её элементов finch Помощь студентам 3 27.08.2007 15:48
Найти отношения суммы элементов главной диагонали и суммы элементов побочной диагонали квадратной матрицы Elmander Помощь студентам 2 21.06.2007 07:15