Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 24.04.2015
Сообщений: 132
1

"Выравнивание" предложения добавлением необходимого числа пробелов

26.04.2015, 18:55. Показов 650. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо выровнять предложение. Выравнивание заключается в том, что необходимо получить заданную длину предложения добавляя необходимое количество пробелов. Количество пробелов не должно отличаться более чем на 1. Определить функцию для выравнивания предложения.
(Надо сделать через функции).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2015, 18:55
Ответы с готовыми решениями:

Выравнивание текста добавлением пробелов
Добрый день, прошу помощи с написанием программы. Задание - "Текст, состоящий из нескольких строк,...

Выравнивание строки добавлением пробелов справа
Здравствуйте уважаемые форумчане ! во вьюехе <%= tovar.title %> <%= tovar.price...

Выравнивание текста по ширине добавлением пробелов
Всем привет! Пишу программу выравнивания текста по ширине(нужная длинна строки вводиться с...

Переформировать строку, продлив к длине 60 равномерным добавлением пробелов между словами
Помогите пожалусто зделать задачу на паскале, непойму как делать...... Рус: Задача: Ввести...

Выравнивание по ширине путем добавления пробелов
В общем, нужно выравнивать все строки в тексте до определенной длины(допустим, 50 символов) путем...

6
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
26.04.2015, 22:54 2
как то так
C++
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <conio.h>
#include <ctime>
#include <locale>
 
 
using namespace std;
void vivod(char *p);//функция вывода строки
void preobr(char *x, int length); // функция выравнвания
int main()
{
    setlocale(LC_ALL,"Rus");
char str1[256],str2[256],str3[256];
char *p1=str1,*p2=str2,*p3=str3;[QUOTE]
int minlen=0,len;[/QUOTE]
cout<<"введите строку 1:"<<endl;
gets(p1);
 
cout<<"введите строку 2:"<<endl;
gets(p2);
 
cout<<"введите строку 3:"<<endl;
gets(p3);
if(minlen<strlen(p1))minlen=strlen(p1);
if(minlen<strlen(p2))minlen=strlen(p2);
if(minlen<strlen(p3))minlen=strlen(p3);
cout<<"задайте длину строки, не меньше "<<minlen<<":"<<endl;
cin>>len;
if(len<minlen){cout<<"ошибка"<<endl; return 0;}
 
preobr(p1,len);preobr(p2,len);preobr(p3,len);
vivod(p1);vivod(p2);vivod(p3);
return 0;
 
 
 
}
 
void vivod(char *p)
{
int i,len;
len=strlen(p);
for(i=0;i<=len;i++)
    cout<<p[i];
cout<<endl;
}
void preobr(char *x, int length)
{
 int i,len;
 char probeli[256];
 len=strlen(x);
 length-=len;
 for(i=0;i<=length;i++)  //делаем строку из недостающих пробелов
 {
    probeli[i]=' ';
    probeli[i+1]='\0';  //вставляем нулевой символ в конец стркои
 }
 strcat(probeli,x); //присоеденяем пробелы к x
 strcpy(x,probeli);
 probeli[0]='\0';
 
}
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
27.04.2015, 13:14 3
C++
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/////////////////////////////////////////////////////////////////////////////////////////
//Необходимо выровнять предложение. Выравнивание заключается в том, что необходимо получить 
//заданную длину предложения добавляя необходимое количество пробелов. Количество пробелов 
//не должно отличаться более чем на 1. Определить функцию для выравнивания предложения.
//(Надо сделать через функции).
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cctype>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
/////////////////////////////////////////////////////////////////////////////////////////
void    trim_back( T_str    &   s )
{
    while   (
                    !s.empty()
 
                &&  std::isspace
                        (
                            s.back()
                        )
            )
    {
        s.pop_back();
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
T_str   get_compact_sentence( T_str     const   &   s )
{
    std::istringstream  ssin(s);
    std::ostringstream  sout;
 
    std::copy
        (
            std::istream_iterator<T_str>    ( ssin      ),
            std::istream_iterator<T_str>    (),
            std::ostream_iterator<T_str>    ( sout, " " )
        );
 
    T_str   res_s   =   sout.str();
    res_s.pop_back();
    return  res_s;
}
/////////////////////////////////////////////////////////////////////////////////////////
T_str   get_align_sentence
    (
        T_str   const   &   s,
        int                 res_s_size
    )
{
    auto    res_s(s);
 
    for (
            auto    symb_it         =   res_s.begin();
            int( res_s.size() )     <   res_s_size;
        )
    {
        symb_it     =   std::adjacent_find
                            (
                                symb_it,
                                res_s.end(),
 
                                []  (
                                        char    L,
                                        char    R
                                    )
 
                                {
                                        return          std::isspace(L)
                                                &&  !   std::isspace(R);
                                }
                            );
 
        symb_it     =   symb_it     ==  res_s.end()
                            ?   res_s.begin()
                            :   ++++res_s.insert
                                        (
                                            symb_it,
                                            ' '
                                        );
    }//for
 
    return  res_s;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::locale::global(std::locale(""));
 
    for(;;)
    {
        T_str   s;
        T_str   compact_s;
 
        do
        {
            std::cout   <<  std::endl
                        <<  std::endl
                        <<  "Введите предложение из двух или более слов:"
                        <<  std::endl;
 
            std::cin.sync();
            getline( std::cin,  s );
            trim_back(s);
 
            if  (
                    s.empty()
                )
            {
                continue;
            }
 
            compact_s   =   get_compact_sentence(s);
        }
        while   (
                    compact_s.find(' ')     ==  T_str::npos
                );
 
        int     res_s_size  =   0;
 
        do
        {
            std::cout   <<  "Введите длину строки >= "
                        <<  compact_s.size()
                        <<  ": ";
 
            std::cin    >>  res_s_size;
        }
        while   (
                    res_s_size  <   int (
                                            compact_s.size()
                                        )
                );
 
        std::cout   <<  "Выровненная строка:"
                    <<  std::endl
 
                    <<  get_align_sentence
                            (
                                compact_s,
                                res_s_size
                            )
 
                    <<  std::endl;
    }//for
}
0
0 / 0 / 1
Регистрация: 24.04.2015
Сообщений: 132
28.04.2015, 12:32  [ТС] 4
Необходимо выровнять предложение. Выравнивание заключается в том, что необходимо получить заданную длину предложения добавляя необходимое количество пробелов. Количество пробелов не должна отличаться более чем на 1. Определить функцию для выравнивания предложения.
решите мне эту задачу пожалуйста,только пробелы нужно не сначала добавлять,а после слова
0
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
28.04.2015, 13:59 5
поменяй
C++
1
2
strcat(probeli,x); //присоеденяем пробелы к x
 strcpy(x,probeli);
C++
1
на strcat(x,probeli);
0
0 / 0 / 1
Регистрация: 24.04.2015
Сообщений: 132
28.04.2015, 17:25  [ТС] 6
не помогает , теперь просто после слова по 1 пробелу и всё

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

Добавлено через 1 час 46 минут
помогите пожалуйста.....
0
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
28.04.2015, 18:05 7
все работает, для проверки удалил cout<<endl; в функции vivod()
"Выравнивание" предложения добавлением необходимого числа пробелов
0
28.04.2015, 18:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2015, 18:05
Помогаю со студенческими работами здесь

Текст программы лежит в текстовом файле. Пометить степень вложенности циклов добавлением соотв. кол-ва пробелов слева.
Вообщем задача следующая: Текст программы лежит в текстовом файле. Пометить степень вложенности...

Выравнивание текста по правому краю (вставка пробелов)
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #define MAXSIZE 256 int main() { char str,...

устанавливается выравнивание «по центру», если найдено больше 5 пробелов
Если в начале строки пробелов больше пяти, то они все удаляются, а в абзаце устанавливается ...

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

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


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

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