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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2008, 17:56   #31
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

счастью нет предела, еще переделала чтоб с клавиатуры вводить матрицу,обавила процедуру для подсчета следа и все работает. Спасибо огромное всем. и всем приятных выходных.
Alex_fcsm, тебе отдельное огромное спаисбо что мучался со мной.
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 05.12.2008, 17:57   #32
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Пользуйся почаще отладчиком(F7) и проблем будет меньше
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 09.12.2008, 13:59   #33
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

Препод потребовала убрать у процедур переменные из скобок. Если для процдур принт и гетматр я переместила переменные внутрь и все отлично скомпилировалось, то для инит и детерминанта когда убираю переменные сос кобками и вношу их внутрь перестает работать и выводит матрицу с детерминантом. Подскажите пожалуйста как правильно убрать скобки с переменными.
Код:
program mtr;

type

matr=array[1..13,1..13] of longint;
matrix=object
 b,m:matr;
   o, dt:longint;
    n:integer;


procedure init(n1:integer;b1,m1:matr;o1,j1,i1:longint);
procedure vvod;
procedure printMatr;
procedure GetMatr;
Function Determinant(a:matr;n1:integer):double;
procedure sled;

    end;
procedure matrix.init(n1:integer;b1,m1:matr;o1,j1,i1:longint);
var

i,j:longint;
begin
n:=n1;
b:=b1;
m:=m1;
o:=o1;
i:=i1;
j:=j1;
end;
procedure matrix.PrintMatr;


var i,j:integer;
m1:matr;n1:integer;
  begin
  for i:=1 to n do
    begin
    for j:=1 to n do
      write(m[i,j]:3);
    writeln;
    end;
  end;
procedure matrix.GetMatr;
var ki,kj,di,dj:integer;
m1:matr; var b1:matr; o1,i1,j1:integer;
i,j:longint;

  begin
  di:=0;
  for ki:=1 to o-1 do
    begin
    if (ki=i) then di:=1;
    dj:=0;
    for kj:=1 to o-1 do
      begin
      if (kj=j) then dj:=1;
      b[ki,kj]:=m[ki+di,kj+dj];
      end;
    end;
  end;


Function matrix.Determinant(a:matr;n1:integer):double;
var   d: double;
  i: integer;
   b1: array[1..13] of boolean;
procedure thread(p:real; e,i: integer);
var
  j,f,z: integer;
begin
  if odd(e) then z:=-1 else z:=1;
  if i > n1 then d:=d+p*z else
    if p <> 0 then begin
      f:=0;
      for j:=n1 downto 1 do
        if b1[j] then f:=f+1 else begin
          b1[j]:=true;
          thread(p*m[i,j],e+f,i+1);
          b1[j]:=false;
        end;
    end;
end;
begin
  for i:=1 to n1 do b1[i]:=false;
  d:=0; thread(1,0,1);
  determinant:=d;
end;


procedure matrix.vvod;
var

    i,j:longint;

begin

{randomize;}
repeat
{writeln('Vvedite razmer matrici');
readln(n);}
until n<14;
for i:=1 to n do
for j:=1 to n do

read(m[i,j]);
  {m[i,j]:=random(5);}
{matrix.PrintMatr(m,n);}
end;
procedure matrix.sled;
var i,j,sl:integer;
begin
	sl:=0;
	for i:=1 to n do
	for j:=1 to n do
	if (i=j) then 	 sl:=sl+m[i,j];
        writeln;
        writeln('sled=',sl);
end;

var
mat:matrix;
 b1,m1:matr;
   o1, i1,j1,dt:longint;
    n1,d:integer;
begin
writeln('vvedite razmer matrici');
read(n1);
mat.init(n1,b1,m1,o1,j1,i1);

mat.vvod;


mat.GetMatr;
mat.PrintMatr;
writeln('=========');
writeln('Determinant=',mat.Determinant(m1,n1):1:0);
readln;
mat.sled;
readln;
end.
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 09.12.2008, 14:29   #34
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Так пойдет?
Код:
program mtr;

type

matr=array[1..13,1..13] of longint;
    matrix=object
    b,m:matr;
    o,dt:longint;
    n:integer;


{procedure init(n1:integer;b1,m1:matr;o1,j1,i1:longint);}
procedure vvod;
procedure printMatr;
procedure GetMatr;
Function Determinant(a:matr;n1:integer):double;
procedure sled;

    end;
{function matrix.init(n1:integer;b1,m1:matr;o1,j1,i1:longint);
var

i,j:longint;
begin
n:=n1;
b:=b1;
m:=m1;
o:=o1;
i:=i1;
j:=j1;
end;}

procedure matrix.PrintMatr;
var i,j:integer;
m1:matr;n1:integer;
  begin
  for i:=1 to n do
    begin
    for j:=1 to n do
      write(m[i,j]:3);
    writeln;
    end;
  end;
procedure matrix.GetMatr;
var ki,kj,di,dj:integer;
m1:matr; var b1:matr; o1,i1,j1:integer;
i,j:longint;

  begin
  di:=0;
  for ki:=1 to o-1 do
    begin
    if (ki=i) then di:=1;
    dj:=0;
    for kj:=1 to o-1 do
      begin
      if (kj=j) then dj:=1;
      b[ki,kj]:=m[ki+di,kj+dj];
      end;
    end;
  end;


Function matrix.Determinant(a:matr;n1:integer):double;
var   d: double;
  i: integer;
   b1: array[1..13] of boolean;
procedure thread(p:real; e,i: integer);
var
  j,f,z: integer;
begin
  if odd(e) then z:=-1 else z:=1;
  if i > n1 then d:=d+p*z else
    if p <> 0 then begin
      f:=0;
      for j:=n1 downto 1 do
        if b1[j] then f:=f+1 else begin
          b1[j]:=true;
          thread(p*m[i,j],e+f,i+1);
          b1[j]:=false;
        end;
    end;
end;
begin
  for i:=1 to n1 do b1[i]:=false;
  d:=0; thread(1,0,1);
  determinant:=d;
end;


procedure matrix.vvod;
var

    i,j:longint;

begin

{randomize;}
repeat
{writeln('Vvedite razmer matrici');
readln(n);}
until n<14;
for i:=1 to n do
for j:=1 to n do

read(m[i,j]);
  {m[i,j]:=random(5);}
{matrix.PrintMatr(m,n);}
end;
procedure matrix.sled;
var i,j,sl:integer;
begin
	sl:=0;
	for i:=1 to n do
	for j:=1 to n do
	if (i=j) then 	 sl:=sl+m[i,j];
        writeln;
        writeln('sled=',sl);
end;

var
mat:matrix;
 b1,m1:matr;
    o1,i1,j1,dt:longint;
    n1,d:integer;
begin
writeln('vvedite razmer matrici');
read(n1);
{mat.init(n1,b1,m1,o1,j1,i1);}
mat.n:=n1;
mat.b:=b1;
mat.m:=m1;
mat.o:=o1;

mat.vvod;


mat.GetMatr;
mat.PrintMatr;
writeln('=========');
writeln('Determinant=',mat.Determinant(m1,n1):1:0);
readln;
mat.sled;
readln;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 09.12.2008, 14:37   #35
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

а без init матрица не выводится. самое максимум что смогла.
Код:
program mtr;

type

matr=array[1..13,1..13] of longint;
matrix=object
 b,m:matr;
   o, dt:longint;
    n:integer;


procedure init(n1:integer;m1:matr);
procedure vvod;
procedure printMatr;
procedure GetMatr;
Function Determinant(a:matr;n1:integer):double;
procedure sled;

    end;
procedure matrix.init(n1:integer;m1:matr);
var
b1:matr;o1,j1,i1:longint;
i,j:longint;
begin
n:=n1;
b:=b1;
m:=m1;
o:=o1;
i:=i1;
j:=j1;
end;
procedure matrix.PrintMatr;


var i,j:integer;
m1:matr;n1:integer;
  begin
  for i:=1 to n do
    begin
    for j:=1 to n do
      write(m[i,j]:3);
    writeln;
    end;
  end;
procedure matrix.GetMatr;
var ki,kj,di,dj:integer;
m1:matr; var b1:matr; o1,i1,j1:integer;
i,j:longint;

  begin
  di:=0;
  for ki:=1 to o-1 do
    begin
    if (ki=i) then di:=1;
    dj:=0;
    for kj:=1 to o-1 do
      begin
      if (kj=j) then dj:=1;
      b[ki,kj]:=m[ki+di,kj+dj];
      end;
    end;
  end;


Function matrix.Determinant(a:matr;n1:integer):double;
var   d: double;
  i: integer;
   b1: array[1..13] of boolean;
procedure thread(p:real; e,i: integer);
var
  j,f,z: integer;
begin
  if odd(e) then z:=-1 else z:=1;
  if i > n1 then d:=d+p*z else
    if p <> 0 then begin
      f:=0;
      for j:=n1 downto 1 do
        if b1[j] then f:=f+1 else begin
          b1[j]:=true;
          thread(p*m[i,j],e+f,i+1);
          b1[j]:=false;
        end;
    end;
end;
begin
  for i:=1 to n1 do b1[i]:=false;
  d:=0; thread(1,0,1);
  determinant:=d;
end;


procedure matrix.vvod;
var

    i,j:longint;

begin

{randomize;}
repeat
{writeln('Vvedite razmer matrici');
readln(n);}
until n<14;
for i:=1 to n do
for j:=1 to n do

read(m[i,j]);
  {m[i,j]:=random(5);}
{matrix.PrintMatr(m,n);}
end;
procedure matrix.sled;
var i,j,sl:integer;
begin
	sl:=0;
	for i:=1 to n do
	for j:=1 to n do
	if (i=j) then 	 sl:=sl+m[i,j];
        writeln;
        writeln('sled=',sl);
end;

var
mat:matrix;
 b1,m1:matr;
   o1, i1,j1,dt:longint;
    n1,d:integer;
begin
writeln('vvedite razmer matrici');
read(n1);
mat.init(n1,m1);

mat.vvod;


mat.GetMatr;
mat.PrintMatr;
writeln('=========');
writeln('Determinant=',mat.Determinant(m1,n1):1:0);
readln;
mat.sled;
readln;
end.
а как остальное счистить из скобок тогда же передача данных не будет осуществляться?
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 09.12.2008, 14:43   #36
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Я же не только процедуру закомментировал.

Код:
var
mat:matrix;
 b1,m1:matr;
    o1,i1,j1,dt:longint;
    n1,d:integer;
begin
writeln('vvedite razmer matrici');
read(n1);
{mat.init(n1,b1,m1,o1,j1,i1);}
mat.n:=n1;
mat.b:=b1;
mat.m:=m1;
mat.o:=o1;

mat.vvod;


mat.GetMatr;
mat.PrintMatr;
writeln('=========');
writeln('Determinant=',mat.Determinant(m1,n1):1:0);
readln;
mat.sled;
readln;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 09.12.2008, 15:14   #37
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

ааааааааааа, я щас с ума сойду, теперь училке захотелось ввести матрицу 15 на 15 и ее не волнует никакой стек и никакие мои попытки добавить надпись введите до 13. можно ли как то попроще изменить чтобы расширить матрицу или же надо писать огромедный код по предыдущей ссылке?

а куда делась чудо ссылочка про расширение стека и возможность ввода массива 1000*1000?
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 09.12.2008, 17:23   #38
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

ничего не получилось у меня с расширением матрицы, решила сделать так: если вводишь больше 13 то появляется надпись введете до 13 и снова просит ввести n. но у меня получается что после вывода этой фразы больше не просят ввести n, a я хочу чтобы цикл продолжился. подскажите как переправить
Код:
procedure matrix.vvod;
var

    i,j:longint;

begin

repeat

until n<14;
if (n > 13) then writeln('vvedi pomenwe!!!');
for i:=1 to n do
for j:=1 to n do

read(m[i,j]);
  {m[i,j]:=random(5);}
{matrix.PrintMatr(m,n);}
end;
procedure matrix.sled;
var i,j,sl:integer;
begin
	sl:=0;
	for i:=1 to n do
	for j:=1 to n do
	if (i=j) then 	 sl:=sl+m[i,j];
        writeln;
        writeln('sled=',sl);
end;
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 10.12.2008, 23:50   #39
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

ну как переправить
Код:
if (n > 13) then writeln('vvedi pomenwe!!!');
чтобы цикл продолжался?
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 11.12.2008, 00:41   #40
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Барби, я Вас не узнаю... на Вас это не похоже! Вы же прекрасно во всё разбираетесь! Или это я чего то не понял???

Код:
WriteLn('Vvedite razmer:');
repeat
 Readln(n); 
 if (n > 13) then writeln('vvedi pomenwe!!!');
 if (n <= 0) then writeln('vvedi pologitelnoe chislo!!!!');
until (n<=13) and (n>0);
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Квадратная матрица в Delphi Tomoyo Помощь студентам 10 12.11.2008 18:35
Квадратная матрица [C++Builder] conqueror Помощь студентам 1 28.10.2008 11:11
С++:Квадратная матрица и шахматная проблема.. Andres Помощь студентам 7 02.01.2008 21:06
Дана целочисленная квадратная матрица... kitty Помощь студентам 1 05.12.2007 07:40
Паскаль. Квадратная матрица Deimossy Помощь студентам 2 20.11.2007 13:23