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

Работа со списками. В чем такая глупая ошибка не могу найти?

10.12.2018, 20:40. Показов 325. Ответов 1
Метки нет (Все метки)

В чем такая глупая ошибка не могу найти?
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
program sp;
type
{Тип основных данных.}
TElem=real;
n=^L1;
L1 = record
        Elem:TElem;
        next:n;        
   end; 
Spisock = record 
        NFirst,NLast:n; 
end;        
 
 
{Начальная инициализация списка,только в отношении пустого списка}
procedure Init(var aList : Spisock );
begin
  aList.NFirst := nil;
  aList.NLast := nil;
end;
 
{Особождение памяти, занятой под список.}
procedure Free(var aList : Spisock);
var
  next, NDel : n;
begin
  next := aList.NFirst;
  while next <> nil do 
  begin
    NDel := next;
    next := next^.next;
    Dispose(NDel);
  end;
  Init(aList);
end;
procedure addrecU(var u:n; m:real);
        begin
        if u=nil then begin
                      new(u);u^.Elem:=m;u^.next:=nil
                      end
        else addrecU(u^.next,m)
        end;
procedure addrecV(var v:n; m:real);
        begin
        if v=nil then begin
                      new(v);v^.Elem:=m;v^.next:=nil
                      end
        else addrecV(v^.next,m)
        end;        
procedure print(var u:n; x:real);
begin
writeln('New list:');
  if u=nil then writeln('The list is empty!')
  else
    begin
      while u<>nil do
        begin
          writeln(u^.Elem:8:2);
          u:=u^.next;
        end;
    end;    
end;
{Добавление элемента в конец однонаправленного списка.}
procedure Add(var aList :Spisock ; const aElem : TElem);
var
  tec : n;
begin
  New(tec);
  tec^.Elem := aElem;
  tec^.next := nil;
  if aList.Nirst = nil then
    aList.NFirst := tec
  else
    aList.NLast^.next := tec;
    aList.NLast := tec;
end;
 
var
L:Spisock;
pred,tec,Tnew:n;
x,code:real;
m:real;
i:integer;
u,v:string;
Elem,E,F:TElem;
begin
{создание первого списка}
repeat
    Writeln('Создание списка.');
    Writeln('Прекратить ввод - пустая строка + Enter.');
    i := 0;
    repeat
      Write('Элемент ', i + 1, ': ');
      Readln(u);
      if u <> '' then 
      begin
        Val(u, Elem, Code);
        if Code = 0 then begin
          Inc(i);
          Add(L, Data);
        end 
        else
          Writeln('Неверный ввод. Повторите.');
      end;
    until u = '';
    Writeln('Составлен список:');
    WriteList(L);
    Writeln;
print(u,x);
{создание второго списка}
repeat
    Writeln('Создание списка.');
    Writeln('Прекратить ввод - пустая строка + Enter.');
    i := 0;
    repeat
      Write('Элемент ', i + 1, ': ');
      Readln(v);
      if v <> '' then 
      begin
        Val(v, Elem, Code);
        if Code = 0 then begin
          Inc(i);
          Add(L, Elem);
        end 
        else
          Writeln('Неверный ввод. Повторите.');
      end;
    until v = '';
    Writeln('Составлен список:');
    WriteList(L);
    Writeln;
print(v,x);
{Задаем значение элементов.}
repeat
      Write('Задайте значение искомого элемента (E): ');
      Readln(u);
      Val(u, E, Code);
      if Code <> 0 then
        Writeln('Неверный ввод. Повторите.');
    until Code = 0;
    repeat
      Write('Задайте значение вставляемого элемента (F): ');
      Readln(v);
      Val(v, F, Code);
      if Code <> 0 then
        Writeln('Неверный ввод. Повторите.');
    until Code = 0;
{Ищем первый элемент со значением E и в случае его обнаружения вставляем перед ним элементы второго списка}
{Чтобы вставить перед элементом новый элемент мы должны знать указатель на предыдущий элемент. Для этого заведена переменная pred.}
pred := nil;{Указатель на предыдущий элемент списка.}
tec := L.NFirst;{Указатель на текущий элемент списка.}
Tnew := nil;{Указатель на новый элемент.}
while (tec <> nil) and (Tnew = nil) do
  if tec^.Elem = E then 
  begin
  {Выделяем память для нового элемента и получаем указатель на него.}
  new(Tnew);
  {Записываем данные.}
  Tnew^.Elem := F;
  {К новому элементу прикрепляем ту часть списка, которая идёт после элемента tec.}
  Tnew^.next := tec;
  {К элелменту tec прикрепляем элемент Tnew. (А к Tnew уже прикреплена остальная часть списка.)}
  if pred = nil then 
    L.NFirst := Tnew
  else
    pred^.next := Tnew;
  end 
  else 
  begin
  {Переходим к следующей паре элементов.}
  pred := tec;
  tec := tec^.next{Получаем указатель на следующий элемент списка.}
  end;
  
  if Tnew <> nil then 
  begin
      Writeln('Новый элемент F вставлен в список.');
      Writeln('Список после вставки:');
      Print(L);
      Writeln;
  end 
  else
      Writeln('Элемента Е нет в списке. Новый элемент F в список не вставлен.');
      
{Освобождение памяти, занятой под список.}
    Free(L);
    Writeln('Память, занятая под список, освобождена. Работа завершена.'); 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(u);
    until u <> ''; 
 
 
End.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2018, 20:40
Ответы с готовыми решениями:

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

Работа с файлами, не могу понять в чем ошибка
Программа должна копировать из f1 в f2 строки где есть повторение слов... Написал вот, строка...

Работа со строкой. Не могу разобраться, в чём ошибка.
Есть такой код: HANDLE Search;//Объявляем хендл WIN32_FIND_DATAA FileSearch;//Создаем структуру...

не могу найти в чем ошибка
&lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;link rel=&quot;stylesheet&quot; href=&quot;css.css&quot;&gt; ...

1
0 / 0 / 0
Регистрация: 01.12.2018
Сообщений: 34
17.12.2018, 12:47  [ТС] 2
Проблема решена
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2018, 12:47
Помогаю со студенческими работами здесь

Не могу доработать, работа со списками
доброго вечерочка! написал программу: задача:Преобразовать конструкцию языка Си++ вида switch...

С чем связана такая ошибка соединения?
Доброго времени суток! Подскажите что я делаю не правильно пытаюсь Запустить и подключить к...


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

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

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