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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Рекурсия, детерминант матрицы с помощью рекурсии
setare
сообщение 22.02.2005 19:26
Сообщение #1


Бывалый
***

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

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


Здравствуйте!
Нам дали задачу на определение детерминанта матрицы с помощью рекурсии и сказали что часть этой задачи можно посмотреть в учебнике. Эта часть состояла в вычеркивании столбца и строки. И как раз эта часть доставила нам очень много хлопот для понимания. Короче мы ничего не поняли. Не могли бы вы мне объяснить как они написали эту часть проги. Большое спасибо!

Код
procedure GetMatr(a:matr; var b:matr; m,i,j:integer);
{ Вычеркивание из матрицы строки и столбца }
var ki,kj,di,dj:integer;
 begin
 di:=0;
 for ki:=1 to m-1 do
   begin
   if (ki=i) then di:=1;
   dj:=0;
   for kj:=1 to m-1 do
     begin
     if (kj=j) then dj:=1;
     b[ki,kj]:=a[ki+di,kj+dj];
     end;
   end;
 end;


Что могут означать di dj и тд.?
Код должен быть в тегах


--------------------
Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 22.02.2005 20:21
Сообщение #2


Гость






Ну а если я перепишу эту процедуру вот так:
Код

procedure GetMatr(a:matr; var b:matr; m,i,j:integer);
 var ki,kj:integer; curr_i, curr_j: integer;
 begin
   curr_i := 1;
   for ki := 1 to m do begin
     if ki <> i then begin
       curr_j := 1;
       for kj := 1 to m do begin
         if kj <> j then begin
           b[curr_i, curr_j] := a[ki, kj];
           curr_j := curr_j + 1;
         end;
       end;
       curr_i := curr_i + 1;
     end;
   end;
 end;

Алгоритм по-моему стал понятнее...
 К началу страницы 
+ Ответить 

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


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

 



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