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

текстовая обработка

31.07.2009, 09:58. Показов 1879. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
дано задание:
"Дана последовательность строк. Каждая строка состоит из слов, разделенных пробелами. Написать программу, обеспечивающую ввод строк и их корректировку. Корректировка заключается в выравнивании строк по ширине, размер которой указан с клавиатуры. Выравнивание выполняется по возможности равномерным добавлением пробелов между словами, но не в начале и в конце строки. Вывести на печать исходную и скорректированную последовательности строк."

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

И сразу вопрос второй: если два пробела, то какую лучше проверку делать, чтобы учитывать и их?

то есть допустим дана последовательность: "ывапии ваукела о лотыва"
вот как обрабатывать подобные пробелы?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.07.2009, 09:58
Ответы с готовыми решениями:

Текстовая переменная
Добрый день! Имеется текстовый файл с римскими цифрами. Необходимо распознать их. Я создал словарь 20-ти вариантов римских цифр. ...

Текстовая строка
Всем доброго времени суток) У меня есть один вопрос.Помогите кто сможет. Нужно составить программу, которая может напечатать строку...

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

11
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
31.07.2009, 10:13
Цитата Сообщение от Kender Посмотреть сообщение
то есть допустим дана последовательность: "ывапии ваукела о лотыва"
по моему у тебя здесь везде по одному пробелу
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
31.07.2009, 10:18
Цитата Сообщение от Kender Посмотреть сообщение
весь вопрос в том, что я не пойму, как именно можно вставлять пробелы в строку.
1) считать строку
2) выделить из строки слова
3) посчитать количество слов в строке
4) посчитать общее количество символов, которое занимает строка из одних слов,
без пробелов
5) сравнить полученное число с необходимой шириной.
6) если ширина больше, чем полученное число, то:
а) вычесть ширину из полученного числа
б) полученное вычтенное число поделить на количество слов
в) после каждого слова добавить количество пробелов, равное полученному вычтеному числу.
0
0 / 0 / 0
Регистрация: 28.07.2009
Сообщений: 4
31.07.2009, 10:20  [ТС]
Цитата Сообщение от mamedovvms Посмотреть сообщение
по моему у тебя здесь везде по одному пробелу
не посмотрел. делал несколько.

Цитата Сообщение от zim22 Посмотреть сообщение
1) считать строку
2) выделить из строки слова
3) посчитать количество слов в строке
4) посчитать общее количество символов, которое занимает строка из одних слов,
без пробелов
5) сравнить полученное число с необходимой шириной.
6) если ширина больше, чем полученное число, то:
а) вычесть ширину из полученного числа
б) полученное вычтенное число поделить на количество слов
в) после каждого слова добавить количество пробелов, равное полученному вычтеному числу.
ок. я дошел до указателя на пробел после слова, как именно мне считать то что перед пробелом?
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
31.07.2009, 10:22
вообще я думаю что надо найти во-первых длину строки,
во вторых я бы нашел количество слов в строки что значило бы что промежутков между словами ровно на один меньше чем слов, а затем разницу введенного размера и существующего разделила плюс количество существующих пробелов разделил бы на число промежутков между словами, и как раз бы получил количество пробелов которое должно получиться между словами

Добавлено через 1 минуту 43 секунды
Цитата Сообщение от zim22 Посмотреть сообщение
б) полученное вычтенное число поделить на количество слов
в) после каждого слова добавить количество пробелов, равное полученному вычтеному числу.
только в условие сказано не добавлять в конце и в начале строки пробелы, а значит надо делить на количество слов -1
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
31.07.2009, 10:29
Цитата Сообщение от Kender Посмотреть сообщение
ок. я дошел до указателя на пробел после слова, как именно мне считать то что перед пробелом?
это уже детали реализации, а не алгоритма.
0
0 / 0 / 0
Регистрация: 28.07.2009
Сообщений: 4
31.07.2009, 15:48  [ТС]
ну вот весь вопрос и состоит в том, как реализовать.
тем более что краткую схему алгоритма уже отписали.
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
31.07.2009, 16:47
Цитата Сообщение от Kender Посмотреть сообщение
ну вот весь вопрос и состоит в том, как реализовать.
вы хотите чтобы за вас написали программу?
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
31.07.2009, 16:53
после каждого слова добавить количество пробелов, равное полученному вычтеному числу.
По условию после последнего слова добавлять пробелы нельзя.
0
0 / 0 / 0
Регистрация: 28.07.2009
Сообщений: 4
31.07.2009, 16:54  [ТС]
нет, мне нужна команда, котороый бы я мог разбить предложения на слова.
ведь strcpy тут не подойдет к примеру.
нужно то скопировать элемент с N1 до N2 элемента, а не всю строку.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
31.07.2009, 16:56
memcpy() скопирует тебе сколько нужно элементов.

Добавлено через 1 минуту 13 секунд
В конце концов можно в цикле скопировать
C
1
for ( i= N1; i<=N2; i++ ) { dst[i]= src[i]; }
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
31.07.2009, 16:57
Цитата Сообщение от Kender Посмотреть сообщение
нет, мне нужна команда, котороый бы я мог разбить предложения на слова.
C++
1
2
3
4
5
6
#include <string>
#include <sstream>
std::string s("hello my dear friend");
std::istringstream is(s);
std::string word;
while (is >> word);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2009, 16:57
Помогаю со студенческими работами здесь

С++; компилятор; Текстовая RPG
И так, пару месяцев назад я тут задавался вопросом как создать игру с графикой на С++ в VS2015. Ответа я к сожалению так и не получил, но и...

Текстовая игра (ZPG)
Привет всем. Хочу написать ZPG (Zero Player Game), типа Progress Quest или Годвилль. Собственно, сам вопрос: есть какие-либо...

Текстовая запись числа
Суть в следующем, даны 5 чисел: 1,2,3,4,5. Нужно, чтобы при вводе любого из этих чисел появлялась текстовая запись этого числа. ...

Текстовая игра-симулятор [ищу код]
Доброго времени суток! Ищу код игры наподобие Симулятора Бомжа (на андройде есть такой), Хакера или чего-то такого. Во всех их одна...

Текстовая RPG в консоли по правилам D&D
Доброго времени суток! Решил попробовать себя на новой, так сказать, стезе. Буду рад любой помощи в плане организации хранения информации,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru