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

Отформатировать текст по n символов в строке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить сумму. http://www.cyberforum.ru/cpp-beginners/thread79714.html
Помогите пожалуйста решить задачку... На языке C++ http://img7.imageshost.ru/imgs/091225/b7af95a38e/4888a.jpg
C++ Строки Здравствуйте.Возник следующий вопрос.Если имеется набор символов в виде массива s.Как составить строку St из этих символов? http://www.cyberforum.ru/cpp-beginners/thread79709.html
C++ wchart_t много есть?
В типе данных wchart_t wchart_t variable = L'я'; Размер переменной будет 4 байта, но насколько я знаю для UTF-8 требуется всего 2 байта. Есть ли какие-то экономные версии типов? Конечно это не много, но суммарно потом это все будет попусту кушать в два раза больше чем надо.
недоработана программа с палиндромами C++
Здравствуйте, у меня такое задание: Найти делители всех палиндромов меньше 10000.. Я написал ее, но там повторяются цифра 1... Помогите доработать программу пожалуйста. Вот код: #include "stdafx.h" #include <iostream> using namespace std; int isPalindrom(long a) { int c,n=0; while(a>0)
C++ Перегрузка Виртуальность http://www.cyberforum.ru/cpp-beginners/thread79697.html
Чем отличается перегрузка от виртуальности?
C++ поменять порядок цифр... Дано натуральное n. Поменять порядок цифр числа n на обратный. подробнее

Показать сообщение отдельно
easybudda
Эксперт С++
9452 / 5465 / 926
Регистрация: 25.07.2009
Сообщений: 10,490
25.12.2009, 16:17     Отформатировать текст по n символов в строке
Было уже такое... Вот:
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
#include <stdio.h>
#include <string.h>
 
#define ROW_LEN 80 
 
size_t wordsCount(const char *str){
        const char *p;
        size_t count, inword;
        
        if ( !str || !(*str) )
                return 0;
        
        inword = count = 0;
        for ( p = str; *p; p++ ){
                if ( *p != ' ' ){
                        if ( !inword ){
                                inword = 1;
                                count++;
                        }
                }
                else {
                        inword = 0;
                }
        }
        return count;
}
 
int main(void){
        char buf[ROW_LEN + 2]; /* "\n\0" */
        char spc[ROW_LEN], espc[ROW_LEN], *pWrd, *pEspc;
        size_t buf_len, nwords, spaces_needed, spaces_between_words, extra_spaces;
        
        while ( 1 ){
                printf("Enter string (single enter - exit): ");
                fgets(buf, ROW_LEN + 2, stdin);
                if ( *buf == '\n' )
                        break;
                buf_len = strlen(buf);
                if ( buf[buf_len - 1] == '\n' )
                        buf[--buf_len] = '\0';
                
                if ( buf_len == ROW_LEN ){ /* просто вывести строку */
                        printf("%s\n", buf);
                        continue;
                }
                
                nwords = wordsCount(buf);
                if ( !nwords ){
                        printf("Empty string or some other error!\n");
                        continue;
                }
                if ( nwords == 1 ){
                        printf("Only one word in string!\n");
                        continue;
                }
                spaces_needed = ROW_LEN - buf_len + nwords - 1;
                spaces_between_words = spaces_needed / (nwords - 1);
                memset((void*)spc, ' ', spaces_between_words);
                spc[spaces_between_words] = '\0';
                extra_spaces = spaces_needed % (nwords - 1);
                if ( extra_spaces )
                        memset((void*)espc, ' ', extra_spaces);
                espc[extra_spaces] = '\0';
                pEspc = espc;
                for ( pWrd = strtok(buf, " "); pWrd != NULL; pWrd = strtok(NULL, " ") ){
                        if ( --nwords ){
                                printf("%s%s", pWrd, spc);
                                if ( *pEspc ){
                                        if ( nwords > 1 )
                                                printf("%c", *pEspc++);
                                        else 
                                                printf("%s", pEspc);
                                }
                        }
                        else
                                printf("%s\n", pWrd);
                }
        }
        return 0;
}
 
Текущее время: 06:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru