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

Написать процедуру, которая в непустом списке L меняет местами первый и последний элементы

19.11.2018, 15:09. Показов 2320. Ответов 4

Author24 — интернет-сервис помощи студентам
Написать процедуру которая в непустом списке L меняет местами первый и последний элементы и вставить её в данную программу.

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
Program Spisok;
type
zap=record
fam:string[10];
im:string[7];
otc:string[13];
end;
ukaz=^element;
element=record
inf:zap;
next:ukaz;
end;
var newE,left,right,temp:ukaz;
z:zap;
number:integer;
 
procedure org;
begin
writeln('Выполняется процедура организации очереди');
writeln('Для выхода из процедуры введите символ: *');
writeln('Введите фамилию студента');
readln(z.fam);
writeln('Введите имя студента');
readln(z.im);
writeln('Введите отчество студента');
readln(z.otc);
if z.fam='*' then exit;
new(newE);
newE^.inf.fam:=z.fam;
newE^.inf.im:=z.im;
newE^.inf.otc:=z.otc;
newE^.next:=nil;
left:=newE;
right:=newE;
while true do
begin
writeln('Введите фамилию студента');
readln(z.fam);
writeln('Введите имя студента');
readln(z.im);
writeln('Введите отчество студента');
readln(z.otc);
if z.fam='*' then exit;
new(newE);
newE^.inf.fam:=z.fam;
newE^.inf.im:=z.im;
newE^.inf.otc:=z.otc;
newE^.next:=left;
left:=newE;
end;
end;
 
procedure dob;
begin
writeln('Введите фамилию студента');
readln(z.fam);
writeln('Введите имя студента');
readln(z.im);
writeln('Введите отчество студента');
readln(z.otc);
if z.fam='*' then exit;
new(newE);
newE^.inf.fam:=z.fam;
newE^.inf.im:=z.im;
newE^.inf.otc:=z.otc;
newE^.next:=nil;
rigth^.next:=newE;
right:=newE;
end;
 
procedure udal;
begin
writeln('Исключение главного элемента очереди');
writeln('Нажмите клавишу Enter');
readln;
temp:=left^.next;
dispose(left);
left:=temp;
end;
 
procedure prosmotr;
var i:integer;
begin
writeln('Очередь содержит следующие элементы');
temp:=left;
i:=1;
while temp<>nil do
begin
writeln(i,')',temp^.inf.fam,' ',temp^.inf.im,' ',temp^.inf.otc);
temp:=temp^.next;
i:=i+1;
end;
writeln('Нажмите кнопку Enter');
readln;
end;
{--------------------------------------------------------------------}
begin
while true do 
begin
writeln('1-организация очереди');
writeln('2-добавление элемента в очередь');
writeln('3-удаление элемента из очереди');
writeln('4-просмотр очереди');
writeln('5-выход');
writeln('------------------');
writeln('введите номер пункта меню');
readln(number);
case number of
1: org;
2: dob;
3: udal;
4: prosmotr;
5: exit;
end;
end;
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2018, 15:09
Ответы с готовыми решениями:

Написать программу, содержащую процедуру, которая меняет местами первый и последний элементы непустого списка
3. Написать программу, содержащую процедуру, которая меняет местами первый и последний элементы...

Опишите процедуру, которая меняет местами первый и последний элементы непустого списка
Задача на списки: Опишите процедуру, которая меняет местами первый и последний элементы непустого...

Опишите процедуру или функцию, которая меняет местами первый и последний элементы непустого списка
Используйте линейные списки для хранения последовательности вещественных чисел. Опишите...

1. Написать программу, содержащую процедуру, которая меняет местами первый и второй элементы непустого списка. Если элементы не найдены, то выдать на
1. Написать программу, содержащую процедуру, которая меняет местами первый и второй элементы...

4
5084 / 2655 / 2350
Регистрация: 10.12.2014
Сообщений: 10,047
19.11.2018, 16:08 3
Лучший ответ Сообщение было отмечено danchik5556 как решение

Решение

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
type
  zap = record
    fam: string[10];
    im: string[7];
    otc: string[13];
  end;
  ukaz = ^element;
  element = record
    inf: zap;
    next: ukaz;
  end;
 
var
  newE, left, right, temp: ukaz;
  z: zap;
  number: integer;
 
function InputZ : zap;
var
  z : zap;
begin
  writeln('Введите фамилию студента');
  readln(z.fam);
  writeln('Введите имя студента');
  readln(z.im);
  writeln('Введите отчество студента');
  readln(z.otc);
  InputZ := z;
end;
 
procedure dob(var first, last : ukaz);
var
  z : zap;
begin
  z := InputZ;
  if first = nil then
    begin
      New(first);
      last := first;
    end
  else
    begin
      New(last^.next);
      last := last^.next;
    end;
  last^.inf := z;
  last^.next := nil;
end;
 
procedure org(var first, last : ukaz);
var
  answer : String;
begin
  writeln('Выполняется процедура организации очереди');
  repeat
    WriteLn;
    WriteLn('Желаете добавить студента? 1 - да / 0 - нет');
    ReadLn(answer);
    if Length(answer) = 1 then
      case answer[1] of
        '1' : dob(first, last);
        '0' : Exit;
      end;
  until False;
end;
 
procedure udal(var first, last : ukaz);
var
  tmp : ukaz;
begin
  writeln('Исключение главного элемента очереди');
  if first = nil then
    WriteLn('Операция невозможна: очередь пуста!')
  else
    begin
      tmp := first;
      first := first^.next;
      dispose(tmp);
    end;
  writeln('Нажмите кнопку Enter');
  readln;
end;
 
procedure prosmotr(cur : ukaz);
var
  i : integer;
  z : zap;
begin
  if cur = nil then
    WriteLn('Очередь пуста!')
  else
    begin
      writeln('Очередь содержит следующие элементы');
      i := 0;
      while cur <> nil do
        begin
          inc(i);
          z := cur^.inf;
          writeln(i, ')', z.fam, ' ', z.im, ' ', z.otc);
          cur := cur^.next;
        end;
    end;
  writeln('Нажмите кнопку Enter');
  readln;
end;
 
procedure SwapFirstAndLast(var first, last : ukaz);
var
  tmp : ukaz;
begin
  if first = nil then WriteLn('Очередь пуста!')
  else if first = last then WriteLn('Первый = последнему!')
  else
    begin
      tmp := first;
      while tmp^.next <> last do tmp := tmp^.next;
      last^.next := first^.next;
      tmp^.next := first;
      first^.next := nil;
      tmp := last; last := first; first := tmp;
      prosmotr(first);
    end;
end;
 
{--------------------------------------------------------------------}
var
  first, last : ukaz;
begin
  first := nil;
  last  := nil;
  repeat
    writeln('1-организация очереди');
    writeln('2-добавление элемента в очередь');
    writeln('3-удаление элемента из очереди');
    writeln('4-просмотр очереди');
    writeln('5 - обменять первый и последний элементы');
    writeln('0-выход');
    writeln('------------------');
    writeln('введите номер пункта меню');
    readln(number);
    case number of
      1: org(first, last);
      2: dob(first, last);
      3: udal(first, last);
      4: prosmotr(first);
      5: SwapFirstAndLast(first, last);
      0: halt;
    end;
  until False;
end.
1
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 6
19.11.2018, 18:49  [ТС] 4
Спасибо огромное))
0
5084 / 2655 / 2350
Регистрация: 10.12.2014
Сообщений: 10,047
20.11.2018, 06:05 5
Небольшой косячёк при обмене очереди из двух патчится заменой процедуры:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure SwapFirstAndLast(var first, last : ukaz);
var
  tmp : ukaz;
begin
  if first = nil then WriteLn('Очередь пуста!')
  else if first = last then WriteLn('Первый = последнему!')
  else if first^.next = last then
    begin
      last^.next := first; first^.next := nil;
      first := last; last := first^.next;
    end
  else
    begin
      tmp := first;
      while tmp^.next <> last do tmp := tmp^.next;
      last^.next := first^.next;
      tmp^.next := first;
      first^.next := nil;
      tmp := last; last := first; first := tmp;
      prosmotr(first);
    end;
end;
1
20.11.2018, 06:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2018, 06:05
Помогаю со студенческими работами здесь

Написать функцию, которая меняет местами первый и последний ряд матрицы
написать функциЮ которая меняеи местами первый и последний ряд матрицы(квадратной) и находит...

Составить процедуру (или функцию), которая меняет местами первый и i- й элементы массива
Массив заполнен случайными целыми числами из диапазона . Составить процедуру (или функцию), которая...

Написать процедуру, которая в заданном одномерном массиве меняет местами максимальный и первый элемент
Добрый день. мне нужно исправить программу(думаю процедуру замена) {Написать процедуру, которая...

Написать функцию, которая меняет местами последний и предпоследний элементы списка, если они есть
Написать функцию, которая меняет местами последний и предпоследний элементы списка, если они есть

Написать программу, которая в заданном списке меняет местами К-й и М-й по счету элементы (динамические структуры данных)
если можно - исправления с комментариями. ошибки, наверное, совсем глупые, но я не понимаю как их...

Используя очередь, написать процедуру или функцию,которая меняет местами максимальный и минимальный элементы
Помогите пожалуйста, нужно &quot;Використовуючи чергу,написати процедуру або функцію,яка міняє місцями...


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

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

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