Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Через 3 дня :

День победы русской эскадры под командованием П.С. Нахимова над турецкой эскадрой у мыса Синоп (1853)


Надо удалить слово из строки.
На страницу 1, 2  След.

Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
Пол:Жен Ellita
Новичок


Возраст: 31
Знак зодиака: Дева
Зарегистрирован: 20.05.2007
Сообщения: 2

СообщениеПн, 21-Май-2007 19:37    Заголовок сообщения: Надо удалить слово из строки.
Цитата

Нужно удалить слово из строки заканчивающееся на "ая"


 Описание:
 Размер:  4.88 KB
 Просмотрено:  5736 раз(а)




В начало
Посмотреть профиль Отправить личное сообщение
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 38
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5708
Откуда: Донецк
СообщениеПн, 21-Май-2007 23:13 
Цитата

Я виртуальная1.GIF >> Я 1.GIF
_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж NikotiN
Розовый мамонт


Возраст: 32
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеВт, 22-Май-2007 0:07 
Цитата

а я думаю что "Я .GIF" будет
2 Ellita
чей приз? кто угадал?

_________________
Сила дурака в том, что умный перед ним бессилен.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Шурик
Я живу тут....


Возраст: 48
Знак зодиака: Овен
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
СообщениеВт, 22-Май-2007 1:23 
Цитата

to Ellita
Тебе нужно:
1. Разобрать текст на слова
2. Убрать "ненужные" слова
3. Составить преобразованный текст из слов, исключая "ненужные"

Разбор слов недавно обсуждался ТУТ. Там даже код написали.
Остальное должно быть не слишком сложно.

_________________
Ответ готов, готов ли твой вопрос?
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Alekc
Частый гость




Зарегистрирован: 01.04.2007
Сообщения: 28

СообщениеВт, 22-Май-2007 8:51 
Цитата

to DrPass
to NikotiN
А мой вариант: Я виртуальная1.GIF ;)
В начало
Посмотреть профиль Отправить личное сообщение
CyberMerlin
Гость







СообщениеВт, 22-Май-2007 10:13 
Цитата

to Alekc
и я с этим согласен Улыбка

поэтому приз будет мой Улыбка
В начало
Пол:Муж Ktf
Администратор


Возраст: 39
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеВт, 22-Май-2007 10:21 
Цитата

to all
парни, ну не заставляйте меня писать еще и эту функцию.
давайте для разнообразия это сделает кто-нибудь из вас.
тут делов-то на 15 минут.
LOL

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
Alekc
Частый гость




Зарегистрирован: 01.04.2007
Сообщения: 28

СообщениеВт, 22-Май-2007 11:26 
Цитата

delphi:
  1. function DelAYa(const str: string): string;
  2. const
  3.   del = [' '..'/',':'..'@'];
  4.   aya = $FFE0; { ord('я') shl 8 or ord('а') }
  5. var
  6.   s, d, l: integer;
  7.   idx: integer;
  8. begin
  9.   result := str;
  10.   l := length(str);
  11.   if l > 1 then begin
  12.     s := 1;
  13.     d := 2;
  14.     for idx := 3 to l do begin
  15.       inc(d);
  16.       if str[idx] in del then begin
  17.         if PWord(@str[idx - 2])^ = aya then
  18.           d := s;
  19.         s := d + 1;
  20.       end;
  21.       result[d] := str[idx];
  22.     end;
  23.     if PWord(@str[l - 1])^ = aya then
  24.       d := s - 1;
  25.     setlength(result, d);
  26.   end;
  27. end;
  28.  
  29. procedure TForm1.btn1Click(Sender: TObject);
  30. const
  31.   str = 'А я вот такая вся из себя никакая! -> Я виртуальная1.GIF';
  32. begin
  33.   ShowMessage(DelAYa(str))
  34. end;


to Ktf
Мне уже интересно - оптимизировать сможешь ? 91 байт atm ;)

Блин, не досмотрел str = '' :(


Последний раз редактировалось: Alekc (Вт, 22-Май-2007 12:53), всего редактировалось 4 раз(а)
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Ktf
Администратор


Возраст: 39
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеВт, 22-Май-2007 11:48 
Цитата

to Alekc
браво )

Добавлено спустя 22 минуты 5 секунд:

Отличное решение!

Я могу предложить только лишь сократить конструкцию
PWord(PChar(@str[idx - 2]))^
до
PWord(@str[idx - 2])^

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
Alekc
Частый гость




Зарегистрирован: 01.04.2007
Сообщения: 28

СообщениеВт, 22-Май-2007 12:25 
Цитата

Уже, ты просто окно не обновил :)

Кстати, зачем тут
result[d] := str[idx];
компилятор вызывает UniqueString ?..
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Ktf
Администратор


Возраст: 39
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеВт, 22-Май-2007 12:50 
Цитата

to Alekc
Таковы особенности работы компилятора дельфи со строками.

Но если по своей прихоти хочешь, чтобы компилятор не вызывал эту функцию, работай со строкой, как с байтовым массивом.
Например:
delphi:
  1. function DelAYa(const str: string): string;
  2. type
  3.   tba = array of byte;
  4. .....
  5.     tba(result)[d-1] := ord(str[idx]);
  6. .....


Добавлено спустя 7 минут 4 секунды:

to Alekc
Я вижу, ты всерьез закопался в этой функции.
Брось ты это неблагодарное дело, а то у меня уже начали появляться претензии к качеству кода. Впрочем, все это такие мелочи, что правильнее всего будет закрыть тему.

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
Alekc
Частый гость




Зарегистрирован: 01.04.2007
Сообщения: 28

СообщениеВт, 22-Май-2007 13:07 
Цитата

to Ktf
Спасибо. Продолжаем мучать код :)

delphi:
  1. function DelAYa(const Str: string): string;
  2. const
  3.   Del = [' '..'/',':'..'@','['..']','{'..'}'];
  4.   aya = $FFE0; { ord('я') shl 8 or ord('а') }
  5. type
  6.   tca = array of Char;
  7. var
  8.   s, d, l: Integer;
  9.   Idx: Integer;
  10. begin
  11.   Result := Str;
  12.   l := Length(Str);
  13.   if l > 1 then begin
  14.     s := 0;
  15.     d := 1;
  16.     for Idx := 3 to l do begin
  17.       Inc(d);
  18.       if Str[Idx] in Del then begin
  19.         if PWord(@Str[Idx - 2])^ = aya then
  20.           d := s;
  21.         s := d + 1;
  22.       end;
  23.       tca(Result)[d] := Str[Idx];
  24.     end;
  25.     if PWord(@Str[l - 1])^ = aya then
  26.       d := s - 1;
  27.     SetLength(Result, Succ(d));
  28.   end;
  29. end;


Добавлено спустя 1 минуту 25 секунд:

У меня просто сегодня на работе затишье :)
Вот и страдаю фигней...

А про претензии поподоробнее можно ?..
В начало
Посмотреть профиль Отправить личное сообщение
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 38
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5708
Откуда: Донецк
СообщениеСр, 23-Май-2007 21:18 
Цитата

to Ktf
to Alekc
Блин, сделали из форума филиал детского сада с кружком юных программистов :)))

_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Ktf
Администратор


Возраст: 39
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеЧт, 24-Май-2007 4:22 
Цитата

to DrPass
ну че ты! не даешь мне даже поразвлекаться )
я мож тренируюсь перед грядущим приходом студентов под мое начало )

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж FIDO
Я живу тут....


Возраст: 30
Знак зодиака: Рыбы
Зарегистрирован: 21.03.2007
Сообщения: 483
Откуда: г. Тверь
СообщениеЧт, 24-Май-2007 7:37 
Цитата

to Ktf:
=) весьма кстати замечено... насчет студентов

_________________
Существуют три вида лжи: бахвальство, вранье и отчетность.
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Страница 1 из 2 На страницу 1, 2  След.
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100