Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Prost
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 3
1

Создать две очереди. Проверить, является ли одна из очередей частью другой

21.12.2015, 17:32. Просмотров 159. Ответов 0

Нужно: Создать две очереди. Проверить, является ли одна из очередей частью другой.

Вот код. У меня нормально запускается, вводит и выводит элементы двух очередей, но на проверке вылетает, пишет
"ссылка на объект не указывает на экземпляр объекта" на 52-ой и 91-ой строчке.
Не понимаю, в чём моя ошибка.
Или, может, можно как-то ещё сравнить значения элементов очереди, или входимость адекватней написать можно?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
uses crt;
type
pspisok=^spisok;
spisok=record
       elem: string;
       next: pspisok;
       end; 
 
       
//Процедура, добавляющая элемент в очередь
procedure dobavl_elem(var begq:pspisok; var n:byte);
var
vsp,add: pspisok;
begin
new(add);
clrscr;
writeln('Введите элемент');
readln(add^.elem);
n:=n+1;
if begq=nil then
  begq:=add else
    begin
    vsp:=begq;
    while vsp^.next<>nil do
      vsp:=vsp^.next;
    vsp^.next:=add
    end;
end;
 
//Процедура вывода очереди на экран
procedure vyvod(begq:pspisok; n:byte);
var vsp: pspisok;
begin
writeln('Элементы, занесённые в список №',n,':');
vsp:=begq;
if vsp=nil then writeln('Элементов нет');
while vsp<>nil do
  begin
  write(vsp^.elem, ' ');
  vsp:=vsp^.next;
  end;
end;
 
//Процедура проверки на входимость очередей
procedure proverka(var begq1: pspisok;var begq2: pspisok; var z:byte);
var
vsp1, vsp2: pspisok;
begin
vsp1:=begq1;
vsp2:=begq2;
while (vsp2<>nil) or (vsp1<>nil) do
if vsp1^.elem = vsp2^.elem then
  begin
  vsp1:=vsp1^.next;
  z:=z+1;
  end else
    vsp2:=vsp2^.next;
end;
 
 
//Главная программа
var
begq1, begq2: pspisok;
n1,n2,z12,z21,k: byte;
begin
  while k<>5 do
  begin
    clrscr;
    writeln ('1 Добавить элемент в первую очередь');
    writeln ('2 Добавить элемент во вторую очередь');
    writeln ('3 Вывести все элементы');
    writeln ('4 Проверка, является ли одна из очередей частью другой');
    writeln ('5 Выход');
    writeln;
    readln (k);
    case k of
      1: begin
         dobavl_elem(begq1, n1);
         end;
      2: begin
         dobavl_elem(begq2, n2);
         end;
      3: begin
         clrscr;
         vyvod(begq1, 1);
         writeln;
         vyvod(begq2, 2);
         readln;
         end;
      4: begin
         proverka(begq1, begq2, z12);
         proverka(begq2, begq1, z21);
         if (n1=z12) and (n2=z21) then
           writeln('Первая и вторая очередь равны') else
           if n1=z12 then
             writeln('Первая очередь входит во вторую') else
             if n2=z21 then 
               writeln('Вторая очередь входит в первую') else
               writeln('Ни одна из очередей не входит в другую');
         readln;      
         end;
    end;
  end;
end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2015, 17:32
Ответы с готовыми решениями:

Определить, является ли одна строка подстрокой другой
var t:boolean; i,j:integer; s1,s2:string; begin t:=true; writeln(); readln(s1);...

Создать две очереди
помогите с прогой нужно создать две очереди: 1- с положительных элементов 2- с отрицательных...

Сделать две очереди, так, чтобы в одной остались только символы, в другой — только числа
Помогите,пожалуйста,решить задачку. Даны 2 очереди, заполненные символами латинского алфавита и...

Даны две очереди (или два стека). Определить число шагов, через которые одна из очередей станет пустой
Даны две очереди (или два стека). Определить число шагов, через которые одна из очередей станет...

Определить, является ли одна строка символов - частью другой
Задача ясна, а алгоритм &quot;прогонки&quot; выстроить не получается. Задумал прогонять отталкиваясь от ячеек...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2015, 17:32

Проверить является ли одна строка зеркальным отображением другой
Всем привет,помогите сделать программу &quot;Проверить является ли одна строка зеркальным отображением...

Проверить, что одна строка является началом другой
Добрый день! подскажите пожалуйста с помощью какого оператора можно осуществить след.проверку:...

Проверить, является ли одна строка анаграммой для другой строки
прошу помощи с кодом в коде я сделал следующее : - привел строки к нижнему регистру - убрал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru