Страница 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. по поводу памяти немного не понял.Если в условии ничего не сказано то я так понимаю любое.. :confused:

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_
Помогите!Меня же завтра съедят!!!
записывая в него сначала строки,затем столбцы,содержащие минимальные элементы
Вот этот момент очень интересует :confused:

Re: Процедуры и функции:Матрицы.

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