Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2012, 20:45   #1
Pasha_Sh
Форумчанин
 
Аватар для Pasha_Sh
 
Регистрация: 16.05.2010
Сообщений: 137
По умолчанию Количество различных символов в строке

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

Последний раз редактировалось Pasha_Sh; 25.10.2012 в 20:47.
Pasha_Sh вне форума Ответить с цитированием
Старый 25.10.2012, 21:09   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
function f(s: string): integer;
var
  a: array[0..255] of integer;
  i, count: integer;
begin
  for i := 0 to 255 do
    a[i] := 0;
  for i := 1 to length(s) do
    inc(a[ord(s[i])]);
  count := 0;
  for i := 0 to 255 do
    if a[i] = 1 then
      inc(count);
  f := count;
end;
Большие и маленькие буквы считаются различными.
Или
Код:
function f(s: string): integer;
var
  a, b: set of char;
  i, count: integer;
begin
  a := [];
  b := [];
  count := 0;
  for i := 1 to length(s) do
    if not (s[i] in a) then
    begin
      inc(count);
      a := a + [s[i]];
    end
    else
    if not (s[i] in b) then
    begin
      dec(count);
      b := b + [s[i]];
    end;
  f := count;
end;
Update Исправлена ошибка, закравшаяся во второй вариант
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 25.10.2012 в 23:12.
BDA вне форума Ответить с цитированием
Старый 25.10.2012, 21:15   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

как вариант)
Код:
var s,buf:string;
c:char;
begin
readln(s);
while s<>'' do
begin
c:=s[1];
delete(s,1,1);
if pos(c,s)=0 then buf:=buf+c;
while pos(c,s)<>0 do delete(s,pos(c,s),1);
end;
writeln(length(buf));
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество символов в строке! kalosha-stepa Паскаль, Turbo Pascal, PascalABC.NET 7 24.09.2012 08:09
Количество различных символов(Delphi) Artur1992 Помощь студентам 4 09.04.2011 18:52
Подсчитать количество содержащихся в строке символов С Doublefaced Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 31.05.2009 12:13
Количество символов в строке Ivan357 Паскаль, Turbo Pascal, PascalABC.NET 0 09.12.2008 17:06
Определение количество символов в строке, и самих строк. Патрон Общие вопросы Delphi 10 01.04.2008 12:43