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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2009, 13:31   #1
Svetik2252
 
Регистрация: 02.12.2009
Сообщений: 6
По умолчанию Вывод слов с удвоенными согласными. Паскаль

Здравствуйте.

Дана строка символов St, состоящая из латинских букв. Группы символов, разделенные пробелами и не содержащие пробелов внутри себя, будем называть словами. Преобразовать исходную строку в строку St1. Если строка окажется пустой, выводить соответствующее сообщение.

Строка St1 в которую нужно преобразовать строку St:

Напечатать слова, отличные от последнего слова, если в них есть удвоенные согласные.

Нужна помощь в преобразовании кода, который выводит слова с удвоенной буквой (в данной случае 'н') в код согласно заданию.

Код:
program example1;
var st, st1:string;
       i,j,k,n:integer;
       flag:boolean;
const
     znak=[' '];
   begin
     writeln('Введите текст');
  readln(st);
     repeat
          while st[1] in znak do delete(st,1,1);
        i:=1;
     while (not (st[i] in znak)) and (i<=length(st)) do inc(i);
     st1:=copy(st,1,i-1);
     flag:= false;
     while (pos('н',st1)>0) and (not flag) do begin
       j:=pos('н',st1); n:=j; k:=0;
          while st1[n]='н' do begin inc(n); inc(k); end;
       if k=2 then flag:= true;
       delete(st1,j,k)
  end;
  if flag then writeln(copy(st,1,i-1));
     delete(st,1,i);
   until st='';
     readln;
end.

Последний раз редактировалось Stilet; 02.12.2009 в 13:38.
Svetik2252 вне форума Ответить с цитированием
Старый 02.12.2009, 13:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я твой код не очень понял. для меня он сложен, поэтому предлагаю свой
С важными комментариями.
Код:
  var p,k,s,e:string;i:integer; b:boolean;
begin
 s:='If you 555 then I 666';
 i:=length(s);
 {Получаем последнее слово}
 while (i>0)and(s[i]<>' ') do begin e:=s[i]+e;dec(i);end;
 p:='';dec(i);b:=false;
 {Ищим остальные слова}
  while (i>0) do begin
  if s[i]<>' ' then begin
  {Если рядомстоящие буквы совпадают заметим это слово}
   if (p<>'')and(s[i]=p[1]) then begin
    b:=true;
   end;
   p:=s[i]+p
  end  else begin
   {Если слово замеченое то откладываем его в переменку накопитель}
   if (b)and(p<>e) then begin
    k:=k+p+' ';
   end;
   p:='';
   b:=false;
  end;
  dec(i);
 end;
 writeln(s);writeln(k);
 readln;
end.
Там подделаешь выделенное условие под свои согласные...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.12.2009, 23:45   #3
Svetik2252
 
Регистрация: 02.12.2009
Сообщений: 6
По умолчанию

Повторяющихся согласных должно быть только две...
Svetik2252 вне форума Ответить с цитированием
Старый 10.12.2009, 23:49   #4
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

я думаю, нужно распаковку текста сделать...
Alex_FF вне форума Ответить с цитированием
Старый 11.12.2009, 03:16   #5
Svetik2252
 
Регистрация: 02.12.2009
Сообщений: 6
По умолчанию

А как делается распаковка текста? Что-то я уже совсем запуталась...
Svetik2252 вне форума Ответить с цитированием
Старый 11.12.2009, 07:06   #6
Тупой
Форумчанин
 
Аватар для Тупой
 
Регистрация: 26.12.2008
Сообщений: 146
По умолчанию

Svetik2252, а чем не нравится код Stilet-а?
"Hello, world!" - 17 errors 56 warnings
Тупой вне форума Ответить с цитированием
Старый 11.12.2009, 07:54   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Тупой
А тем что мой код не учитывает что в слове могут рядом стоять три одинаковых буквы, а автору нужно только чтоб две.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.12.2009, 13:15   #8
Svetik2252
 
Регистрация: 02.12.2009
Сообщений: 6
По умолчанию

Большое спасибо Stilet-u, помогите пожалуйста доработать код...
Svetik2252 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки в с++.(вывод слов с согласными буквами)) Луцк Помощь студентам 0 15.10.2009 23:00
Вывод слов параграфа разным шрифтом и цветом miatu Microsoft Office Word 1 04.09.2009 13:26
Вывод слов на определенную букву REztor Помощь студентам 12 22.03.2009 21:48
Вывод слов jakson_sun Общие вопросы C/C++ 1 22.01.2009 17:12