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

_d_D_
Сообщения: 18
Зарегистрирован: 13 дек 2008, 14:33

Помогите решить задачку пожалуйста!
Из матриц D(N,M) и Y(N,N) получить одномерный массив Z,записывая в него сначала строки,затем столбцы,содержащие минимальные элементы матриц D и Y
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Если минимальное значение встречается несколько раз, то надо взять строки/столбцы проходящие через первый минимальный, последний минимальный или каждый минимальный элемент
В последнем случае размерность массива Z будет переменной! Какой выделение памяти необходимо использовать? Статическое или динамическое?
И еще, для какой верчсии Pascal нужно решение?

Минимальным считается первый найденный мини
_d_D_
Сообщения: 18
Зарегистрирован: 13 дек 2008, 14:33

Для PascalABC. по поводу памяти немного не понял.Если в условии ничего не сказано то я так понимаю любое.. :confused:
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

_d_D_ писал(а):по поводу памяти немного не понял.
Если не поняли, то скорее всего нужно использовать статическое выделение.
А вообще память можно выделять динамически. Например, когда мы просто пишем в разделе описания переменных, что-то типа:
A:array[1..50] of integer;
, то сразу зарезервируется определенный (в зависимости от типа данных) размер памяти. Причем, после каких-то операций, если нам массив (в нашем случае) уже не нужен, память так и остается занятой. Но бывает случаи когда необходимо использовать память более рационально. Для этого можно описать указатель на какую-то переменную определенного типа или на адрес первого байта области памяти, в которой могут размещаться любые данные вне зависимости от типа. Каждый указатель размещается в сегменте данных или стеке (если он объявлен в подпрограмме) и занимает там 4 байта (все адреса хранятся в виде сегмент : смещение). Т.е. память первоначально выделится лишь под указатель, а под саму переменную после её создания. Если переменная нами больше не используется, мы можем освободить память, занимаемую переменной.
Опираясь на вышеизложенное наш массив можно описать так:
type А=array[1..50] of integer;
var massiv=^A;
Нет религии выше истины
_d_D_
Сообщения: 18
Зарегистрирован: 13 дек 2008, 14:33

Ну собственно да.Судя по всему статическое...
_d_D_
Сообщения: 18
Зарегистрирован: 13 дек 2008, 14:33

Я хотя бы на правильном пути? :)

Код: Выделить всё

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???
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Не совсем.
Во-первых, размер D M на N, A Y - N на N. Или в условии была опечатка?
Во-вторых, в PascalABC сушествуют динамические массивы, для которых можно определять их текущие размеры с помощью функции Length. Лучше написать процедуру для динамического массива. Она не будет зависеть от его размерности.
_d_D_
Сообщения: 18
Зарегистрирован: 13 дек 2008, 14:33

Нет всё правильно N на N.
Хм.А можно как-нибудь использовать статические массивы?А то не хотелось бы навлекать гнев преподователя и потом ещё отчитывать тонну теории по динамическим массивам. :(
К тому же уже порядком запутался...
_d_D_
Сообщения: 18
Зарегистрирован: 13 дек 2008, 14:33

Помогите!Меня же завтра съедят!!!
записывая в него сначала строки,затем столбцы,содержащие минимальные элементы
Вот этот момент очень интересует :confused:
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Учи динамические структуры данных!
Нет религии выше истины
Ответить