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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2016, 20:01   #11
Нерион
Новичок
Джуниор
 
Регистрация: 14.01.2016
Сообщений: 9
По умолчанию

"abc10def123aaa15qwe7rty2521xxx 552d dd"

abc10def123152521xxx552dd d
нечётные: 123 15 2521
Надо из исходной строки удалить всё что находиться между нечётными числами, а в этом примере нечётные это 123, 15 и 2521 и вывести исправленную строку и нечётные числа как показано сверху.

Последний раз редактировалось Нерион; 14.01.2016 в 20:03.
Нерион вне форума Ответить с цитированием
Старый 14.01.2016, 20:19   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Еще раз - почему именно 123, а не 1, 12315 , 1231525 или 123152521? Они тоже нечетные и ни чем не хуже 123. Или в проге константа - 123 нечетная, остальное не анализировать?]
По первой встреченной нечетной напрашивается 1, 23, 1, 5, 25, 21. И дальше - 5 и 5. Почему 123, 15 и 2521?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.01.2016 в 20:23.
Аватар вне форума Ответить с цитированием
Старый 14.01.2016, 20:24   #13
Нерион
Новичок
Джуниор
 
Регистрация: 14.01.2016
Сообщений: 9
По умолчанию

Ладно другой пример. Скажем вводим строку +5a%bc9 и в итоге должно остаться только +59 так как мы удаляем a%bc и ответ таков: нечётные числа 5;9 полученная строка +59
Нерион вне форума Ответить с цитированием
Старый 14.01.2016, 20:33   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не надо ладно. Надо алгоритм. Твое ладно означает, что цифра и число - синонимы. А это не так
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.01.2016, 20:41   #15
Нерион
Новичок
Джуниор
 
Регистрация: 14.01.2016
Сообщений: 9
По умолчанию

Вы сможете написать программу по нечётным цифрам?
Исходная строка:+5a%bc9
Полученная строка:+59
нечётные цифры: 5,9
Что-бы программа выполняла эти действия(находить нечётные цифры и удалять в строке элементы которые находятся между ними), а для чисел я сам додумаю.
Нерион вне форума Ответить с цитированием
Старый 14.01.2016, 20:44   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Для этой строки могу, и очень просто - результат равен '+59'. Подставь в любой язык. Для других не могу - нет корректной задачи
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.01.2016, 20:46   #17
Нерион
Новичок
Джуниор
 
Регистрация: 14.01.2016
Сообщений: 9
По умолчанию

Мне нужна прога на паскале.
Нерион вне форума Ответить с цитированием
Старый 15.01.2016, 11:20   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если речь идёт про ЦИФРЫ. то задача решается элементарно:
Код:
function DeleteBetweenOddDigits(sInput:string):string;
var s:string;
 i,i1 : integer;
begin
 s := sInput;
 i := Length(s);
 i1 := 0;
 while i>0 do begin
  if s[i] in ['0'..'9'] then
    if odd( ord(s[i]) - ord('0')) then begin
      if i1=0 then i1:=i
      else begin
        Delete(s,i+1, i1-i-1); i1:=i
      end
    end;
  Dec(i)
 end;
 DeleteBetweenOddDigits := s
end;

//s:='abc10def123aaa15qwe7rty2521xxx552ddd'
begin
  WriteLn(DeleteBetweenOddDigits('+5a%bc9'));
end.
если же нужно действительно числа в строке искать, тогда код нужно усложнять!

Последний раз редактировалось Serge_Bliznykov; 15.01.2016 в 11:26.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.01.2016, 11:33   #19
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Код:
if odd( ord(s[i]) - ord('0')) then begin
Нечетные цифры имеют нечетный ASCII-коды, так что достаточно проверить:
Код:
if odd(ord(s[i])) then begin
Arigato вне форума Ответить с цитированием
Старый 15.01.2016, 11:58   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Нечетные цифры имеют нечетный ASCII-коды, так что достаточно проверить
Угу. Знаю.
Можно и так. Это не принципиально и не сильно скажется на эффективности кода.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на паскале: Разделить элементы массива на 2 группы так, что бы разность между ними была минимальна. Rhc Помощь студентам 27 31.12.2013 15:04
Нужно определить нечётные элементы в каждой строке матрицы и заменить их пятерками(5) Climber-18 Помощь студентам 2 30.01.2013 08:35
тяжелая, но интересная задача: Дано 3 числа. Между ними можно ставить знаки операций: сложения, вычитания, умножения, деления ВДПУ Помощь студентам 2 25.02.2012 19:59
В целочисленной матрице NxM в каждой строке определить числа, которых нет в следующей строке (Паскаль) Sheffdmb2010 Паскаль, Turbo Pascal, PascalABC.NET 3 21.10.2011 08:33
потоки и всё что с ними связано (thread). Не компилица( The C++ Builder 3 28.03.2011 03:50