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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2008, 21:53   #1
Colette
Новичок
Джуниор
 
Аватар для Colette
 
Регистрация: 26.05.2008
Сообщений: 2
По умолчанию Помогите с задачками о матрицах((

Здравствуйте! Помогите пожалуйста решить 2 задачки..всю голову уже сломала(((
1. Определить и напечатать суммы элементов квадратной матрицы (двумерный массив nxn, где n - четное число), расположенных параллельно главной диагонали, исключая ее;
2. Разработать функцию для вычисления определителя матрицы 3-го порядка (видела тут похожие задачи по методу Гаусса, но это не подходит((
заранее спасибо
Colette вне форума Ответить с цитированием
Старый 26.05.2008, 22:48   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вам крупно повезло, что я на форуме и у меня есть решения этих задач, так что держите.
Код:
program matrica;
uses crt;
var n,i,j,l,m:integer;
    a:array[1..20,1..20]of integer;
    b,c:array[1..20]of integer;
begin
clrscr;
write('n=');readln(n);
randomize;
Writeln('Ishodnaja matrica:');
for i:=1 to n do
   begin
     for j:=1 to n do
         begin
           a[i,j]:=random(10);
           write(a[i,j]:3);
         end;
      writeln;
   end;
readln;
for l:=1 to n-1 do  //диагонали выше главной
   begin
     for i:=1 to n-1 do
       begin
         for j:=2 to n do
         if j=i+l then
            begin
              b[l]:=b[l]+a[i,j];//записываем суммы в массив
            end;
       end;
  end;
for l:=1 to n-1 do  //ниже главной
   begin
     for i:=2 to n do
       begin
         for j:=1 to n-1 do
         if j=i-l then
           begin
             c[l]:=c[l]+a[i,j];//в другой массив
          end;
       end;
  end;
writeln('Summy po diagonaliam parallelnyh glavnoj:');
for i:=n-1 downto 1 do//массив ниже выводим задом наперед
write(c[i],' ');
for i:=1 to n-1 do  //массив выше - нормально
write(b[i],' ');
readln;
end.


program opred;
uses crt;
const n=3;
type
   Tmatr=array [1..n,1..n] of real;
var a:Tmatr;
    det:real;//определитель
//процедура перестановки строк, чтобы главный элемент не оказался 
//нолем или близким к нулю значением
procedure Per(k,n:integer;var a:Tmatr; var p:integer);
var i,j:integer;z:real;
begin
   z:=a[k,k];i:=k;p:=0;
   for j:=k+1 to n do
     begin
       if abs(a[j,k])>z then
          begin
            z:=abs(a[j,k]);i:=j;
            p:=p+1;//считаем количество перестановок, т.к. при каждой 
                    //перестановке меняется знак определителя
          end;
     end;
   if i>k then
   for j:=k to n do
     begin
       z:=a[i,j];a[i,j]:=a[k,j];a[k,j]:=z;//перестановка
     end;
end;
function znak(p:integer):integer;//ф-я определения знака определителя
begin
if p mod 2=0 then //если четное количество перестановок, "+" , если нет "-"
znak:=1 else znak:=-1;
end;
procedure opr(n:integer;var a:Tmatr;var det:real);//собственно определитель
var k,i,j,p:integer;
    r:real;
begin
det:=1;
for k:=1 to n do  //считаем по алгоритму, который во всех учебниках 
   begin
     if a[k,k]=0 then per(k,n,a,p);
     det:=znak(p)*det*a[k,k];
     for j:=k+1 to n do
       begin
         r:=a[j,k]/a[k,k];
         for i:=k to n do
           begin
             a[j,i]:=a[j,i]-r*a[k,i];
           end;
       end;
   end;
end;
begin
clrscr;
opr(n,a,det);
write('opr=',det:4:0);
readln
end.
puporev вне форума Ответить с цитированием
Старый 27.05.2008, 09:37   #3
Colette
Новичок
Джуниор
 
Аватар для Colette
 
Регистрация: 26.05.2008
Сообщений: 2
Хорошо

спасииииииибоо!!
Colette вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с задачками SYL@R Помощь студентам 9 09.06.2008 18:49
Помогите с задачками Mi$ter Фриланс 1 15.05.2008 09:59
Помогите с задачками lexIS Помощь студентам 0 05.12.2007 23:17
Помогите с задачками OlgaMiller Общие вопросы C/C++ 25 25.10.2007 21:05
Помогите пожалуйста с 2-мя задачками Shatyn Помощь студентам 1 13.06.2007 15:42