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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2011, 23:39   #11
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Кстати, могу просто посоветовать завести вторую строку и поместить в неё все символы первой строки, которые не являются запятыми...

опоздал... пост номер 2...

Единственный недостаток - он "стрёмный" в плане сдачи, если речь идёт о "лабе"...
лёгкий через чур...

Последний раз редактировалось Вадим Мошев; 14.05.2011 в 23:42.
Вадим Мошев вне форума Ответить с цитированием
Старый 15.05.2011, 00:26   #12
just4smth
_____________
Пользователь
 
Регистрация: 14.05.2011
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Единственный недостаток - он "стрёмный" в плане сдачи, если речь идёт о "лабе"...
лёгкий через чур...
Эм... тогда можно всё это на делфи красиво оформить
Главное выполнить задачу, а каким способом - преподов это не сильно волнует
just4smth вне форума Ответить с цитированием
Старый 15.05.2011, 06:43   #13
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
Program var15_stroki;
Uses crt;
Var s:string;
Begin
clrscr;
Writeln('Введите строку');
Readln(s);
while pos(',',s)<>0 do
delete(s,pos(',',s),1);
Writeln(s);
Readln;
End.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 15.05.2011, 10:37   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я удивлён, за дюжину постов никто не вспомнил и не предложил "классический" приём.

Если в цикле FOR в процессе удаления изменяется длина (количество) обрабатываемых объектов, то самое простое решение (если есть желание оставить цикл FOR а не перейти на циклы с пред/постусловием) - это обработка элементов в обратном порядке - ОТ ПОСЛЕДНИХ к ПЕРВЫМ!

в данном случае:
Код:
        for i:=Length(s) downto 1 do
           if s[i]=',' then
               Delete(s,i,1);

        Writeln(s);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.05.2011, 14:56   #15
just4smth
_____________
Пользователь
 
Регистрация: 14.05.2011
Сообщений: 30
По умолчанию

Цитата:
а не перейти на циклы с пред/постусловием
Для полноты ответа можно пример с циклом repeat until?

Последний раз редактировалось just4smth; 15.05.2011 в 15:03. Причина: Разобрался, спасибо Mad_Cat
just4smth вне форума Ответить с цитированием
Старый 15.05.2011, 14:59   #16
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
i:=1;
repeat 
if s[i]:=',' then
delete(s,i,1) else i:=i+1;
until i>length(s) ;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 15.05.2011 в 15:01.
Mad_Cat вне форума Ответить с цитированием
Старый 15.05.2011, 20:46   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Позвольте сделать маленький комментарий к коду (c) Mad_Cat.

1) поправочка (в коде опечатка, в сравнении if s[i] должен быть не знак присвоения, а знак проверки на равенство!

2) Важно! Код корректен только если строка s не пуста!
В противном случае будет ошибка на s[i]

поэтому, позвольте предложить такой чуть-чуть поправленный вариант:
Код:
i:=1;
repeat 
  if i<=Length(s) then
     if s[i]=',' then delete(s,i,1) 
     else i:=i+1;
until i>length(s) ;
хотя, в реальной жизни, я бы, (ну, если бы ОЧЕНЬ нужно было использовать цикл repeat .. until, разумеется!) написал так:
Код:
if Length(s)>0 then begin
  i:=1;
  repeat 
     if s[i]=',' then delete(s,i,1) 
     else i:=i+1;
  until i>length(s);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.05.2011, 21:15   #18
just4smth
_____________
Пользователь
 
Регистрация: 14.05.2011
Сообщений: 30
По умолчанию

Serge_Bliznykov, спасибо за исправления/дополнения.
К стати первоначальный вариант сообщения Mad_Cat, выглядел примерно так (в истории правок точнее посмотрите):
Код:
 repeat Delete(s,pos(',',s),1) until pos(',',s)=0;
[оффтопик]
Бысто, всё-таки, гугл страницы индексирует, по запросу "удалить из текста все запятые", http://programmersforum.ru/ - занимает первое место
[/оффтопик]
just4smth вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление из строки лишних символов maxefficiently Общие вопросы Delphi 2 01.03.2011 08:53
Удаление символов из строки NAS1977mu Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 09.01.2011 13:05
Удаление из строки всех не alpha символов skeletor PHP 3 12.07.2010 17:28
Удаление символов из строки Jasper92 Общие вопросы C/C++ 1 17.01.2010 20:41
Удаление символов из строки stscolt Помощь студентам 0 28.12.2009 12:34