0 / 0 / 0
Регистрация: 05.02.2021
Сообщений: 7

Строка: Удалить группы пробелов, которыми начинается и заканчивается строка

09.02.2021, 10:59. Показов 1843. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана строка символов.
Удалить группы пробелов, которыми начинается и заканчивается строка, а также заменить каждую внутреннюю группу пробелов одним пробелом.
Заменить каждую группу стоящих рядом точек многоточием (т.е. тремя точками).
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2021, 10:59
Ответы с готовыми решениями:

Удалить группы пробелов, которыми начинается и заканчивается строка
Дана строка символов. 1. Удалить группы пробелов, которыми начинается и заканчивается строка, а также заменить каждую внутреннюю...

Удалить группы пробелов, которыми начинается и заканчивается строка
Составить подпрограммы для решения следующих задач: 2. Задана строка символов. Преобразовать эту строку следующим образом: удалить группы...

Удалить группы пробелов, которыми начинается и заканчивается последовательность
Дан текст. Преобразовать его следующим образом: удалить группы пробелов, которыми начинается и заканчивается последовательность, а также...

11
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
09.02.2021, 12:35
Лучший ответ Сообщение было отмечено Help me_ как решение

Решение

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
29
var s:string;
    i,j,k:integer;
begin
writeln('Введите строку с начальными и конечными пробелами, содерзащую группы точек');
readln(s);
while s[1]=' ' do delete(s,1,1);
while s[length(s)]=' ' do delete(s,length(s),1);
while pos('  ',s)>0 do delete(s,pos('  ',s),1);
i:=1;
while i<=length(s) do
if s[i]='.' then
 begin
  k:=0;
  j:=i;
  while(j<=length(s))and(s[j]='.')do
   begin
    inc(k);
    j:=j+1;
   end;
  if k<>3 then
   begin
    delete(s,i,k);
    insert('...',s,i);
   end
  else inc(i,k);
 end
else inc(i);
write(s)
end.
0
0 / 0 / 0
Регистрация: 05.02.2021
Сообщений: 7
09.02.2021, 12:50  [ТС]
Спасибо)
0
 Аватар для mr-Crocodile
3051 / 1670 / 657
Регистрация: 19.03.2019
Сообщений: 5,378
09.02.2021, 13:40
если s пустая строка, то s[1]=' ' вылетит за пределы строки.
если в строке нет ничего, кроме пробелов, то s[length(s)]=' ' тоже некорректно.
я бы добавил проверку на то, что length(s) > 0
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
09.02.2021, 13:43
Если програма пишет тебе
Цитата Сообщение от Puporev Посмотреть сообщение
Введите строку с начальными и конечными пробелами, содерзащую группы точек
а ты вводишь пустую строку, то тебе нужно провериться.
0
 Аватар для mr-Crocodile
3051 / 1670 / 657
Регистрация: 19.03.2019
Сообщений: 5,378
09.02.2021, 14:09
Цитата Сообщение от Puporev Посмотреть сообщение
Если програма пишет тебе
и что.

по условию задачи
Цитата Сообщение от Help me_ Посмотреть сообщение
Дана строка символов.
про то, сколько там символов и какие они - ничего не известно.
просто строка дана.
ну и писать код, который вываливается в ошибки - это явно не признак мастерства.

Добавлено через 3 минуты
p.s. Вы же любите писать что-то вроде
Pascal
1
2
3
4
repeat
  writeln('Введите строку с начальными и конечными пробелами, содержащую группы точек');
  readln(s);
until (length(s)>0) and (Pos(' ',s)>1) and (Pos('.',s)>1);
вот тогда можно обращаться к первому элементу строки без проблем и не переживать, что будет, если строка полностью из пробелов состоит.

хотя, на мой взгляд, лучше и проще дописать проверку.
0
Модератор
10165 / 5503 / 3371
Регистрация: 17.08.2012
Сообщений: 16,824
12.02.2021, 17:13
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  s: string;
  i: integer;
begin
  writeln('Введите строку:');
  readln(s);
  for i := length(s) downto 1 do
  if (s[i] = ' ') and ((i = length(s)) or (i < length(s)) and (s[i+1] = ' ')) then
    delete(s, i, 1)
  else
    if s[i] = '.' then insert('..', s, i);
  if pos(' ', s) = 1 then delete(s, 1, 1);
  writeln('Преобразованная строка:');
  writeln(s);
  readln
end.
0
 Аватар для mr-Crocodile
3051 / 1670 / 657
Регистрация: 19.03.2019
Сообщений: 5,378
12.02.2021, 17:23
Cyborg Drone, хочу уточнить.
а точно вот эта строка
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Pascal
11
    if s[i] = '.' then insert('..', s, i);
выполнит замену группы точек на троеточие
Цитата Сообщение от Help me_ Посмотреть сообщение
каждую группу стоящих рядом точек многоточием (т.е. тремя точками).
?
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
12.02.2021, 17:27
Если группа из одной точки, то нужно просто добавить еще 2.
0
Модератор
10165 / 5503 / 3371
Регистрация: 17.08.2012
Сообщений: 16,824
12.02.2021, 18:02
Ну, если формально, то это не замена, а модификация. Чтобы была замена, нужно удалить одну точку, и на её место вставить три.
0
 Аватар для mr-Crocodile
3051 / 1670 / 657
Регистрация: 19.03.2019
Сообщений: 5,378
12.02.2021, 18:13
Цитата Сообщение от Puporev Посмотреть сообщение
Если группа из одной точки, то нужно просто добавить еще 2.
а если группа из четырёх точек? из пяти точек? Из семи точек? (и т.д.)

вместо них должно остаться только троеточие, я верно понял задание?

Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Ну, если формально, то это не замена, а модификация. Чтобы была замена, нужно удалить одну точку, и на её место вставить три.
т.о. если в коде есть рядом две точки, то ваш код заменит их на три?
а если группа из пяти точек, она будет заменена на три?

Добавлено через 27 секунд
задание, конечно, идиотское...
0
Модератор
10165 / 5503 / 3371
Регистрация: 17.08.2012
Сообщений: 16,824
12.02.2021, 18:30
Я неверно понял задание.

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

Вот так правильно:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  s: string;
  i: integer;
begin
  writeln('Введите строку:');
  readln(s);
  for i := length(s) downto 1 do
  if (s[i] = ' ') and ((i = length(s)) or (i < length(s)) and (s[i+1] = ' ')) then delete(s, i, 1);
  if pos(' ', s) = 1 then delete(s, 1, 1);
  while pos('...', s) > 0 do delete(s, pos('...', s), 1);
  for i := length(s) - 1 downto 1 do if (s[i] = '.') and (s[i+1] = '.') then insert('.', s, i);
  writeln('Преобразованная строка:');
  writeln(s);
  readln
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.02.2021, 18:30
Помогаю со студенческими работами здесь

Удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом
Задана строка символов. Преобразовать эту строку следующим образом: удалить группы пробелов, которыми начинается и заканчивается строка, а...

Удалить группы пробелов если имеются те, которыми эта строка начинается и заканчивается
Дана строка,преобразовать ее следующим образом:удалить группы пробелов если имеються которыми эта строка начинаеться и заканчивается,...

Удалить группы пробелов, которыми начинается и которыми заканчивается последовательность
Переведите пожалуйста с Pasсal/Basic на C. Задание: Известно, что в исходной строке есть хотя бы один символ, отличный от пробела....

Удалить группы пробелов, которыми начинается и которыми заканчивается последовательность
Я программирую только на C++, Pascal. Потребовалась программа на Basic, а учить его ради одной программы просто нет смысла. Напишите,...

Удалить из последовательности группы пробелов, которыми она начинается и заканчивается
Даны натуральное число n, символы S1,...,Sn. Известно, что среди символов есть хотя бы один, отличный от пробела. Удалить из...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru