Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 21

Учитывая вхождение заданного символа преобразовать последовательность

13.03.2015, 00:14. Показов 1647. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана последовательность латинских букв, оканчивающаяся
точкой. Среди букв есть специальный символ, появление которого означает отмену предыдущей буквы; k знаков подряд отменяют k предыдущих букв, если такие есть. Учитывая вхождение этого символа преобразовать последовательность. Реализовать через двунаправленый список. Помогите пожалуйста с заданием не знаю как реализовать потому, что проблемы со списками
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2015, 00:14
Ответы с готовыми решениями:

Преобразовать последовательность символов учитывая применение отменяющего символа
Доброго времени суток)у меня есть такая задача по учёбе которую не успеваю решить (жина вот вот радит и сессия как раз на роды)а она нужна...

Найти первое вхождение заданного символа в строке и вернуть адрес найденного символа
Разработать функцию, которая находит первое вхождение заданного символа в строке возвращая адрес найденного символа (или NULL если ничего...

Удваивает каждое вхождение заданного символа x
7. удваивает каждое вхождение заданного символа x;

7
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
15.03.2015, 00:51
Цитата Сообщение от andr_dnepr Посмотреть сообщение
Реализовать через двунаправленый список.
Мне кажется это условие слишком нагружает эту простую задачку. Очень уж не экономично хранить символы по одному в динамической памяти, да еще и двусвязным списком.

Добавлено через 6 минут
Решение без списков и для всех символов (кроме ключевого):
Pascal
1
2
3
4
5
6
7
8
9
10
11
Const C = '*';
 
Function Decod(S : String) : String;
Begin
  While Pos(C,S)>0 do Delete(S,Pos(C,S)-1,2);
  Decod:=S;
end;
 
Begin
  Writeln(Decod('Цукпц****оыва***йц*    ***жоп**ивап***вы*!'));
end.
1
 Аватар для Jener
228 / 225 / 220
Регистрация: 03.07.2012
Сообщений: 466
15.03.2015, 12:14
Лучший ответ Сообщение было отмечено andr_dnepr как решение

Решение

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
uses
  crt;
type
  tInf  = char;
 
  pNode = ^tNode;
  tNode = record
  Inf       : tInf;
  Next,Prev : pNode;
  end;
 
  tList = record
  First, Last : pNode;
  end;
 
procedure InitList(var aL : tList);
begin
   aL.First := nil; aL.Last := nil;
end;
 
procedure AddToList(var aL : tList; aData : tInf);
var tmp : tList;
begin
  if aL.First = nil then begin
     New(aL.First);
     aL.First^.Inf := aData;
     aL.First^.Prev := nil; aL.First^.Next := nil;
     aL.Last := aL.First;
  end else begin
     InitList(tmp);
     AddToList(tmp,aData);
     tmp.First^.Prev := aL.Last;
     aL.Last^.Next := tmp.First;
     aL.Last := tmp.Last;
  end;
end;
 
procedure CreateList(var aL : tList; var sc : char);
var c : char;
begin
   InitList(aL);
   repeat
   write('Input special symbol :'); sc := readkey;
   writeln(sc);
   until not (sc in [#65..#90,#97..#122,#46]);
   writeln('End of input list - key Enter.');
   write('Input list:');
   repeat
      c := readkey;
      If c in [#65..#90,#97..#122,sc] then begin
         AddToList(aL,c);
         write(c);
      end else if c <> #13 then
         write(#10,#13,'ERROR: "',c,'" is not latin latter.',#10,#13,'Continue input:');
   until c = #13;
   AddToList(aL,'.');
   writeln;
end;
procedure PrintLst(aL : tList);
begin
  If aL.First = nil then writeln
  else begin
    write(aL.First^.Inf,' ');
    aL.First := aL.First^.Next;
    PrintLst(aL);
  end;
end;
 
procedure DelElem(var aL : tList;beg : pNode; k : integer);
var p : pNode;
begin
   while (k > 0) and (beg <> nil) do begin
      p := beg;
      beg := beg^.Prev;
      If (p^.Prev <> nil) and (p^.Next <> nil) then begin
         beg^.Next := p^.Next;
         p^.Next^.Prev := beg;
      end else if (p^.Prev = nil) and (p^.Next <> nil) then begin
         p^.Next^.Prev := nil;
         aL.First := p^.Next;
      end else if (p^.Prev <> nil) and (p^.Next = nil) then
         p^.Prev^.Next := nil;
      dispose(p);
      dec(k);
   end;
end;
 
procedure LenOrder(var cur : pNode;c : char;var k : integer);
begin
  while cur^.Inf = c do begin
     inc(k);
     cur := cur^.Next;
     if cur = nil then break;
  end;
end;
 
procedure ChangeLst(var aL : tList;c : char);
var p, pp : pNode; k, kk : integer;
begin
  p := aL.First;
  kk := 0;
  while p <> nil do begin
     if p^.Inf = c then begin
       pp := p^.Prev;
       LenOrder(p,c,k);
       if k > kk then k := kk;
       kk := 0;
       DelElem(aL,pp,k);
     end else begin
       p := p^.Next;
       inc(kk);
       k := 0;
     end;
  end;
end;
 
var
  L : tList;
  p : pNode;
  k : integer;
  c : char;
begin
  clrscr;
  InitList(L);
  CreateList(L,c);
  writeln('List:');
  PrintLst(L);
  ChangeLst(L,c);
  writeln('Result List:');
  PrintLst(L);
  readln;
end.
Input special symbol :=
End of input list - key Enter.
Input list:Odin=====Dva=Tri====Sem=
List:
O d i n = = = = = D v a = T r i = = = = S e m = .
Result List:
= = = = = D v = = = = = S e = .
1
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 21
15.03.2015, 21:58  [ТС]
Торович, спасибо большое, но программа не работает, она удаляет только последний символ, а не после специального символа
0
 Аватар для Jener
228 / 225 / 220
Регистрация: 03.07.2012
Сообщений: 466
16.03.2015, 04:58
У меня работает:
0
16.03.2015, 10:02

Не по теме:

Торович, а почему у Вас буквы печатаются через пробел?

0
 Аватар для Jener
228 / 225 / 220
Регистрация: 03.07.2012
Сообщений: 466
16.03.2015, 10:38
Цитата Сообщение от APALoff Посмотреть сообщение
почему у Вас буквы печатаются через пробел?
так процедуру вывода списка написал, символы через пробел, можно и без
Pascal
1
2
3
4
5
6
7
8
9
procedure PrintLst(aL : tList);
begin
  If aL.First = nil then writeln
  else begin
    write(aL.First^.Inf);
    aL.First := aL.First^.Next;
    PrintLst(aL);
  end;
end;
1
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 21
16.03.2015, 16:48  [ТС]
Все разобрался. Большое спасибо. Просто сразу не понял что специальный символ это =.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2015, 16:48
Помогаю со студенческими работами здесь

Удвоить каждое вхождение заданного символа в символьной строке
Доброго времени суток!! Помогите, пожалуйста, написать программу в Borland C++ Builder: Из Edit1 нужно прочитать символьную строку и в...

Функция удаляющая первое и последнее вхождение в строке заданного символа
Функция удаляет первое и последнее вхождение в строке заданного символа.

Написать функцию, которая ищет в заданной строке последнее вхождение заданного символа
программа не работает помогите пожалуйста Вот сама задача: Написать функцию, которая ищет в заданной строке последнее вхождение...

Написать функцию, которая ищет в заданной строке первое вхождение заданного символа
Помогите пожалуйста с указателями... Написать функцию, которая ищет в заданной строке первое вхождение заданного символа (char...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru