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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2012, 21:54   #1
kalosha-stepa
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 25
Вопрос Количество символов в строке!

Эта програмка сортирует числа в алфавитном порядке, но мне еще надо подсчитать количество различных символов в строке. как это сделать и вывести все на экран!
Код:
program z7;
var s : string;
  i,k : integer;
  ch : char;
  RezultSet  : set of char;
begin
   Readln(s);
   i := 1; k:=0;
   RezultSet := [];
   while (i<=Length(s)) and (s[i]<>'.') do begin
     if s[i] in ['A','а','Б','б','В','в','Г','г','Д' ,'д','Е','е', 'Ё', 'ё', 'Ж', 'ж', 'З', 'з', 'И',
     'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т',
     'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь',
     'ь', 'Э', 'э', 'Ю', 'ю', 'Я', 'я']
       then Include(RezultSet, s[i]);
     inc(i)
   end;
   
   WriteLn;
      for ch:='A' to 'я' do begin
      if ch in RezultSet then Write(ch);

   Writeln;
   readln;
 end;
end.

Последний раз редактировалось Stilet; 21.09.2012 в 07:38.
kalosha-stepa вне форума Ответить с цитированием
Старый 20.09.2012, 22:10   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
for i:=1 to length(ResultSet) do begin
  count:=0;
  While pos(ResulSet[i],<строка поиска>)>0 do inc(count);
  WriteLn('Символ '+ResultSet[i]+' встречается '+IntToStr(count));
end;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 21.09.2012, 08:48   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Sciv
Код:
for i:=1 to length(ResultSet) do begin
  count:=0;
  While pos(ResulSet[i],<строка поиска>)>0 do inc(count);
- неверно. рекомендую вам ознакомится с понятием "множества" в Pascal
1) нет понятия длина Length() для множества...
2) к элементу множества НЕЛЬЗЯ обращаться через индекс!



Цитата:
Сообщение от kalosha-stepa
Эта програмка сортирует числа в алфавитном порядке
А при чём здесь ЧИСЛА ?!
Программа выводит в АЛФАВИТНОМ порядке все русские символы, которые входят в заданную фразу.

Последний раз редактировалось Serge_Bliznykov; 21.09.2012 в 08:54.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.09.2012, 09:42   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
- неверно. рекомендую вам ознакомится с понятием "множества" в Pascal
1) нет понятия длина Length() для множества...
2) к элементу множества НЕЛЬЗЯ обращаться через индекс!
Согласен, косяк упорол Что-то меня на ночь глядя заклинило, что строка-это множество чаров...

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

Последний раз редактировалось Sciv; 21.09.2012 в 09:46.
Sciv вне форума Ответить с цитированием
Старый 23.09.2012, 14:21   #5
kalosha-stepa
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 25
По умолчанию

Нужно подсчитать количество различных символов в строке. На экран вывести все встреченные символы в алфавитном порядке: <символ><кол-во>.
kalosha-stepa вне форума Ответить с цитированием
Старый 23.09.2012, 15:19   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Даю на водку:
Код:
var a:array['A'..'z'] of integer; s:string;i:integer;c:char;
begin
 s:=Латинская строка;
 for i:=1 to Length(s) do inc(a[s[i]]);
 for c:='A' to 'z' do if a[c]>0 then write(c,':',a[c],' ');
end;
И де я понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.09.2012, 04:02   #7
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от kalosha-stepa Посмотреть сообщение
Нужно подсчитать количество различных символов в строке. На экран вывести все встреченные символы в алфавитном порядке: <символ><кол-во>.
В условии явный дискрепанс.. НЕ БЫВАЕТ, чтоб СИМВОЛЫ были в АЛФАВИТНОМ порядке. В алфавитном порядке могут быть БУКВЫ. Принимая во внимание, что вряд ли слова "алфавитный порядок" появились случайно и являются ошибкой, я бы переделал код Стилета как-то так:
Код:
var 
  a: array['A'..'Z'] of integer;
  s: string;
  i: integer;
  c: char;
begin
  s:= Латинская строка;
  for i:=1 to Length(s) do inc(a[UpCase(s[i])]);
  for c:='A' to 'Z' do if a[c]>0 then write(c,':',a[c],' ');
end.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 24.09.2012, 08:09   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
UpCase
Эм... Ремарочка: Если автору захочется работать с русскими буквами - эта функция ему не помошник.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В строке символов найти количество вхождений заданного символа Алексей_2012 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 19.08.2012 15:54
определить количество символов и пробелов в строке без использования string.h Alena_897 Помощь студентам 5 07.12.2010 18:40
Подсчитать количество содержащихся в строке символов С 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