Страница 1 из 3
Процедуры и функции:Матрицы. PascalABC
Добавлено: 14 мар 2009, 12:16
_d_D_
Помогите решить задачку пожалуйста!
Из матриц D(N,M) и Y(N,N) получить одномерный массив Z,записывая в него сначала строки,затем столбцы,содержащие минимальные элементы матриц D и Y
Re: Процедуры и функции:Матрицы.
Добавлено: 14 мар 2009, 12:54
Naeel Maqsudov
Если минимальное значение встречается несколько раз, то надо взять строки/столбцы проходящие через первый минимальный, последний минимальный или каждый минимальный элемент
В последнем случае размерность массива Z будет переменной! Какой выделение памяти необходимо использовать? Статическое или динамическое?
И еще, для какой верчсии Pascal нужно решение?
Минимальным считается первый найденный мини
Re: Процедуры и функции:Матрицы.
Добавлено: 14 мар 2009, 13:00
_d_D_
Для PascalABC. по поводу памяти немного не понял.Если в условии ничего не сказано то я так понимаю любое..

Re: Процедуры и функции:Матрицы.
Добавлено: 14 мар 2009, 14:04
dr.Jekill
_d_D_ писал(а):по поводу памяти немного не понял.
Если не поняли, то скорее всего нужно использовать статическое выделение.
А вообще память можно выделять динамически. Например, когда мы просто пишем в разделе описания переменных, что-то типа:
A:array[1..50] of integer;
, то сразу зарезервируется определенный (в зависимости от типа данных) размер памяти. Причем, после каких-то операций, если нам массив (в нашем случае) уже не нужен, память так и остается занятой. Но бывает случаи когда необходимо использовать память более рационально. Для этого можно описать указатель на какую-то переменную определенного типа или на адрес первого байта области памяти, в которой могут размещаться любые данные вне зависимости от типа. Каждый указатель размещается в сегменте данных или стеке (если он объявлен в подпрограмме) и занимает там 4 байта (все адреса хранятся в виде сегмент : смещение). Т.е. память первоначально выделится лишь под указатель, а под саму переменную после её создания. Если переменная нами больше не используется, мы можем освободить память, занимаемую переменной.
Опираясь на вышеизложенное наш массив можно описать так:
type А=array[1..50] of integer;
var massiv=^A;
Re: Процедуры и функции:Матрицы.
Добавлено: 14 мар 2009, 16:43
_d_D_
Ну собственно да.Судя по всему статическое...
Re: Процедуры и функции:Матрицы.
Добавлено: 15 мар 2009, 13:16
_d_D_
Я хотя бы на правильном пути?
Код: Выделить всё
Program NN;
const
Nmax=10;
Mmax=15;
type
Tmatr=array[1..Nmax,1..Mmax] of integer;
var
D,Y:Tmatr;
Na,Ma,Nb,Mb,iA,jA,iB,jB:byte;
Procedure EnterMatr (var Matr:tmatr, var N,M:byte ch:char ;)
var i,j:byte;
begin
writeln('Vvedite razmer matrici:',ch);
write('Kolichestvo strok:');
readln('N');
write('Kolichestvo stolbcov:');
readln('M');
for i:=1 to N do
for j:=1 to M do
begin
write(ch,'[',i,',',j,']=');
readln(matr[i,j]);
end
end;
Procedure Minimum (const Matr:tmatr; N,M:byte;var imax,jmax:byte);
Var
i,j:byte;
min:integer;
begin
min:=matr[1,1];
imax:=1;
jmax:=1;
for i:=1 to N do
for j:=1 to M do
if matr[i,j]<min then
begin
min:=matr[i,j];
imax:=i;
jmax:=j;
end
end;
Function???
Re: Процедуры и функции:Матрицы.
Добавлено: 15 мар 2009, 13:54
Naeel Maqsudov
Не совсем.
Во-первых, размер D M на N, A Y - N на N. Или в условии была опечатка?
Во-вторых, в PascalABC сушествуют динамические массивы, для которых можно определять их текущие размеры с помощью функции Length. Лучше написать процедуру для динамического массива. Она не будет зависеть от его размерности.
Re: Процедуры и функции:Матрицы.
Добавлено: 15 мар 2009, 14:21
_d_D_
Нет всё правильно N на N.
Хм.А можно как-нибудь использовать статические массивы?А то не хотелось бы навлекать гнев преподователя и потом ещё отчитывать тонну теории по динамическим массивам.

К тому же уже порядком запутался...
Re: Процедуры и функции:Матрицы.
Добавлено: 15 мар 2009, 19:34
_d_D_
Помогите!Меня же завтра съедят!!!
записывая в него сначала строки,затем столбцы,содержащие минимальные элементы
Вот этот момент очень интересует

Re: Процедуры и функции:Матрицы.
Добавлено: 15 мар 2009, 19:39
dr.Jekill
Учи динамические структуры данных!