Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 30.10.2011, 16:26   #1 (permalink)
Lucy
Новичок
 
Регистрация: 30.10.2011
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите пожалуйста исправить задачу на строки, Паскаль

Помогите пожалуйста решить задачу: в каждом слове строки удалить символы, совпадающие с первым символом слова.
Я написала программу, но она не работает: в первом слове удаляет символы, совпадающие с первым, а дальше удаляет символы, совпадающие с первым символом второго слова(даже если слов больше чем 2) и если ввести подряд несколько совпадающих символов, то удаляется только половина.

Программа:

uses crt;
var s:string;
c:char;
i:integer;
begin
readln(s);
while s[1]=' ' do
delete(s,1,1);
c:=s[1];
for i:=2 to length(s) do
if s[i]<>' ' then
begin
if s[i]=c then delete(s,i,1);
end
else
begin
c:=s[i+1];
i:=i+2;
while s[i]<>' ' do
begin
if s[i]=c then delete(s,i,1);
i:=i+1;
end;
end;
write(s);
end.
Lucy вне форума   Ответить с цитированием

Старый 30.10.2011, 16:26
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Аналогичные темы уже тут встречались, вот их список

Помогите решить задачу по C++, пожалуйста
Open GL, пожалуйста, помогите исправить ошибки в программе

Старый 30.10.2011, 18:03   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Lucy Посмотреть сообщение
Помогите пожалуйста решить задачу: в каждом слове строки удалить символы, совпадающие с первым символом слова. Я написала программу, но она не работает: в первом слове удаляет символы, совпадающие с первым, а дальше удаляет символы, совпадающие с первым символом второго слова(даже если слов больше чем 2) и если ввести подряд несколько совпадающих символов, то удаляется только половина. Программа:
Чего-то Вы там явно лишнего накрутили. Я бы решил так (проверено):
Код:
var
 s:string;
 c:char;
 i:integer;
begin
 writeln('Enter the string:');
 readln(s);
 while s[1]=' ' do
  delete(s,1,1);
 i:=0;
 Repeat
  inc(i);
  c:=s[i];
  repeat
   inc(i);
   if s[i]=c then
    begin
     delete(s,i,1);
     dec(i);
    end;
  until (s[i]=' ') or (i=length(s));
 Until i=length(s);
 writeln(s);
 readln
end.
Vladimir_S вне форума   Ответить с цитированием
Старый 30.10.2011, 20:06   #3 (permalink)
Lucy
Новичок
 
Регистрация: 30.10.2011
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое, всё работает!
Lucy вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 23:56.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.