|
Вопрос # 2 324/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
как определить наибольшее количество одинаковых символов идущих в строке подряд?
 |
Вопрос задала: 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 (статус: Посетитель), 21 января 2009, 13:46 [#1]:
Спасибо!!!!!!!!!
|
|
Milady (статус: Посетитель), 28 января 2009, 09:53 [#2]:
А можно ли еще вывести символ который повторяется?
|
|
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 (статус: Посетитель), 28 января 2009, 22:41 [#4]:
Спасибо вы нас как всегда спасли
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|