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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2014, 22:06   #1
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию Непрерывная последовательность элементов массива, совпадающая с другим массивом (TurboPascal)

Даны массивы a[m], и b[n], n<m≤10. Выясните, содержится ли массив b в массиве a.
Массив b следует считать содержащимся в a, если в a существует непрерывная
последовательность элементов, совпадающая с массивом b.

Формат ввода: две пары строк с информацией о массивах a и b. В каждой паре первая
строка – размер соответствующего массива, вторая – его элементы.

Формат вывода: строка "B содержится в A" или строка "B не содержится в A".

input.txt
7
1 7 13 5 6 8 4
4
13 5 6 8
output.txt
B содержится в A


В задачу решил, но при прерывной последовательности выдаёт что "B содержится в A" , а должно "B не содержится в A".
Я не смог это исправить.

Код:
var
 n,m,i,j,k: longint;
 a,b: array [1..10] of longint;
begin
 assign(input,'input.txt');
 reset(input);
 assign(output,'output.txt');
 rewrite(output);

 read(n);
 for i:=1 to n do read(a[i]);
 read(m);
 for i:=1 to m do read(b[i]);

 for i:=0 to n-m do
 begin
  for j:=1 to m do
  begin
   if a[i+j] = b [j] then break;
   if j = m then
   begin
    writeln('B contains in A');
    halt;
   end;
  end;
 end;

 writeln('B does not contain in A');
end.
VladKB1 вне форума Ответить с цитированием
Старый 12.06.2014, 22:41   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

Не проверял:
Код:
for i := 0 to n - m do
begin
  j := 1;
  while (j <= m) and (a[i + j] = b[j]) do
    inc(j);
  if j > m then
  begin
    writeln('B contains in A');
    halt;
  end;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 12.06.2014, 23:00   #3
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
Печаль

Цитата:
Сообщение от BDA Посмотреть сообщение
Не проверял:
Код:
for i := 0 to n - m do
begin
  j := 1;
  while (j <= m) and (a[i + j] = b[j]) do
    inc(j);
  if j > m then
  begin
    writeln('B contains in A');
    halt;
  end;
end;
Большое спасибо BDA , но теперь оно не проходит и в таких случаях:

input.txt
7
1 7 13 2 6 8 4
4
13 5 6 8

output.txt
B contains in A {а должно B does not contain in A}


И проблема в таких случаях:

input.txt
7
13 4 8 5 1 7 6
4
13 5 6 8


Выдаёт ошибку Error 201: Range check error.

И курсор находиться вот здесь:


Код:
read(m);
 for i:=1 to m do read(b[i]);
VladKB1 вне форума Ответить с цитированием
Старый 12.06.2014, 23:28   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

Странно. У меня в Delphi XE6 всё сработало верно и без ошибок.

UPD
Пожалуйста
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 12.06.2014 в 23:39.
BDA на форуме Ответить с цитированием
Старый 12.06.2014, 23:34   #5
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Странно. У меня в Delphi XE6 всё сработало верно и без ошибок.
Блин я не внимательный да всё работает извините что сразу не заметил)

И в какой раз большое спасибо вам!
VladKB1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непрерывная неубывающая последовательность чисел (TurboPascal) VladKB1 Помощь студентам 17 13.06.2014 00:06
Циклический сдвиг элементов массива (TurboPascal) VladKB1 Помощь студентам 3 02.06.2014 22:46
Создание массива и сортировка его в сред TurboPascal MaKKeY Помощь студентам 7 14.01.2011 16:59
Обработка массива записей. TurboPascal Nosferatu Помощь студентам 27 17.05.2009 20:29