Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
91111111111
1 / 1 / 1
Регистрация: 07.11.2012
Сообщений: 52
1

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

02.01.2014, 14:10. Просмотров 449. Ответов 0
Метки нет (Все метки)

Описать процедуру или функцию, которая в списке 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
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
uses crt;
type plistelement=^listelement;              {описание списка}
     listelement=record
        hislo: integer;
        next:plistelement;
     end;
var pbegin,p: plistelement;
    n,x,i,k,s: integer;
    sred: real;
 
 
procedure printlist;                  {просмотр всех элементов списка}
var p: plistelement;
begin
     p:=pbegin;
     while p<>nil do
     begin
          writeln(p^.hislo);
          p:=p^.next;
     end;
end;
{добавление элемента в список}
procedure putlist (chto: integer; var kuda: plistelement);
var tmpList: plistelement;
begin
     if kuda=nil then
     begin
          new(kuda);
          tmpList := kuda;
     end
     else
     begin
       tmpList := kuda;
       while tmpList^.next <> nil do tmpList := tmpList^.next;
       new(tmpList^.next);
       tmpList := tmpList^.next;
     end;
     tmpList^.next := nil;
      tmpList^.hislo := chto;
end;
 
 {удаление элемента из списка по номеру позиции}
procedure removefromlist (var list : plistelement; elemNumber : Integer);
var
  tmpList1, tmpList2 : plistelement;
  number : Integer;
begin
   tmpList1 := list;
   number := 1;
   if tmpList1 <> nil then
   Begin
     while (number < elemNumber) and (tmpList1 <> nil ) do
     Begin
      Inc(number);
      tmpList1 := tmpList1^.next;
     End;
 
     tmpList2 := tmpList1;
     tmpList1 := list;
     if (tmpList2 <> nil) then
     Begin
       if (tmpList2 = list) then
       Begin
         list :=tmpList2^.next;
         Dispose(tmpList2);
       End
       else
       Begin
         while (tmpList1^.next <> tmpList2) do tmpList1 := tmpList1^.next;
         tmpList1^.next := tmpList2^.next;
         Dispose(tmplist2)
       End;
     End;
   End;
end;
{ проверка, есть ли в списке хотя бы два одинаковых элемента;}
function SearchAlikeElement(list : plistelement):Boolean;
Var
  tmpList1, tmpList2 : plistelement;
Begin
  tmpList1 := list;
  while (tmpList1 <> nil) do
  Begin
    tmpList2 := tmpList1^.next;
    if (tmpList2 <> nil) then
    Begin
      while (tmpList2 <> nil) do
      Begin
         if (tmpList1^.hislo = tmpList2^.hislo) then
         Begin
           SearchAlikeElement := true;
           Exit
         End;
        tmpList2 := tmpList2^.next;
      End;
    End;
    tmpList1 := tmpList1^.next;
  End;
  SearchAlikeElement := false;
End;
 
{из каждой группы подряд идущих элементов списка оставляет только один}
procedure DeleteRepeatElementInList( var list : plistelement);
Var
  tmpList, tmpList2 : plistElement;
  number_pos, tmpValue : Integer;
Begin
  tmpList := list;
   number_pos := 1;
  while (tmpList <> nil) do
  Begin
    tmpValue := tmpList^.hislo;
    tmpList2 := tmpList^.next;
 
    while (tmpList2 <> nil) and (tmpList2^.hislo = tmpValue) do
    Begin
      Inc(number_pos);
      Removefromlist(tmpList, number_pos);
      dec(number_pos);
      tmpList2 := tmpList2^.next;
    End;
    tmpList := tmpList^.next
  End;
End;
 
begin                                    {тело программы}
clrscr;
pbegin:=nil;
//writeln('введите количество чисел');
//readln(n);
n:=random(11)+10;        {случайным образом выясним кол-во чисел}
       for i:=1 to n do
           begin
               // readln(x);
                x:=random(100);     {рандомно заполняем и сами числа}
                putlist(x,p);       {вызов процедуры добавления в список}
                p:=p^.next;
 
 
           end;
           printlist;
           readln;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2014, 14:10
Ответы с готовыми решениями:

Описать процедуру или функцию, которая оставляет в списке L только первые вхождения одинаковых элементов
Описать процедуру или функцию, которая оставляет в списке L только первые вхождения одинаковых...

В списке L с каждой группы подряд равных элементов оставить только один элемент
Опишите программу , которая в списке L с каждой группы подряд равных элементов оставляет только...

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

Из каждой группы равных между собой элементов нужно оставить только один
1.Дан целочисленный массив а1,а2,...аn,среди элементов которого могут быть равные. Из каждой группы...

Описать процедуру или функцию которая проверяет на равенство списки A и B
Описать процедуру или функцию которая проверяет на равенство списки A и B. Проверяет количество и...

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

Описать процедуру или функцию,которая определяет число вхождений элемента Е в дерево T
Привет всем,оч. нужна помощь в этих задачках 1) Описать функцию или процедуру,которая:...

Дан массив А, состоящий из n натуральных чисел. Определите максимальное число идущих подряд элементов, равных
Дан массив А, состоящий из n натуральных чисел. Определите максимальное число идущих подряд...

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


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

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

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