С Новым годом! Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 17.09.2015
Сообщений: 7

Оставить в строке только первое и последнее вхождение цифр каждого слова

16.03.2016, 01:12. Показов 1740. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка s, оставить в ней только первое и последнее вхождение цифр каждого слова, распечатать строку.
Тоисть на вход 10001 555111, на выходе должно быть 1001 5511
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2016, 01:12
Ответы с готовыми решениями:

Оставить в строке только первое вхождение каждого символа. Взаимный порядок оставленных символов сохранить
Решил данную задачу так: //Оставить в строке только первое вхождение каждого символа. Взаимный порядок оставленных символов сохранить ...

Дана строка, состоящая из слов, оставить только последнее вхождение каждого слова
Дана строка, состоящая из слов оставить только последнее вхождение каждого слова

Оставить в слове только первое и последнее вхождение каждой буквы
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами -...

2
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
16.03.2016, 08:08
Лучший ответ Сообщение было отмечено markcod3 как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
begin
  var S := ReadLnString('S =');
  var W := S.ToWords; // Разбить на отдельные слова
  S := '';
  for var i := 0 to W.Length-1 do
    begin
      for var c := #48 to #57 do // Каждую цифру поотдельности
        begin
          var f := W[i].IndexOf(c) + 1; // Позиция цифры слева
          var l := W[i].LastIndexOf(c) + 1; // Позиция цифры справа
          if (f > 0) and (l > f) then // Встречается цифра и не менее двух раз
            begin
              W[i][f] := #0; W[i][l] := #0; // Заменим перую и последнюю на подстановочный символ
              W[i] := W[i].Replace(c, '').Replace(#0, c); // Удалим все остальные и вернём подстановочные
            end;
        end;
      S += #32 + W[i]; // Соберём строку заново
    end;
  S := S.TrimStart(#32);
  WriteLn('S = ' + S);
end.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
16.03.2016, 11:46
Лучший ответ Сообщение было отмечено markcod3 как решение

Решение

Чтобы не терять разделители между словами (мало ли, будет в строке три пробела вместо одного) - делаем вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var
  L: List<KeyValuePair<integer, integer>> := new List<KeyValuePair<integer, integer>>;
 
begin
  var s: string := '100001 555111';
  var wrd: string;
  
  for var i: integer := 1 to s.Length do
  begin
    if (s[i] = ' ') or (i = s.Length) then
    begin
      wrd := wrd + (i = s.Length ? '' + s[i] : '');
      L.Add(new KeyValuePair<integer, integer>(i + ord(i = s.Length) - wrd.Length - 1, wrd.Length));
      wrd := '';
    end
    else wrd := wrd + s[i];
  end;
  
  L.Reverse;
  foreach var pair in L do
  begin
    wrd := s.Substring(pair.key, pair.value);
    for var i: integer := wrd.Length downto 1 do
      wrd := wrd.Remove(pred(i), ord((wrd.IndexOf(wrd[i]) < pred(i)) and (wrd.LastIndexOf(wrd[i]) > pred(i))));
    s := s.Remove(pair.key, pair.value).Insert(pair.key, wrd);
  end;
  writeln(s);
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2016, 11:46
Помогаю со студенческими работами здесь

Множества: Оставить в строке только последнее вхождение символа
Оставить в строке только последнее вхождение символа, взаимный порядок. например мама мыла раму-ыл раму.Решить через множества. заранее...

В каждой строке для всех слов, которые встречаются в строке больше одного раза, оставить только первое вхождение
Народ, помогите Нужно в каждой строке для всех слов, которые встречаются в строке больше одного раза, оставить только первое вхождение.

От каждого слова в строке оставить только первые 3 буквы.
Дана строка. От каждого слова оставить только первые 3 буквы. Например, вводим &quot;мама мыла раму&quot;, получаем &quot;мам мыл...

В списке L оставить только первое вхождение группы одинаковых элементов
Здравствуйте. Помогите пожалуйста решить задачу: В списке L оставить только первое вхождение группы одинаковых элементов.

Функция удаляющая первое и последнее вхождение в строке заданного символа
Функция удаляет первое и последнее вхождение в строке заданного символа.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru