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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2012, 15:26   #1
maksimum
Пользователь
 
Регистрация: 07.04.2012
Сообщений: 21
По умолчанию нужно подправить задачу на удаление слова-палиндрома из строки с использованием процедур и функций

Ввести строку текста. Может быть пустая строка или из одних пробелов. Разделители: пробел ,/?.<;>:”!’*%. Слово- любая последовательность символов, ограниченная с одной или двух сторон разделителями. Удалить из строки слово с заданным номером среди палиндромов. Проверку слова на палиндром оформить как функцию.
Код:
program del;
     uses crt;
     const  r:set of char= [' ',',','/','?','.','<',';','>',':','"','!',''','*','%'];
var
  s, inputstr, wordstr, resultstr: string;
  i, deleteid, palindromid: integer;     
               f:boolean; 
function palindrom(const s: string): boolean;
var
  i: integer;
  result: boolean;
begin
  result := false;
  for i := 1 to length(s) div 2 do
    if s[i] <> s[length(s) - i + 1] then exit;
  result := true;
end;     
 
 
begin
  clrscr;
  write('s=');
  readln(inputstr);
  write('delete palindrom #');
  readln(deleteid);
 
  resultstr := '';
  palindromid := 0;
  i := 0;
  while i < length(inputstr) do
    begin
      inc(i);
      if not (inputstr[i] in r) then
        begin
          wordstr := '';
          while (i <= length(inputstr)) and not (inputstr[i] in r) do
            begin
              wordstr := wordstr + inputstr[i];
              inc(i);
            end;
 
          dec(i);  
          if palindrom(wordstr) then
            begin
              inc(palindromid);
              if palindromid <> deleteid then
                resultstr := resultstr + wordstr;
            end
          else
            resultstr := resultstr + wordstr;
        end
      else
        resultstr := resultstr + inputstr[i];
    end;
 
  writeln(resultstr);
  readln;
end.
Нужно, чтобы программа удаляла слово, а не переписывала строку без этого слова
maksimum вне форума Ответить с цитированием
Старый 01.05.2012, 16:46   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Очевидно, надо использовать процедуру
delete (из строки эс, с позиции ка, удалить икс символов)

примерно так)
Код:
while i < length(inputstr) do
    begin
      inc(i);
      if not (inputstr[i] in r) then
        begin
          wordstr := '';
          while (i <= length(inputstr)) and not (inputstr[i] in r) do
            begin
              wordstr := wordstr + inputstr[i];
              inc(i);
            end;
 
          dec(i);  
          if palindrom(wordstr) then
            begin
              inc(palindromid);
              if palindromid = deleteid then begin
                
                 i:= i - length (wordstr); {или i:= i - length (wordstr) +1;}
                 delete (inputstr, pos (wordstr, inputstr), length (wordstr));
            end 
          else
            resultstr := resultstr + wordstr;
        end
      else
        resultstr := resultstr + inputstr[i];
    end;
P.S. если честно то этот код вы писали?
(без обид, просто интересно)
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.

Последний раз редактировалось Niro; 01.05.2012 в 16:57.
Niro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно исправить задачу на удаление строк двумерныого массива с использованием процедур и функций maksimum Помощь студентам 4 01.05.2012 06:33
программы с использованием процедур и функций. E.r.r.o.r. Помощь студентам 3 23.01.2012 09:34
Программирование с использованием процедур и функций vampir3001 Помощь студентам 2 14.12.2011 01:05
переделать задачу с использованием процедур или функций mashat99 Помощь студентам 3 08.04.2011 18:24
Программирование с использованием процедур и функций Лизонька Помощь студентам 2 25.02.2010 22:50