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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2012, 11:58   #1
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
Вопрос подсчитать количество символов в самой короткой группе, в строке, состоящей из групп нулей и единиц

Не могу понять условие задачи, ну т.е. понять задание. Распишите понятно, если кто-то разберет...

Цитата:
Разработать программу решения задачи, в которой подсчитать кол-во символов в самой короткой группе, в строке, состоящей из групп нулей и единиц. Исходные данные вводятся с клавиатуры...
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 16.10.2012, 12:20   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Строка состоит из слов - групп символов. Определить длину самого короткого слова (группы символов).
Например,
Код:
"1111000 010 10010 1010"
самая коротакая группа символов -
Код:
"010"
P.S. По крайней мере я так понимаю это задание
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 16.10.2012, 12:52   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

скорее всего, раз не сказано, то группы не разделены ничем (накаких пробелов в строке нет). группой является набор одинаковых символов, расположенных подряд.
например, если дана строка:
1111000011100000011111
то самой короткой будет группа из 3-х единиц, расположенная с 9й позиции


в коде на Паскале решение может выглядеть, например, так:
Код:
var i, minLen, ind, c : integer;
  s : string;
begin
  readLn(s);
  if length(s)<1 then begin WriteLn('@Empty string'); Halt(1) end;
  minLen:= Length(s); ind:=1;
  c:=1;
  for i:=2 to length(s) do
     if s[i]=s[i-1]
       then c:=c+1
       else begin
          if c<minLen then
                begin minLen:=c; ind:=i-minLen; end;
          c:=1;
       end;

  if c<minLen then
           begin minLen:=c; ind:=length(s)-minLen+1; end;
  WriteLn('shortest group length =',minLen,'  index = ',ind);
  readln
end.

Последний раз редактировалось Serge_Bliznykov; 16.10.2012 в 13:12.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2012, 00:14   #4
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Нужно как написал Niro. Помогите, с кодом, сам даже не представляю варианта решения, ну или хотя бы толкните на мысль с какими процедурами работать...
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 22.10.2012, 08:33   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
ну или хотя бы толкните на мысль с какими процедурами работать...
какие там процедуры?! Цикл по всем элементам строки. До пробела. Считаете количество элементов в группе. Ищите минимум этого значения. Всё.

берите мой код выше, заменяйте условие подсчёта слов (у меня текущий символ не равен предыдущему, у вас должно быть - текущий символ равен пробелу).
и всё. Программа готова.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2012, 09:41   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
var s:string;max:integer;
begin
readln(s);
while pos('  ',s)<>0 do delete(s,pos('  ',s),1);
s:=trim(s)+' ';
max:=length(s);
while length(s)>0 do
begin
if length(copy (s,1,pos(' ',s)))<max then max:=length(copy (s,1,pos(' ',s)));
delete(s,1,pos(' ',s));
end;
writeln(max);
end.
p.s. писал прям тут могут быть ошибки
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 22.10.2012, 09:53   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Mad_Cat
Код:
delete(s,1,pos(' ',s));
ну, не очень красивое и эффективное решение - зачем удаление подстрок в строке там, где оно не нужно?! (Pos внутри себя содержит тот же цикл с перебором символов строки, если что, поэтому выигрыша в эффективности никакого не будет).

Ну а так, для успешной сдачи учебного задания вполне себе приемлимое решение...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана строка. В строке удалить символ двоеточие и подсчитать количество удаленных символов.в делфи _Алексей_ Помощь студентам 3 29.04.2012 15:37
Дана строка. В строке удалить символ двоеточие ":" и подсчитать количество удаленных символов.в делфи _Алексей_ Помощь студентам 6 20.04.2012 16:12
подсчитать количество единиц входящий в текст LILI26092009 Помощь студентам 1 07.11.2010 09:58
Подсчитать количество содержащихся в строке символов С Doublefaced Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 31.05.2009 12:13