0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 74
1

Списочные структуры

01.04.2019, 12:11. Показов 665. Ответов 5
Метки нет (Все метки)

В данной программе идет перечисление заданий с элементами. При работе выходит ошибка.
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
114
115
116
117
118
uses crt;
type
  uk=^zveno;
  zveno=record
  x:integer;
  next:uk;
end;
var per,tek,pred,nov:uk;
    i,y:integer;
begin
{----Формирование списка----}
  per:=nil;
  for i:=1 to 10 do
  begin
    new(tek);
    tek^.x:=random(100);
    tek^.next:=per;
    per:=tek;
  end;
{----Вывод----}
  writeln('Список:');
  tek:=per;
  while tek<>nil do
  begin
    write(tek^.x:4);
    tek:=tek^.next;
  end;
  writeln;
{----Добавление нового элемента в начало списка----}  
  write('Введите новый элемент = ');
  new(tek);
  readln(tek^.x);
  tek^.next:=per;
  per:=tek;
{----Вывод----}
  writeln('Список:');
  tek:=per;
  while tek<>nil do
  begin
    write(tek^.x:4);
    tek:=tek^.next;
  end;
  writeln;
{----Удаляем элемент в начале списка----}    
  tek:=per;
  per:=per^.next;
  write('Введите элемент = ');
  readln(tek^.x);
  dispose(tek);
  writeln;
{----Вывод----}
  writeln('Список:');
  tek:=per;
  while tek<>nil do
  begin
    write(tek^.x:4);
    tek:=tek^.next;
  end;
  writeln;
{----Добавление нового элемента после второго----}  
  write('Введите новый элемент = ');
  new(tek);
  readln(tek^.x);
  tek^.next:=per^.next;
  per^.next:=tek;
{----Вывод----}
  writeln('Список:');
  tek:=per;
  while tek<>nil do
  begin
    write(tek^.x:4);
    tek:=tek^.next;
  end;
  writeln;
{---------------}
  tek:=per;
  while tek^.next^.x <> 5 do tek:=tek^.next;
    pred:=tek^.next;
    tek^.next:=pred^.next;
  dispose(pred);
{----Вывод----}
  writeln('Список:');
  tek:=per;
  while tek<>nil do
  begin
    write(tek^.x:4);
    tek:=tek^.next;
  end;
  writeln;
{---------------}
  tek:=per;
  new(nov);
  write('Введите элемент до которого вывод = ');
  readln(pred^.x);
  writeln('Элемент перед предыдущим');
  while tek^.x <> pred^.x do
  begin
    write(tek^.x:4);
    tek:=tek^.next;
  end;
  writeln;
  pred:=tek^.next;
  writeln('Предыдущий элемент');
  writeln(pred^.x:4);
  nov^.x:=7;
  nov^.next:=pred^.next;
  pred^.next:=nov;
{----Вывод----}
  writeln('Список:');
  tek:=per;
  while tek<>nil do
  begin
    write(tek^.x:4);
    tek:=tek^.next;
  end;
  writeln;
  readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2019, 12:11
Ответы с готовыми решениями:

Паскаль. Списочные структруры данных. Очередь
Изменить программу так, чтобы Сформировать очередь записей из предыдущей лабораторной работы (код...

Линейные (списочные) структуры
Всё-таки я сделал заготовку списка учащихся. (это на тему – Линейные (списочные) структуры) uses...

Линейные (списочные) структуры
Вот такая заготовка списка учащихся. (тема – Линейные (списочные) структуры) CLS DIM A$(5)...

списочные ячейки
помогите пожалуйста создать списочные ячейки для данного списка ( ( ( a ( b ( c ) d ) ( ( e ) ...

5
2135 / 1278 / 483
Регистрация: 07.04.2017
Сообщений: 4,492
01.04.2019, 12:52 2
А какая ошибка, где, и при каких входных данных - мы догадываться должны?
0
5046 / 2621 / 2344
Регистрация: 10.12.2014
Сообщений: 9,977
01.04.2019, 14:07 3
Pascal
77
  while tek^.next^.x <> 5 do tek:=tek^.next;
Что по вашему должно произойти, если в списке не будет содержаться значения 5 (кроме первого)?
Правильно! Нет такого условия окончания. Вот от сюда и ошибка.

P.S. Было бы проще, если бы знать, что вообще вам нужно?
0
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 74
01.04.2019, 15:49  [ТС] 4
Sun Serega, вставить листинг и посмотреть ошибку и т.д. у вас не получается? Что ж такие глупые вопросы

Добавлено через 5 минут
JuriiMW, происходит удаление элемента, который имеет 5
0
5046 / 2621 / 2344
Регистрация: 10.12.2014
Сообщений: 9,977
01.04.2019, 16:18 5
Craysrilpack, вы читать умеете?
До постскриптума: https://www.cyberforum.ru/post13453986.html

Добавлено через 2 минуты
Еще один P.S. Удалите самую первую строку из своей программы и сможете воспользоваться отладчиком!
0
2135 / 1278 / 483
Регистрация: 07.04.2017
Сообщений: 4,492
01.04.2019, 17:38 6
Цитата Сообщение от Craysrilpack Посмотреть сообщение
Sun Serega, вставить листинг и посмотреть ошибку и т.д. у вас не получается? Что ж такие глупые вопросы
1. Что за листинг?
2. Я ввёл несколько рандомных значений и ошибку не получил.

И даже если бы ошибка так воспроизвелась, вы всё равно должны были скинуть текст ошибки и данные о строчке и т.п. Так обычно можно найти что не так не открывая паскаль.

Если же так не сработало бы - эта информация, вместе с тем что надо вводить чтоб стабильно воспроизвести ошибку - это то что необходимо чтоб ошибку точно можно было найти.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2019, 17:38
Помогаю со студенческими работами здесь

Списочные выражения if else
Я знаю, что в списочное выражение можно добавить if, но можно ли добавить else? Если да, то как?

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

Списочные функции высших порядков
Здравствуйте) Еще раз нужна ваша помощь: Напишите функцию composeAllMy :: -&gt; (a -&gt; a), берущую...

Списочные функции высших порядков
a) используя функцию map: все четные элементы списка удвоить, а нечетные уменьшить на 3 б)...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru