11.11.2019, 13:51 | #1 (permalink) |
Новичок
Регистрация: 15.10.2019
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Удаление повторного вхождения букв
Как это реализовать ? Помогите пожалуйста. Код:
Const n=15; Var a:array['a'..'z'] of integer; S:array[1..n] of char; i,j:integer; c:char; begin for i := 1 to n do Read (S[i]); for c:='a' to 'z' do a[c]:=0; for i:=1 to n do a[s[i]]:=a[s[i]]+1; for i := 1 to n do if a[s[i]]=1 then write(s[i]); read(i); end. |
11.11.2019, 13:51 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Наверняка проблему уже разрешили ранее, поищите здесь Функция повторного набора последнего исходящего вызова на многоканальном телефоне Компьютер выключился,после повторного запуска выключается.заранее спасибо! После отключения и повторного включения жёсткого диска SATA, он определяется как RAW Вместо букв точки |
11.11.2019, 15:07 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Проще всего — через множества. Например, так (сделано только для латиницы; с кириллицей тоже так можно, но нужно знать, какая кодовая таблица используется: их чертова прорва):
Код:
Var A:set of Char; S,S1:String; i:Integer; Function Letter(C:Char):Boolean; begin Letter:=((Ord(C)>64) and (Ord(C)<91)) or ((Ord(C)>96) and (Ord(C)<123)); end; Begin A:=[]; Writeln('Enter the string:'); Readln(S); S1:=''; for i:=1 to Length(S) do begin if Not(Letter(S[i])) then S1:=S1+S[i] else if Letter(S[i]) and Not(S[i] in A) then begin A:=A+[S[i]]; S1:=S1+S[i]; end; end; Writeln(S1); Readln End. |
11.11.2019, 15:18 | #3 (permalink) |
Member
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
|
Код:
uses Crt; type TSet=set of char; var s,s1:string; c:char; St:TSet; i:byte; begin ClrScr; Writeln('Stroka is 15 simvolov:'); Writeln; Readln(s); Writeln; St:=[]; s1:=''; i:=1; repeat c:=s[i]; if c in [',','.',' ','!','?','-',':',';'] then begin Inc(i); s1:=s1+c; end else if c in St then Inc(i) else begin s1:=s1+c; St:=St+[c]; Inc(i); end; until i>Length(s); Writeln(s1); Readkey; end. |
11.11.2019, 16:27 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Можно, кстати, и проще (я про свою программу), без функции. Кроме того, подключена и кириллица (Windows-кодировка):
Код:
Const Letter=['a'..'z','A'..'Z','а'..'я','А'..'Я']; Var A:set of Char; S,S1:String; i:Integer; Begin A:=[]; Writeln('Enter the string:'); Readln(S); S1:=''; for i:=1 to Length(S) do begin if Not(S[i] in Letter) then S1:=S1+S[i] else if Not(S[i] in A) then begin A:=A+[S[i]]; S1:=S1+S[i]; end; end; Writeln(S1); Readln End. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|