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

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

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

Восстановить пароль

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

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

Дана вещественная матрица D размером 8х12. Сформировать одномерный массив, состоящий из номеров столбцов, элементы которых образуют возрастающую последовательность. Для проверки одного столбца использовать функцию.
не могу понять где ошибка
Код:
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, 16:07   #2
iborisov
Пользователь
 
Регистрация: 09.12.2016
Сообщений: 13
По умолчанию

Попробуйте поиск ошибки начать с указания окончаний циклов по размерности массивов, а-то у вас
Код:
type matr=array [1..8,1..12] of integer;
и 
  for i:=1 to 3 do  begin
  for j:=1 to 3 do begin
2. уберите else (break) при формировании выходного массива, а проверку на "Столбцов удовлетворяющих условию нет" сделайте отдельно, потому что узнать это можно только после окончания цикла формирования массива, например, примерно так:
Код:
 k:=0;
 for j:=1 to COL do
 begin
   if nom (a,j) then
   begin
     inc(k);
     b[k]:=j;
     write (b[k]:3, ' ');
   end;
 end;

 if k=0 then
 begin
   writeln ('Столбцов удовлетворяющих условию нет');
 end;
iborisov вне форума Ответить с цитированием
Ответ


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



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