Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 36

Дописать в начало списка элементы, которые входят в L1, но не входят в L2

29.03.2016, 12:51. Показов 554. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано задание:
"Cформировать список L из элементов, которые входят одновременно в списки L1 и L2. Дописать в начало элементы, которые входят в L1, но не входят в L2, а в конец - элементы, которые входят в L2, но не входят в L1".

Процедуру создания/заполнения списка и вывода написал, но не могу разобраться, как создать список L из элементов, которые входят одновременно в списки L1 и L2 и дальше(
Помогите пожалуйста!

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
Program Lists;
Type PLink=^TElement;
     TElement=Record
      data:integer;
      next:PLink;
     End;
Var L1,L2, L:PLink;
    t, temp:integer;
Procedure Input(Var u:PLink);
    Var ElNew, ElPred: PLink;
    Value: integer;
    i,n:integer;
Begin
    readln(n);
    u:=Nil;
    Writeln('Введите элементы списка: ');
    For i:=1 to n do
    Begin
    Read(Value);
    New(ElNew);
    ElNew^.Data:=Value;
    ElNew^.next:=Nil;
    if u=nil
    then
    u:=ElNew
    Else
    ElPred^.next:=ElNew;
    ElPred:=ElNew;
    End;
End;
Procedure Vivod(u:PLink;ch:string);
Begin
    if u=nil then
    Begin
      writeln('Список пуст!Для продолжения нажмите Enter');
      readln;
      Exit;
    End;
    writeln('Список ',ch);
    While u<>nil do
    Begin
      write(u^.data,' ');
      u:=u^.next;
    End;
    writeln;
End;
Procedure Delete(Var u:PLink);
Var x:PLink;
Begin
    While u<>nil do
    Begin
      x:=u;
      u:=u^.next;
      Dispose(x);
    End;
End;
 
Procedure Soed(Var L1:PLink; Var L2:PLink; Var L:Plink);
Var a, b, c:integer;
Begin
    a := 0;
    b := 0;
    c := 0;
    While L1<>nil do
    Begin
    a:=L1^.data;
    writeln('_-_-_-_-_ ',a);
    L1:=L1^.next;
    While L2<>nil do
    Begin
    b:=L2^.data;;
    L2:=L2^.next;
    if (a=b) then Begin
    L:=a;
    L^.next:=Nil;
    End;
    End;
    End;
End;
 
Begin
    write('Введите кол-во элеметов списка "L1": ');
    Input(L1);
    Vivod(L1, 'L1');
    write('Введите кол-во элеметов списка "L2": ');
    Input(L2);
    Vivod(L2,'L2');
    Soed(L1,L2,L);
    Vivod(L,'L');
    Delete(L1);
    Delete(L2);
    Delete(L);
End.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2016, 12:51
Ответы с готовыми решениями:

Удалить из списка L1 все элементы, которые входят в список L2
Даны списки L1 и L2, элементы которых являются целыми числами. Удалить из списка L1 все элементы, которые входят в список L2.

Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1 но не входят в список L2
Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1 но не входят в список...

Отобразить гласные, которые входят в первую строку, и не входят во вторую.
Даны 2 строки от клавиатуры отображать гласные которые входят в первой строке и не входят во второй.

2
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
30.03.2016, 06:36
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
105
106
107
108
109
110
111
112
113
type
  PLink = ^TElement;
  TElement = Record
    data: integer;
    next: PLink;
  End;
 
procedure Input(var u: PLink);
var
  ElNew, ElPred: PLink;
  Value: integer;
  i, n: integer;
begin
  readln(n);
  u := nil;
  Writeln('Введите элементы списка: ');
  for i := 1 to n do
    begin
      Read(Value);
      New(ElNew);
      ElNew^.Data := Value;
      ElNew^.next := nil;
      if u = nil then
        u := ElNew
      Else
        ElPred^.next := ElNew;
      ElPred := ElNew;
    end;
end;
 
procedure Vivod(u: PLink; ch: string);
begin
  if u = nil then
    begin
      writeln('Список пуст!Для продолжения нажмите Enter');
      readln;
      Exit;
    end;
  writeln('Список ', ch);
  while u <> nil do
    begin
      write(u^.data, ' ');
      u := u^.next;
    end;
  writeln;
end;
 
procedure Delete(var u: PLink);
var
  x: PLink;
begin
  while u <> nil do
    begin
      x := u;
      u := u^.next;
      Dispose(x);
    end;
end;
 
/// Функция inList возвращает True если данный элемент входит в список
function inList(data : integer; L : PLink) : Boolean;
begin
  Result := True;
  while L <> nil do
    if L^.data = data then
      Exit
    else
      L := L^.next;
  Result := False;
end;
 
/// Процедура добавляет УНИКАЛЬНЫЙ элемент к списку
procedure Add(data : integer; var L : PLink);
begin
  if L = nil then
    begin
      New(L); L^.data := data; L^.next := nil;
    end
  else
    begin
      var Cur := L;
      var Last : PLink;
      repeat
        if Cur^.data = data then Exit;
        Last := Cur; Cur := Cur^.next;
      until Cur = nil;
      New(Last^.next); Last := Last^.next; Last^.data := data; Last^.next := nil;
    end;
end;
 
procedure Soed(L1: PLink; L2: PLink; var L: Plink);
begin
  L := nil;
  while L1 <> nil do
    begin
      if inList(L1^.data, L2) then
        Add(L1^.data, L);
      L1 := L1^.next;
    end;
end;
 
var
  L1, L2, L: PLink;
begin
  write('Введите кол-во элеметов списка "L1": '); Input(L1); Vivod(L1, 'L1');
  write('Введите кол-во элеметов списка "L2": '); Input(L2); Vivod(L2, 'L2');
  
  Soed(L1, L2, L); Vivod(L, 'L');
  
  Delete(L1);
  Delete(L2);
  Delete(L);
end.
С учётом введённых процедур, можно переделать и начало программы:
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
type
  PLink = ^TElement;
  TElement = Record
    data: integer;
    next: PLink;
  End;
 
/// Процедура добавляет УНИКАЛЬНЫЙ элемент к списку
procedure Add(data : integer; var L : PLink);
begin
  if L = nil then
    begin
      New(L); L^.data := data; L^.next := nil;
    end
  else
    begin
      var Cur := L;
      var Last : PLink;
      repeat
        if Cur^.data = data then Exit;
        Last := Cur; Cur := Cur^.next;
      until Cur = nil;
      New(Last^.next); Last := Last^.next; Last^.data := data; Last^.next := nil;
    end;
end;
 
function Input(msg : String) : PLink;
var
  Value: integer;
begin
  var n := ReadLnInteger('Введите количество элементов списка «' + msg + '»: n =');
  WriteLn('Введите уникальные элементы списка «' + msg + '»:');
  Result := nil;
  for var i := 1 to n do
    begin
      Read(Value);
      Add(Value, Result);
    end;
end;
 
procedure Vivod(u: PLink; ch: string);
begin
  if u = nil then
    begin
      writeln('Список пуст!Для продолжения нажмите Enter');
      readln;
      Exit;
    end;
  writeln('Список ', ch);
  while u <> nil do
    begin
      write(u^.data, ' ');
      u := u^.next;
    end;
  writeln;
end;
 
/// Функция inList возвращает True если данный элемент входит в список
function inList(data : integer; L : PLink) : Boolean;
begin
  Result := True;
  while L <> nil do
    if L^.data = data then
      Exit
    else
      L := L^.next;
  Result := False;
end;
 
procedure Soed(L1: PLink; L2: PLink; var L: Plink);
begin
  L := nil;
  while L1 <> nil do
    begin
      if inList(L1^.data, L2) then
        Add(L1^.data, L);
      L1 := L1^.next;
    end;
end;
 
var
  L1, L2, L: PLink;
begin
  L1 := Input('L1'); Vivod(L1, 'L1');
  L2 := Input('L2'); Vivod(L2, 'L2');
  
  Soed(L1, L2, L); Vivod(L, 'L');
  
  /// В PascalABC.NET достаточно обнулить ссылку на список. Он сам уничтожится в куче.
  L1 := nil; L2 := nil; L := nil;
  /// Хотя, т.к. программа заканчивается, то и этого можно не делать!
end.
Выигрыш составил 20 строк кода… Это есть гуд ;–)

P.S. Ещё бы лучше было список засунуть в класс…
Во ссылка по этому поводу на офф-сайт PABC.NET: http://pascalabc.net/stati-po-... novyj-stil
1
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 36
30.03.2016, 10:41  [ТС]
Спасибо за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2016, 10:41
Помогаю со студенческими работами здесь

Множества. Вывести все глухие согласные буквы, которые входят в каждое нечётное слово и не входят хотя бы в одно чётное
Дано предложение,состоящее из слов,разделённых любым количеством пробелов и оканчивающееся точкой.Вывести в алфавитном порядке все глухие...

Вывести звонкие согласные, которые входят хотя бы в одно нечетное слово и не входят ни в одно четное
Все звонкие согласные, которые входят хотя бы в одно нечетное слово и не входят ни в одно четное.

напечатать в алфавитном порядке все звонкие согласные буквы,которые входят в каждое нечетное слово и не входят ни в одно четное слово
помогите пожалуйста решить задачу** дан текст на русском языке.напечатать в алфавитном порядке все звонкие согласные буквы,которые входят в...

Получить третий массив, в который входят все элементы первого массива и те элементы второго, которые не встречались в первом
Задача по теме &quot;массив&quot;. &quot;Объединение массивов&quot;. Напишите программу, которая запрашивает и вводит с экрана два линейных массива...

получить все элементы последовательности B которые не входят в последовательность A
Привет помогите пожалуйста написать программу по другому, Даны натуральные числа n и m, целые числа a(1),...,a(m) и b(1),...,b(n). Среди...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru