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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2011, 23:04   #1
niktim
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 18
По умолчанию Найти кол-во групп букв в строке.

Условие: Дан текст, каждый символ которого может быть латинской буквой,цифрой или знаком: *,+,-. Группой букв называть, совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Найти кол-во таких групп букв, которые начинаются и заканчиваются одной и той же буквой.
Код:
Код:
var s,s1:string;
    k:byte;
begin
readln(s);
writeln('Слова, начинающиеся и оканчивающиеся на одну букву');
k:=0;
while pos(s)<> length(s-1) do
 begin
  s1:=copy(s,1,pos(' ',s)-1);
  if s1[1]=s1[length(s1)] then
   begin
    k:=k+1;
    write(s1,' ');
   end;
  delete(s,1,pos(' ',s));
 end;
writeln;
if k=0 then write('Таких слов нет')
else write('Количество=',k);
end.
Я так понимаю, что я не реализовал что от меня требуется, помогите пожалуйста исправить до верного варианта, удовлетворяющего условию.
niktim вне форума Ответить с цитированием
Старый 16.11.2011, 22:36   #2
niktim
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 18
По умолчанию

Актуально, со строками ужасно у меня..
niktim вне форума Ответить с цитированием
Старый 17.11.2011, 00:19   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так пойдёт?

Код:
var s,w : string;
  i : integer;
  Count : integer;
begin
  s := '191-USUS-MAGISTER-EST*AURA-ACADEMICA*OPTIMUS-SIC+TRANSIT+GLORIA+MUNDI';

  s := s + '+';
  w := '';
  Count := 0;
  for i:=1 to length(s) do begin
    if s[i] in ['A'..'Z','a'..'z'] then w := w+s[i]
    else {не буква, значит это конец группы}
     begin
       if Length(w)>1 then 
         if w[1]=w[Length(w)] then Inc(Count);
       w := '';
     end;
  end;
  Writeln;

  WriteLn('Количество подходящих групп:',Count);
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.11.2011, 19:56   #4
niktim
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 18
По умолчанию

разве не более рационально было бы без строки w, а символьной переменной воспользоваться?
Только как это записать?
Цитата:
s:=s + '+';
n:=length(s);
for i:=1 to n-1
if c in [a..z] then count:=count+1;
или не так?
извините, за поднятие темы

Последний раз редактировалось niktim; 28.11.2011 в 20:03.
niktim вне форума Ответить с цитированием
Старый 28.11.2011, 23:34   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

niktim

Цитата:
разве не более рационально было бы без строки w, а символьной переменной воспользоваться?
решить задачу, разумеется, можно различными способами.
Можно даже и без строки w обойтись... только тогда надо чуток алгоритм изменить...

Цитата:
Только как это записать?
Вы хотели написать так:
Цитата:
Код:
if c in ['a'..'z'] then count:=count+1;
только непонятно, какое отношение этот Ваш код имеет к решению исходной задачи.
Здесь Вы банально подсчитаете, сколько в строке маленьких (строчных) латинских букв.
и всё!
Ни о каких группах в вашем решении говорить не приходится.
Тем более о
Цитата:
Найти кол-во таких групп букв, которые начинаются и заканчиваются одной и той же буквой.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.11.2011, 23:47   #6
niktim
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 18
По умолчанию

Просто забыл добавить, что я сначала делал lowcase(s), т.е. у меня буквы были малого регистра все.
А через сhar хотел сделать, чтобы через него проверялось является ли эл-т строки символом, тогда идти дальше, а если литерой, то идти до первого попавшегося символа и если 1 литера = последней, то прибавить группу к счетчику. Только вот записать это не могу
или это бред, невозможный и ужасно нерациональный?

Последний раз редактировалось niktim; 29.11.2011 в 00:08.
niktim вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на обработку строк: удалить каждую 3-ю букву, найти кол-во гласных, кол-во цифр в строке,совпадения в 2-х строках Ирина93 Паскаль, Turbo Pascal, PascalABC.NET 6 05.11.2011 22:10
Вводится текст. Конец ввода <F1>. Найти кол-во букв "А" Руся93 Помощь студентам 4 02.10.2011 12:24
Найти кол-во чисел в строке. Айдар Помощь студентам 6 22.06.2009 14:28
кол-во букв в строке символов (Си) Newman Помощь студентам 1 04.12.2007 02:19