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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.12.2011, 03:02   #1
Rus5
Пользователь
 
Регистрация: 12.12.2011
Сообщений: 14
По умолчанию Задача на СТРОКИ Pascal

Ввести строку, все удвоенные буквы заменить одинарными, взаранее благодарен.

Последний раз редактировалось Rus5; 12.12.2011 в 03:05.
Rus5 вне форума
Старый 12.12.2011, 06:26   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Код:
var s:string;
    i:integer;
begin
     readln(s);
     i:=1;
     while i<=length(s) do
     begin
          if s[i]=s[i+1] then s:=copy(s,1,i)+copy(s,i+2,length(s));
          inc(i);
     end;
     writeln(s);
     readln;
end.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума
Старый 12.12.2011, 08:50   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию


ну, это несерьёзно!
Цитата:
Код:
i<=length(s)
...
if s[i]=s[i+1]
при i= Lengths(s) индекс i+1 выйдет за пределы строки!

тогда уже так:
Код:
var s : string;
  i : integer;
begin
  s := 'aa1 aa2aa b2bb';
  WriteLn(s);
  for i:=Length(s)-1 downto 1 do
    if s[i+1]=s[i] then Delete(s, i, 1);
  WriteLn(s);
  Readln;
end.
или так
Код:
var s : string;
  i : integer;
begin
  s := 'aa1 aaaa b2bb';
  WriteLn(s);
  i:=1;
  while i<Length(s) do begin
    if s[i+1]=s[i] then Delete(s, i, 1);
    inc(i)
  end;
  WriteLn(s);
  Readln;
end.
p.s. внимание. Варианты не равнозначные!
эти мои два варианта ПО РАЗНОМУ обработают ситуацию, когда в строке более 2-х одинаковых символов подряд..

Последний раз редактировалось Serge_Bliznykov; 12.12.2011 в 08:53.
Serge_Bliznykov вне форума
Старый 12.12.2011, 10:43   #4
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

вариант с while правильный, с for - нет
и i<length(s) или i<=length(s) нет разницы
и так и эдак работает, разве что во втором случае лишний цикл пройдет
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума
Старый 12.12.2011, 14:08   #5
Rus5
Пользователь
 
Регистрация: 12.12.2011
Сообщений: 14
По умолчанию

Всем очень благодарен за помощь)
Rus5 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] Задача на строки Roomper Помощь студентам 4 07.04.2009 18:25
задача на строки BERT Паскаль, Turbo Pascal, PascalABC.NET 1 07.04.2009 10:07
задача на строки BERT Помощь студентам 1 06.04.2009 20:53
Задача на строки LaSeule Помощь студентам 2 31.01.2009 00:54
задача на строки Hostlman Помощь студентам 2 26.12.2007 03:17