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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2012, 22:00   #1
Bellatryx
Новичок
Джуниор
 
Регистрация: 15.04.2012
Сообщений: 1
Вопрос Пересечение множеств, паскаль

Всем привет. Вот задание, помогите.Необходимо найти общие элементы массива b, длиной l и строк матрицы a. Вот код, но там выдает ошибку "выход за границы диапазона изменения индекса 1..4", помогите это исправить.

Код:
const N=3;
      M=4;
type t_base=integer;
     t_arr=array [1..M]of t_base;
     t_matr=array[1..N,1..M]of t_base;
function inmatr(x:t_base;a:t_matr):boolean;
var i,j:integer;
    f:boolean;
begin
  i:=1;
  f:=true;
  while(f)and(i<=N)do
    begin
      j:=1;
      while(x<>a[i,j])and(j<=M)do
        inc(j);
      if j>M then
        f:=false;
      inc(i);
    end;
  inmatr:=f;
end;
var a:t_matr;
    b:t_arr;
    i,j,k,l:integer;
begin
  write('lenth<=',M);
  read(l);
  for i:=1 to l do
    read(b[i]);
  writeln('matr');
  for i:=1 to N do
    for j:=1 to M do
      read(a[i,j]);
  k:=0;
  for i:=1 to l do
    if inmatr(b[i],a) then
      begin
        inc(k);
        b[k]:=b[i];
      end;
  if k=0 then
    write('emtpy set')
  else
  for i:=1 to k do
    write(b[i]);
end.

Последний раз редактировалось Stilet; 15.04.2012 в 22:45.
Bellatryx вне форума Ответить с цитированием
Старый 16.04.2012, 08:25   #2
Paster Fob
Форумчанин
 
Аватар для Paster Fob
 
Регистрация: 06.02.2011
Сообщений: 105
По умолчанию

Я после написания кода и компиляции,прогоняю прогу в отладчике и слежу за всеми изменениями в переменных.Что позволяет с лёгкостью находить ошибки.
Paster Fob вне форума Ответить с цитированием
Старый 16.04.2012, 09:44   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Дорогая Искушенная Смертью, в строке:
Код:
      while(x<>a[i,j])and(j<=M)do
поменяй порядок условий, вот так:
Код:
      while (j<=M) and (x<>a[i,j]) do
P.S.
немного не уверен в точности интерперетации твоего ника (в оригинале должно быть "i", а не "y"), если что - не обижайся и поправь меня..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дано два множества точек.Найти пересечение и разность этих множеств.Координаты точек X и Y вводить с клав Degster Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2011 16:35
Пересечение множеств. С++ Демик Помощь студентам 4 13.03.2011 18:04
найти разность и пересечение множеств (синтаксис СИ) vad-92 Общие вопросы C/C++ 4 14.06.2010 13:50
Пролог!!!!!" Пересечение множеств giga1989 Помощь студентам 0 28.04.2010 21:27
пересечение двух множеств Олежек Фриланс 7 10.03.2010 18:46