0 / 0 / 0
Регистрация: 23.10.2022
Сообщений: 33
1

В тексте заменить цифры их прописью

09.11.2022, 18:55. Показов 502. Ответов 13
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
Разработайте программу для решения задачи с использованием класса string.
Слова или предложения (в зависимости от задачи) считывать в массив строк.

Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 словами «ноль», «один», ..., «девять», начиная каждое предложение с новой строки.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2022, 18:55
Ответы с готовыми решениями:

Считать текст из файла и заменить цифры их прописью
Здравствуйте, помогите, пожалуйста, написать программу, которая считывает текст из файла и выводит...

Заменить в тексте запись числа прописью на сами числа
Данная строка. Если в строке есть слова, которые выглядят как запись цифры с помощью российско...

Заменить в произвольном тексте цифры на знак*
напишите прогр.,заменяющую в произвольном тексте цифры на знак*

Все цифры в тексте заменить словами
Создайте программу, которая содержит TextBox1 и TextBox2 со свойствами Multiline, а также одну...

13
0 / 0 / 0
Регистрация: 23.10.2022
Сообщений: 33
10.11.2022, 07:12  [ТС] 2
Если есть какие либо уточняющие вопросы по заданию, то я могу с радостью на них ответить, только, пожалуйста, помогите.
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,740
10.11.2022, 07:34 3
Цитата Сообщение от AkitoMLP Посмотреть сообщение
уточняющие вопросы
На кого, сколько и где вы учитесь? Умеете только писать, или уже немного читаете? прочтите
1
519 / 414 / 89
Регистрация: 05.08.2022
Сообщений: 2,258
10.11.2022, 07:40 4
AkitoMLP, вопрос один: что именно у вас не получается сделать? какие уже есть свои наброски?
Если всё - то есть платный раздел
1
Комп_Оратор)
Эксперт по математике/физике
8950 / 4704 / 629
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
10.11.2022, 10:22 5
Лучший ответ Сообщение было отмечено AkitoMLP как решение

Решение

AkitoMLP, функция find_if с условием cymb>='0' && cymb<='9' проходите строку, не забывая перемещать итератор начала поиска, после очередной находки. В новую строку переписываете предыдущий участок (можно повозиться и избежать многократного копирования ) и каждую находку заменяете указанной строкой. Потом, новую строку присваиваете старой. В результате, текст:
"К 2-м годам он начал говорить, а к 12-ти писал достойные стихи." превратится в "К два-м годам он начал говорить, а к одиндва-ти писал достойные стихи." А глаза (и пр. органы) вашего препода увлажнятся от счастья.
0
519 / 414 / 89
Регистрация: 05.08.2022
Сообщений: 2,258
10.11.2022, 10:27 6
IGPIGP, думаю достаточно std::string::replace

Осталось лишь узнать что значит "начиная каждое предложение с новой строки". Тут в самом деле не понятно как одно предложение отличать от следующего.
Моно предложить, что по точке (тогда достаточно replace '.' на '\n'), но в тексте точки могут быть и не только в конце предложения.
Впрочем, задачка учебная, сойдёт.
2
Комп_Оратор)
Эксперт по математике/физике
8950 / 4704 / 629
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
10.11.2022, 12:33 7
KSergey9, я не уверен в валидности итераторов далее по строке в случае replace. А имея в виду неизменяемость строк то и в случае одинакового размера для строкового и числового представления цифр (в русском языке завезут нескоро) итераторы не сохранятся. То есть, итерировать с пересчетом на новую позицию от начала с учётом длины строки (один - 4 символа, три - 3 символа, а девять - аж 5)? Это можно, но строка начнет реаллоцироваться и пошло и поехало. Это долго. Но я же и написал, - есть варианты чтобы:
Цитата Сообщение от IGPIGP Посмотреть сообщение
можно повозиться и избежать многократного копирования
Если не работать с std::basic_string_view то я бы создал вектор строк и отправлял туда кусочки. То есть, там бы вместо цифр появились их строковые слова. А потом, собрал бы в одну строку. Длину вектора (или std::array) можно зарезервировать сразу, посчитав слова вначале. Если хочется чтобы препод не просто обрадовался, а финишировал с пароксизмом довольства.
0
519 / 414 / 89
Регистрация: 05.08.2022
Сообщений: 2,258
10.11.2022, 12:39 8
Цитата Сообщение от IGPIGP Посмотреть сообщение
я не уверен в валидности итераторов далее по строке в случае replace
Зачем вообще итераторы?
Просто все вхождения '1' заменить на "один", все вхождения '2' заменить на "два" и т.д.
Вот и все

Добавлено через 1 минуту
Цитата Сообщение от IGPIGP Посмотреть сообщение
А имея в виду неизменяемость строк
Из чего следует неизменяемость строк? это не понял
0
Комп_Оратор)
Эксперт по математике/физике
8950 / 4704 / 629
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
10.11.2022, 12:42 9
Цитата Сообщение от KSergey9 Посмотреть сообщение
Зачем вообще итераторы?
Просто все вхождения '1' заменить на "один", все вхождения '2' заменить на "два" и т.д.
Вот и все
для одноразовой замены, replace подходит, но если вхождений много, то может вы и не правы. Перечитайте мой опус.

Добавлено через 36 секунд
Цитата Сообщение от KSergey9 Посмотреть сообщение
Из чего следует неизменяемость строк? это не понял
Из того, что хранение строк зависит от реализации.
ps KSergey9, применяя replace, можно получить работоспособный код. Тут спору нет.
0
519 / 414 / 89
Регистрация: 05.08.2022
Сообщений: 2,258
10.11.2022, 12:57 10
Цитата Сообщение от IGPIGP Посмотреть сообщение
для одноразовой замены, replace подходит, но если вхождений много, то может вы и не правы.
Осознал. Вы правы.
Все время забываю, что в С++ нет того, что требуется, зато есть куча всего другого, что пришло кому-то в нездоровую голову.
Готового простого replace (в нормальном понимании "замени вхождение подстроки на другое") в самом деле из коробки нет.

Добавлено через 2 минуты
std::regex_replace - это они, конечно, понапихали, ага. Зачем нам нормальный.
0
Комп_Оратор)
Эксперт по математике/физике
8950 / 4704 / 629
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
10.11.2022, 13:37 11
Цитата Сообщение от KSergey9 Посмотреть сообщение
Готового простого replace (в нормальном понимании "замени вхождение подстроки на другое") в самом деле из коробки нет.
и слава богу что нет. Это же не Java. Тут придётся самому посмотреть хватит ли max_size(), чтобы впихнуть. Однако, автоматизировать неэффективный алгоритм, это как оператор индексации к списку пришить. Нужно просто стараться думать в терминах предложенных языком. Тогда его скорость будет использована.
0
519 / 414 / 89
Регистрация: 05.08.2022
Сообщений: 2,258
10.11.2022, 13:43 12
Цитата Сообщение от IGPIGP Посмотреть сообщение
и слава богу что нет
Я бы понял такую позицию, и даже согласен с ней, если бы эти же самые люди не добавляли разные std::regex_replace и вообще все что только можно.
А вот когда тут так, а там сяк - то я уже даже и не знаю куда всё идет. (Знаю: к питоноплюсам)
0
2886 / 2381 / 716
Регистрация: 29.06.2020
Сообщений: 8,821
10.11.2022, 13:43 13
Цитата Сообщение от IGPIGP Посмотреть сообщение
это как оператор индексации к списку пришить
Таких задач, к сожалению, много.
1
Комп_Оратор)
Эксперт по математике/физике
8950 / 4704 / 629
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
10.11.2022, 13:48 14
Цитата Сообщение от SmallEvil Посмотреть сообщение
Таких задач, к сожалению, много.
И это нормально. Хорошего всегда мало. Это главная причина того... что оно хорошее. Однако, когда я вижу экстремально плохое, хочется как-то пошутить. Или убить кого-то. Поэтому выбираю первое. Как правило)
0
10.11.2022, 13:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2022, 13:48
Помогаю со студенческими работами здесь

10 класс. Заменить цифры в тексте на их названия
Задана строка, состоящая из цифр, букв латинского алфавита и пробелов. В строке замените каждую...

В тексте все цифры заменить на знак пробела
Добрый день! Нужна ваша помощь. Условие: введен текст, все цифры заменить на знак пробела,...

В произвольном тексте заменить арабские цифры символом #
Задается произвольный текст, содержащий не более 10 строк, в каждой строке не более 80 символов....

В введенном тексте заменить все цифры на пробел
написать программу которая в введенном тексте заменяет все цифры на пробел

В заданном тексте заменить все цифры на заданный символ
В заданном тексте заменить все цифры на заданный символ (язык С++)

как заменить все цифры в тексте на соответствующие слова
Здравствуйте. Подскажите пожалуйста, как заменить все цифры в тексте на соответствующие слова)

В тексте созданного файла заменить все цифры словесным названием
Написать программу, которая в тексте созданного файла заменяет все цифры словесным названием (1 –...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru