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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2016, 23:26   #1
Jon_Morgan
Пользователь
 
Регистрация: 11.12.2016
Сообщений: 26
По умолчанию Подпрограммы (free Packal)

Дана вещественная матрица D размером 8х12. Сформировать одномерный массив, состоящий из номеров столбцов, элементы которых образуют возрастающую последовательность. Для проверки одного столбца использовать функцию.
Не понимаю как должна выглядеть функция.
Jon_Morgan вне форума Ответить с цитированием
Старый 26.12.2016, 01:03   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,318
По умолчанию

Например так:
Код:
const n =12;
      m = 8; {или наоборот??}
Type Mymas = array[1..n,1..m] of real;

function MyFun(const Mas : Mymas; n : integer): boolean;
var  i : integer;
  flag : boolean;
begin
  flag := true;
  {в цикле по i проверяем соответствие столбца n требованию} 
  {если обнаруживается, что требование нарушено, то}
  {flag := false; Break;}
  MuFun := flag;
end;
...
...
Begin
...
{в теле программы проверяем условие и вписываем/не вписываем номер столбца в формируемый нами массив}
...
end.
Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 26.12.2016, 14:00   #3
Jon_Morgan
Пользователь
 
Регистрация: 11.12.2016
Сообщений: 26
По умолчанию

вот что вышло
Код:
Program main;
uses crt;
type matr=array [1..8,1..12] of integer;
   function nom(m:matr; j:integer):boolean;
   var i:integer; flag:boolean;
    begin
    flag:=true;
    for i:=1 to 3 do
    if m[i+1,j]>m[i,j] then nom:=flag
    else begin
      flag:=false;
      nom:=flag;
      break;
   end; end;
var b:array[1..12] of integer;
a:matr; i, j:integer;
begin
clrscr; randomize;
  for i:=1 to 3 do  begin
  for j:=1 to 3 do begin
  a[i,j]:=random(100);
  write (a[i,j]:3, ' ');
  end;
  writeln;
  end;
   for j:=1 to 3 do begin
   if nom (a,j) then begin  b[j]:=j;
   write (b[j]:3, ' ');
   end
   else begin
   writeln ('Столбцов удовлетворяющих условию нет');
   break;
  end; end;
 readln;
end.
Jon_Morgan вне форума Ответить с цитированием
Старый 26.12.2016, 19:15   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,318
По умолчанию

Немного критики:
Код:
const Col =12; {этой частью лучще не пренебрегать}
      Row = 8;
function nom(m:matr; j:integer):boolean;
var i:integer; flag:boolean;
begin
  flag:=true;
  for i:=1 to Row do        {тут было до 3, а почему?}
    if m[i+1,j]<m[i,j] then {Как только обнаружено нарушение}
    begin
      flag:=false;
      break;                {завершим цикл}
    end;
   nom := flag;             {и никаких лишних действий}
end;
В теле программы циклы тоже до 3, а почему?
Инициализацию массива тоже можно оформить процедурой, например:
Код:
procedure InitMatr(var m:Matr);
var i, j : integer;
begin
   for i:=1 to Row do
      for j:=1 to Col do
        a[i,j]:=random(100);
end;
Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подпрограммы (free Packal) Jon_Morgan Помощь студентам 2 26.12.2016 10:20
Массивы и подпрограммы / Free Pascal Ksyusha Помощь студентам 1 10.04.2014 20:37
Packal цыклы lunnamedl Помощь студентам 3 18.12.2009 18:20
Packal sorry HECTOR.A. Помощь студентам 1 08.12.2008 16:49
программа на Packal HECTOR.A. Помощь студентам 1 08.12.2008 16:12