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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2011, 19:41   #1
Ekvental
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 26
По умолчанию Матрица

Программу составлял не я. Вот условия по которым лна скомпилирована.
Программа формирует математический объект- матрицу- c задаваемой пользователем размерностью (n,n), в которой последовательно производит подсчёт значений элементов верхнего и нижнего символьных треугольников в сумме, и, в отдельном порядке, левого и правого символьных треугольников, также в сумме.
• Если полученная сумма верхнего и нижнего треугольников больше полученной суммы левого и правого треугольников, программа реформирует матрицу, осуществляя её поворот на 90 градусов относительно главной диагонали.
• Если полученная сумма верхнего и нижнего треугольников меньше полученной суммы левого и правого треугольников, программа обнуляет диагональные матричные элементы.

Подскажите пожалуйста, а как собственно определить эти левый и правый верхний и нижний треугольники в любой матрице? По какому принципу. (мне надо перед преподом отчитаться). Вот код на всякий случай.

Код:
program matrica;
uses crt;
Var
n,error:integer;
M : array[1..n,1..n] of integer;
       i,j,tmp : Integer;
      s1,s2 : Longint;
Label L1, L2;
Begin

  
{-----------------ввод количесва элементов массива ------------------}
L1:  clrscr;
writeln:
clrscr;
repeat
textcolor(white);
writeln(‘Задайте размерность матрицы M в интервале от 1 до 100:’);
{$i-}
readln(n);
error:=IOResult;
{$i+}
if (n<1) or (n<100) or (error<>0) then
begin
writeln;
textattr:=red;
writeln(‘Неверно задана размерность матрицы!’);
writeln(‘Пожалуйста, повторите ввод.’);
end;
until (n>1) and (n<100) and (error=0);
{--------------------ввод значений элементов массива----------------------}

	 clrscr;
textcolor(white);
      writeln;
         writeln(‘,Введите элементы матрицы M(‘,n,’,’,n,’)’);
      for i:=1 to n do
                for j:=1 to n do
                begin
                Write('M[',i,',',j,']=');
                Read(M[i,j]);
                end;
clrscr;
textcolor(white);
writeln(‘,Сформирована матрица M(‘,n,’,’,n,’)’);
for i:=1 to n do
        begin
        for j:=1 to n do
                write(M[i,j]:7);
        writeln;
        end;
s1:=0;
for i:=1 to n div 2 do
        for j:=i+1 to n-i do
begin
                s1:=s1+M[i,j]+M[n-i+1,j];
end;
s2:=0;
for j:=1 to n div 2 do
        for i:=j+1 to n-j do
begin
                s2:=s2+M[i,j]+M[i,n-j+1];
end;
textcolor(green);
writeln(‘,Сумма верхнего и нижнего треугольника :’,s1);
writeln(‘,Сумма левого и правого треугольника :’,s2);
if s1>s2 then
       begin
       for i:=1 to n do
                 for j:=i to n do
                        begin
                        tmp:=M[i,j];
                        M[i,j]:=M[j,i];
                        M[j,i]:=tmp;
                        end;
        for i:=1 to n div 2 do
                  for j:=1 to n do
                        begin
                        tmp:=M[i,j];
                        M[i,j]:=M[n-i+1,j];
                        M[n-i+1,j]:=tmp;
                        end;
       end
else
         for i:=1 to n do
                begin
                M[i,i]:=0;
                M[i,n-i+1]:=0;
                end;
clrscr;
textcolor(white);
writeln(‘,Преобразованная матрица M(‘,n,’,’,n,’)’);
for i:=1 to n do
        begin
        for j:=1 to n do
                write(M[i,j]:7);
        writeln;
end;
writeln(‘Нажмите Enter.’);
readln;
readln;
writeln;
textcolor(white);
clrscr;
textcolor(red);
  writeln(‘Желаете сформировать ещё одну матрицу? (Y-да, N-нет)’);
L2:
    case readkey of
    #89: goto L1;
    #121: goto L1;
    #78: exit;
    #110: exit;
end;
goto L2
End.
Ekvental вне форума Ответить с цитированием
Старый 18.04.2011, 20:18   #2
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Блин, почему никто не читает тему http://programmersforum.ru/showthread.php?t=70310, хотя там черным по белому написано МАТРИЦЫ...
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 18.04.2011, 20:54   #3
Ekvental
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 26
По умолчанию

ммм разве там есть про треугольники?
Ekvental вне форума Ответить с цитированием
Старый 19.04.2011, 03:20   #4
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Там есть условие нахождения элемента над/под главной/второстепенной диагональю.
Можно по аналогии добавить условие для треугольников.
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МАТРИЦА romanbor Общие вопросы C/C++ 1 15.12.2010 00:11
Матрица TigRon Помощь студентам 3 13.10.2010 00:48
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11
матрица Си++ xVeteRx Помощь студентам 6 07.05.2009 22:39