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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2006, 23:42   #1
Ravenbird
Новичок
Джуниор
 
Регистрация: 31.10.2006
Сообщений: 2
По умолчанию пара вопросов по строкам

1) Дана строка из слов и чисел (от 0 до 1000), надо из неё удалить числа от 0 до 100 и вместо них поставить *
2) В строке найти два слова, одно из которых обращение другого, надо второе слово заменить на первое

извините за весьма глупые вопросы, я только учусь
Ravenbird вне форума Ответить с цитированием
Старый 31.10.2006, 23:52   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

1) надо удалить все цифры. просто смотришь по очереди все сиволы и удаляешь, ели это цифра.
2) не понял.
Alar вне форума Ответить с цитированием
Старый 01.11.2006, 00:00   #3
Ravenbird
Новичок
Джуниор
 
Регистрация: 31.10.2006
Сообщений: 2
По умолчанию

1) ну так как раз проблема, что не все символы-цифры надо удалять, а только числа, которые <100
2) есть предложение, в котором есть слова скажем, "абв" и "вба", надо вместо "вба" написать на то же место "абв"
Ravenbird вне форума Ответить с цитированием
Старый 01.11.2006, 00:05   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Цитата:
Сообщение от Ravenbird Посмотреть сообщение
1) ну так как раз проблема, что не все символы-цифры надо удалять, а только числа, которые <100
Железная логика, а если например было 8544, ты заменил 85 на **, осталось 44, а 44 < 100, значит и его нужно заменить.

Цитата:
Сообщение от Ravenbird Посмотреть сообщение
2) есть предложение, в котором есть слова скажем, "абв" и "вба", надо вместо "вба" написать на то же место "абв"
Я бы сделал бы 2 массива загнал обычные слова в один и перевёрнутые в другой.
Alar вне форума Ответить с цитированием
Старый 01.11.2006, 00:11   #5
Гриха
Вернулся
Форумчанин
 
Аватар для Гриха
 
Регистрация: 29.10.2006
Сообщений: 174
По умолчанию

2)массив это если слова заранее известны
1)ну и задачка...
а вообще зачем оно тебе?
...учись так - будто будешь жить вечно...
...живи так - будто умирать завтра...
Гриха вне форума Ответить с цитированием
Старый 01.11.2006, 06:33   #6
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение

Цитата:
Сообщение от Alar Посмотреть сообщение
Железная логика, а если например было 8544, ты заменил 85 на **, осталось 44, а 44 < 100, значит и его нужно заменить...
Я бы сделал бы 2 массива загнал обычные слова в один и перевёрнутые в другой.
замену нужно делать за один проход..
про массивы верно, без них - никак.

* задачка реальная, че-нить придумаем!
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 03.11.2006, 13:56   #7
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

можно попробовать при сканировании строки и встрече с символом цифры включать вложенный цикл поиска до четвёртого символа от текущего. если при этом число не закончилось, то оно уже >100, если закончилось или закончилось раньше(например встретился пробел), то анализируем встреченное число и, соответственно если удовлетворяет условию меняем на *. получается один проход, правда ещё внутренняя прверка по словам.
Трофимов Александр вне форума Ответить с цитированием
Старый 03.11.2006, 17:09   #8
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

трофимов александр правильно говорит насчёт чисел: ищем символ цифры, если находим, то проверяем следующий,
если цифра то следующий, если и следующий цифра, то забиваем на это дело (любое число из 3х цифр больше либо равно стам!)
есть "-" с отрицательными числами такое не прокатит, нужно ещё и дефисы(минусы) отслеживать. впринципе задача 1 лёгкая.

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

Последний раз редактировалось zetrix; 03.11.2006 в 17:30.
zetrix вне форума Ответить с цитированием
Старый 03.11.2006, 22:55   #9
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Цитата:
Сообщение от гриха Посмотреть сообщение
2)массив это если слова заранее известны
почему? с динамическими массивами знаком?
Alar вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пара вопросов [Smarik] Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 18.04.2008 14:28
Пара вопросов... ~N@um~ Помощь студентам 6 14.07.2007 09:49
Пара вопросов. Kukkk Общие вопросы Delphi 5 03.07.2007 11:40
Пара вопросов xak2 Общие вопросы Delphi 6 08.05.2007 20:58
пара вопросов Trooper Общие вопросы Delphi 3 05.11.2006 17:56