Форум программистов, компьютерный форум CyberForum.ru

Выровнять строку в ширину - C++

Восстановить пароль Регистрация
 
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
08.01.2013, 22:33     Выровнять строку в ширину #1
Добрый вечер народ. Помогите или алгоритм или реализация у кого есть на такую задачу.
Дана строка, и её надо выровнять в ширину(ширина задаётся). Слова резать нельзя. Т.е. надо планомерно добавлять пробелы между словами внутри строки.
Надеюсь задача нормально объяснил.

Добавлено через 30 минут
Помогите!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2013, 22:33     Выровнять строку в ширину
Посмотрите здесь:

C++ Выровнять текст по левому краю
C++ ввести строку символов. Сформировать строку вдвое большей длины, где каждый символ предворяется пробелом. Вывести полученную строку.
Выровнять матрицу на экране C++
Нужно выровнять текст C++
Выровнять вывод под две колонки C++
C++ Как выровнять столбики в ответе?
C++ Алгоритмы поиска кратчайших путей в ширину и двунаправленный в ширину
Необходимо выровнять предложение C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
09.01.2013, 00:27     Выровнять строку в ширину #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
#include "stdafx.h"
#include "iostream"
using namespace std;
 
void SetSpace(char *str)    // вставка одного пробела между каждым словом
{
    for (int i=0; i<strlen(str); i++)
        if (str[i] == ' ')
        {
            for (int j=strlen(str)+1; j>i; j--)
                str[j] = str[j-1];
 
            int j = i;
            while (str[j] == ' ')
                j++;
 
            i = j;
        }
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    
    char str[300];
    int W;
 
    cout << "Введите строку:" << endl;  
    cin.getline(str, 300);
    
    cout << "Введите ширину: ";
    cin >> W;
 
    if (W <= strlen(str))
        cout << str << endl;
    else
    {
        int n_space = 0;            // количество пробелов в строке
 
        for (int i=0; i<strlen(str); i++)
            if (str[i] == ' ')
               n_space++;
 
        int k = (W - strlen(str)) / n_space;    // кол-во пробелов, которые надо вставить после каждого слова
 
        while (strlen(str) < W)
            SetSpace(str);
 
        cout << str << endl;
    }
 
    
    cout << endl;
    system("pause");
    return 0;
}
Добавлено через 6 минут
Лишнее поубрал:

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
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
    
    char str[300];
    int W;
 
    cout << "Введите строку:" << endl;  
    cin.getline(str, 300);
    
    cout << "Введите ширину: ";
    cin >> W;
 
    if (W <= strlen(str))
        cout << str << endl;
    else
    {
        while (strlen(str) < W)
            SetSpace(str);
    }
 
 
    cout << str << endl;
 
    system("pause");
    return 0;
}
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
09.01.2013, 00:49  [ТС]     Выровнять строку в ширину #3
Спасибо уже сам вымучал.

Добавлено через 8 минут
Если решение надо кому могу скинуть сюда.
Yandex
Объявления
09.01.2013, 00:49     Выровнять строку в ширину
Ответ Создать тему
Опции темы

Текущее время: 08:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru