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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 15:10   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Код:
function find_symbolgroup(s: string; c: char): integer;
var
  max, cur, i: integer;
begin
  max := 0;
  cur := 0;
  for i := 1 to length(s) do
    if s[i] = c then
      inc(cur)
    else
    begin
      if cur > max then max := cur;
      cur := 0;
    end;
  if cur > max then max := cur;
  find_symbolgroup := max;
end;
Если нужно найти максимальную длину непрерывной группы символов с.
find_symbolgroup(s, ' ')

Правда, я не очень понимаю, что именно нужно подсчитать.
Может нужно просто подсчитать, сколько раз в строке встречается какой-либо символ.
Код:
function count_of_symbol(s: string; c: char): integer;
var
  count, i: integer;
begin
  count := 0;
  for i := 1 to length(s) do
    if s[i] = c then
      inc(count);
  count_of_symbol := count;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 15.12.2012 в 15:12.
BDA вне форума Ответить с цитированием
Старый 15.12.2012, 15:18   #12
anthonyk
Пользователь
 
Регистрация: 15.12.2012
Сообщений: 18
По умолчанию

Вот набросал примерно. Посмотрите, пожалуйста, я в правильном направлении иду?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
  i,n,a,b:integer;
  f:char;
begin
s:=Edit1.Text;
n:=length(s);
a:=0;
b:=0;
For i:=1 to n-1 do
  begin
    if s[i]=' ' then
      begin
      a:=a+1;
      if a>b then b:=a;
      end
    else a:=0;
    end;
  Label1.Caption:=IntToStr(i);
end;
anthonyk вне форума Ответить с цитированием
Старый 15.12.2012, 15:22   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  max, cur, i: integer;
  s: string;
begin
  s := Edit1.Text;
  max := 0;
  cur := 0;
  for i := 1 to length(s) do
    if s[i] = ' ' then
      inc(cur)
    else
    begin
      if cur > max then max := cur;
      cur := 0;
    end;
  if cur > max then max := cur;
  Label1.Caption:=IntToStr(max);
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.12.2012, 15:26   #14
anthonyk
Пользователь
 
Регистрация: 15.12.2012
Сообщений: 18
По умолчанию

Задача звучит следующим образом:
Даны натуральное число n, символы S1,S2,...,Sn. Подсчитать наибольшее количество идущих подряд пробелов.

Спасибо, BDA, большое за Вашу помощь! Сейчас почитаю про find_symbolgroup. Насколько я понимаю char - это некий контейнер для хранения, когда мы находим группу символов, мы сравниваем ее с той что есть в char, заменяя ее если она больше, и так с каждой группой. Я правильно понял?
anthonyk вне форума Ответить с цитированием
Старый 15.12.2012, 15:38   #15
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Пожалуйста.
find_symbolgroup - самописная функция
char - символ, из которого будут состоять группы для поиска
2 счетчика - текущий и максимальный
Если нашли символ c, то увеличиваем текущий счетчик, если же наткнулись на другой символ, то сравниваем текущий счетчик с максимальным и заменяем, если нужно, значение и обнуляем текущий счетчик
После прохода по строке может получиться, что она вся состояла из пробелов, и ветка else никогда не выполнилась, поэтому еще раз сравниваем счетчики
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
легкая задача Иван Грозный Паскаль, Turbo Pascal, PascalABC.NET 5 21.05.2012 13:47
легкая задача на реализацию videolord Общие вопросы C/C++ 4 18.12.2011 16:02
задача не самая легкая Arinca Паскаль, Turbo Pascal, PascalABC.NET 0 17.04.2011 22:25
Господа, вроде легкая задача по Delphi, а как подступиться не знаю koysara Помощь студентам 3 17.09.2010 11:12
легкая задача vAdiM_Kubski Паскаль, Turbo Pascal, PascalABC.NET 2 25.09.2009 22:49