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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2008, 16:51   #1
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
Смущение квадратная матрица паскаль.

Задание:Создайте класс КВАДРАТНАЯ ЦЕЛОЧИСЛЕННАЯ МАТРИЦА. Обязательны функции-члены класса для ввода/вывода матрицы, вычисления следа матрицы и ее определителя.
Моя попытка
Код:
program matrica;
uses crt;
type

matr = object
opr,sl,nn : integer;

procedure vvod(var n : integer);
procedure vivod(var n : integer);
{procedure opred(var o : integer);}
procedure sled(var s : integer);
end;

procedure matr.vvod(var n : integer);
var a: array [1..n, 1..n] of integer;
i,j : integer;

For I:=1 to n do
	For J:=1 to n do
	Begin
write ('vvedite razmer matrici', n); readln(n);
Write('Vvedite ',j,'element',i,'stroki matrici: ');
		ReadLn(A[I,J]);
	End;

end;

procedure matr.vivod(var n : integer);
begin
write(a[i,j]:6:2);
 writeln;
end;

prosedure Sled(a:array...):integer;

var i:integer;
s:real;
Begin
s:=0;
for i:=1 to n do 
s:=s+a[i,i];
writeln (s);
End;
var m: matr;
begin
matr.vvod;
readkey;
matr.vivod;
readkey;
matr.sled;
readkey;
end.
ругается на конструкцию var a: array [1..n, 1..n] of integer;
и совершенно не знаю как искать определитель если у меня размеры матрицы меняются.подскажите пожалуйста.
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 01.12.2008, 17:31   #2
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

К сожалению в придложенной Вами конструкции n должна быть константой =\. В паскале не уверен, но в Delphi матрицу произвольного размера объявляют так:
Код:
a:array of array of integer;
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 01.12.2008, 17:58   #3
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

И в процедуре массив передается от 0 до n-1
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 01.12.2008, 17:59   #4
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

Это называется динамический массив, в паскале в объявлении переменных в начале программы объявите n константой, далее по ходу решения сможете поменять на нужное, насколько я помню это делалось так 8)
Zeraim вне форума Ответить с цитированием
Старый 01.12.2008, 23:25   #5
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

а как вычислить определить матрицы если я точно не заю какую цифру введет пользоваель?
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 02.12.2008, 09:29   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Барби, в общем, существуют два подхода.
Один простой (и соответственно, наиболее распространнёный), второй - эффективный, но сложный.

Первый - объявить массив заведомо Большего размера, чем это может потребоваться (часто в условиях задачи указывают - дано N чисел ( 0<N<1000)
тогда делаем так:
Код:
Const n = 1000;
Type MyMas : array[1..N] of Integer;
...
Mas : MyMas;
K    : Integer;
begin
  WriteLn;
  repeat
    Write('ввведите размер массива:');
    Readln(K);
    if Not ((K>=1) and (K<=N)) then WriteLn('Неверный диапазон (число должно быть от 1 до ',N:1);
  until (K>=1) and (K<=N);
а второй способ - динамическое создание массива. В Delphi можно использовать динамический массив.
В Pascal - работать через указатели и выделение памяти...

выбирайте...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.12.2008, 10:11   #7
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

ну я по простому пути пойду. только я даже не помню как определитель считать. в яндексе посмотрела какие то ряды вычеркиваются столбцы, дуть, но придется вспоминать первый курс.
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 02.12.2008, 12:44   #8
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию

Определитель матрицы можно подчитать при помощи рекурсивной формулы.
Изображения
Тип файла: gif p025.gif (1.3 Кб, 153 просмотров)
bullvinkle вне форума Ответить с цитированием
Старый 02.12.2008, 14:17   #9
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

не могу сказать что мне эта формула помогла ибо по матрицам не помню практически ничего в том числе и для чего нужен определитель, но все равно спасибо.
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 02.12.2008, 14:33   #10
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию

Если ты мне покажешь как написать функцию, параметром которой есть двумерный массив (чет никак не получается парвильно ее написать), например, пусть функция считает сумму всех элементов матрицы, я напишу тебе функцию, считающую определитель матрицы по этой рекурсивной.
bullvinkle вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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