Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Выравнивание строки


Автор: desert_rose 14.3.2007, 00:09
Выравнивание строки заключается в том, что между ее отдельными словами дополнительно вносятся пробелы так, чтобы длина  строки стала равна заданной длине (предполагается, что требуемая длина не меньше исходной), а последнее слово строки сдвинулось к  ее правому краю. Составить функцию  выравнивания  заданной  строки текста.

Автор: Dov 14.3.2007, 00:22
desert_rose, ты глазки вниз опусти, там точно такая тема есть.  smile 

Автор: desert_rose 14.3.2007, 18:19
хм....че-то все равно не могу найти...

Автор: Dov 14.3.2007, 20:23
Цитата(desert_rose @  14.3.2007,  17:19 Найти цитируемый пост)
хм....че-то все равно не могу найти...

Ну ты даёшь.  smile  
desert_rose
, спустись в самый низ этой страницы. smile 
Видишь там список из 10 тем?  smile   
Вторая сверху - твоя.   smile

Добавлено @ 20:25 
Только не под гостем смотри, не увидишь.  smile 

Автор: Dov 16.3.2007, 09:29
desert_rose, http://forum.vingrad.ru/topic-136735.html. Выравнивание строки. И в этой же теме есть ссылка на похожую тему, где выравнивается не одна строка, а целый текст.  smile  

Автор: desert_rose 18.3.2007, 13:53
спасибо за ссылку))
но мне надо эту задачу решить без  использования файлов...а просто вводом строки с клавиатуры...

Автор: Dov 18.3.2007, 15:35
Цитата(desert_rose @  18.3.2007,  12:53 Найти цитируемый пост)
но мне надо эту задачу решить без  использования файлов...а просто вводом строки с клавиатуры...

А какая разница? Вводи с клавиатуры. Ещё проще, мороки меньше.
Код
#include <iostream.h>
#include <iomanip.h>
#include <string.h>

#define WIDTH 80                                        // ширина экрана
#define SIZE  60

int main()
{
    char str[SIZE];       
    int  len;                           
    int  interval;   
    int  spaces; 
    int  i;

    cout << "Enter a string: \n";    
    cin.getline(str, SIZE);
    len      = strlen(str);                             // получаем длину строки      
    interval = len > 1 ? (WIDTH - len) / (len - 1) : 0; // определяем расстояние между символами 
    spaces   = WIDTH - ((len - 1) * (interval + 1));    // дополнительные пробелы
    
    // вспомогательная линейка для визуального контроля длины растянутой строки
    cout <<("\n         1         2         3         4         5         6         7         8");
    cout <<("\n12345678901234567890123456789012345678901234567890123456789012345678901234567890\n");
    
    // вывод в цикле посимвольно
    for(i = 0; i < len; i++)                         
    {               
        cout << str[i];                                 // печатаем очередной символ... 
        if(interval)      
            cout << setw(interval) << ' ';              // ...и интервал
        if(--spaces > 0)
            cout << ' ';                                // и, если нужно, ещё пробел    
    }
    cout << endl;

    return 0;
}


Автор: desert_rose 22.3.2007, 22:06
большое спасибо! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)