С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Kender
0 / 0 / 0
Регистрация: 28.07.2009
Сообщений: 4
#1

текстовая обработка - C++

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

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

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

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

то есть допустим дана последовательность: "ывапии ваукела о лотыва"
вот как обрабатывать подобные пробелы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2009, 09:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос текстовая обработка (C++):

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

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

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

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

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

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

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

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

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

Добавлено через 1 минуту 13 секунд
В конце концов можно в цикле скопировать
C
1
for ( i= N1; i<=N2; i++ ) { dst[i]= src[i]; }
0
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
31.07.2009, 16:57 #12
Цитата Сообщение от 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
31.07.2009, 16:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2009, 16:57
Привет! Вот еще темы с ответами:

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

Почему указатель на символ интерпретируется как текстовая строка - C++
Почему указатель на символ является строкой?

С клавиатуры вводится текстовая строка на русском языке. Найдите количество гласных и согласных букв. - C++
С клавиатуры вводится текстовая строка на русском языке. Найдите количество гласных и согласных букв. Используйте фильтр для ввода только...

Текстовая игра "Кто хочет стать миллионером?" с использованием классов - C++
Нужно создать игру кто хочет стать миллионером. С 2 подсказками 50 на 50 и помощью зала.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.