Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 324

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
как определить наибольшее количество одинаковых символов идущих в строке подряд?

Milady Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Milady (статус: Посетитель)
Вопрос отправлен: 20 января 2009, 17:05
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Ну, не знаю. Сильно не отлаживал. Написал минут за 5, сильно не пинайте. Всё же лучше, чем ничего...

{как определить наибольшее количество
 одинаковых символов идущих в строке подряд?}
 
program p2324;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
// Функция подсчёта наибольшего количество одинаковых символов,
// идущих в строке подряд
function SuccessivelySymbols(const S: string): Integer;
var
  Index, Max: Integer;
  Symbol: Char;
begin
  Result:= 0;
 
  if S = ''
    then Exit;
 
  Max:= 1;
  Symbol:= S[1];
  Result:= 1;
 
  for Index:= 2 to Length(S) do
    if S[Index] = Symbol
      then Inc(Max)
      else begin
             if Max > Result
               then begin
                      Result:= Max;
                      Max:= 1;
                    end;
             Symbol:= S[Index];
           end;
 
  if Max > Result
    then Result:= Max;
end;
 
var
  S: string;
 
begin
  Write('Enter the string: ');
  ReadLn(S);
 
  WriteLn('MaxCount = ', SuccessivelySymbols(S));
 
  ReadLn;
end.


Наверняка, можно как-то покороче, но заморачиваться с оптимизацией неохота. Вроде работает.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 20 января 2009, 20:48
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 28 января 2009, 22:41; участников в обсуждении: 2.
Milady

Milady (статус: Посетитель), 21 января 2009, 13:46 [#1]:

Спасибо!!!!!!!!!
Milady

Milady (статус: Посетитель), 28 января 2009, 09:53 [#2]:

А можно ли еще вывести символ который повторяется?
min@y™

min@y™ (статус: Доктор наук), 28 января 2009, 11:07 [#3]:

Цитата:


А можно ли еще вывести символ который повторяется?


{как определить наибольшее количество
 одинаковых символов идущих в строке подряд?}
 
program p2324;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
// Функция подсчёта наибольшего количество одинаковых символов,
// идущих в строке подряд
function SuccessivelySymbols(const S: string;
                             var MaxSymbol: Char { <--- добавил }): Integer;
var
  Index, Max: Integer;
  Symbol: Char;
begin
  Result:= 0;
 
  if S = ''
    then begin
           MaxSymbol:= #0; // <--- добавил
           Exit;
         end;
 
  Max:= 1;
  Symbol:= S[1];
  MaxSymbol:= S[1]; // <--- добавил
  Result:= 1;
 
  for Index:= 2 to Length(S) do
    if S[Index] = Symbol
      then Inc(Max)
      else begin
             if Max > Result
               then begin
                      Result:= Max;
                      MaxSymbol:= Symbol; // <--- добавил
                      Max:= 1;
                    end;
             Symbol:= S[Index];
           end;
 
  if Max > Result
    then Result:= Max;
end;
 
var
  S: string;
  Count: Integer; // <--- добавил
  MaxSymbol: Char; // <--- добавил
 
begin
  Write('Enter the string: ');
  ReadLn(S);
 
  Count:= SuccessivelySymbols(S, MaxSymbol); // <--- добавил
  WriteLn('MaxCount = ', Count); // <--- заменил
 
  if Count <> 0
    then WriteLn('Symbol: "', MaxSymbol, '"'); // <--- добавил
 
  ReadLn;
end.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Milady

Milady (статус: Посетитель), 28 января 2009, 22:41 [#4]:

Спасибо вы нас как всегда спасли

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:28
Выполнено за 0.02 сек.