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

Разбиение произвольного текста на строки указанной длины - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ обработки массивов http://www.cyberforum.ru/cpp-beginners/thread115906.html
1)Составить программу для подсчета суммы четным элементов двумерной таблицы А размером m × n. Сформировать матрицу с помощью генератора случайных чисел и организовать ее вывод на экран 2)В прямоугольном матрицы определить количество столбцов, содержащих только числа одного знака (положительные или отрицательные) и не содержащих нулевых элементов
C++ Вводятся два произвольных числа A и B. Вывести на экран, делится ли большее из них на меньшее без остатка или нет 1. Вводятся два произвольных числа A и B. Вывести на экран, делится ли большее из них на меньшее без остатка или нет. 2. Вычислить сумму с заданной точностью (суммирование производить до появления в сумме слагаемых, меньших заданной величины E): S=1+1/2+1/4+1/8+1/16+... Помогите пожалуйста код с++ http://www.cyberforum.ru/cpp-beginners/thread115883.html
C++ В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов.
1. В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов. Число N и значения элементов массива задаются вводом. 2. Задан массив А из 20 элементов. Поменять местами 1-й элемент с 11-м , 2-й с 12-м , 3-й с 13-м и т. д. Вывести исходный и полученный массивы. Элементы массива A должны быть случайными числами в диапазоне от 0...
Запись массива символов в файл C++
Здравствуйте! А кто знает как записать массив символов, имеющий пробелы, в файл, а потом его считать и вывести на экран? Подробнее: - нужно взять массив типа char; - заполнить его больше, чем 2 словами через пробел; - записать его в файл - прочитать эти слова из файла в тот же массив (или новый); - вывести эти слова на экран; Писать на чистом С++, т.е. используя iostream и fstream....
C++ Переход на плюсы. http://www.cyberforum.ru/cpp-beginners/thread115841.html
Здравствуйте. Я вот уже год как программирую на языке Си, и хотелось бы начать на плюсах... С ужасом обнаружил, что меня пугает даже немного "приПЛЮСнутый" код. Хотелось бы получить рекомендации по литературе, которая помогла бы сделать этот переход безболезненным (Без груды программ типа "Hello world!!!" и объяснений как пользоваться функцией printf). Заранее спасибо!
C++ Связанный список (Linked list). Добрый день. Вот пишу функцию (в коде название - smash), которая бы из текущего списка создавала 2 других: парные числа и непарные, но почему-то отказывается работать. Может кто могбы подсказать, в чем проблема? Код: struct elem { int num; elem *next; подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ

Разбиение произвольного текста на строки указанной длины - C++

12.04.2010, 20:15. Просмотров 1598. Ответов 4
Метки (Все метки)

Полное задание
Вариант В22.
Составить и отладить программу,
реализующую разбиение произвольного текста
на строки указанной длины без переноса (=разрыва)
слов в конце строки и в то же время без большого
коли-чества пробелов в конце строки (>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
#include <windows.h>
#include <stdio.h>
 
//Выделяем память под наш текстовый блок
char * str = (char *)malloc(sizeof(char));
//Выделяем память под массив строк
char ** sMass = (char **)malloc(sizeof(char));
                //ФУНКЦИИ
//Функция ввода текста до тех пор пока не встретиться символ ch_end
char * enter_text(char * str, char ch_end);
//Выделение отдельной строки длиной sLen из текстового блока sBlock
//начиная с позиции iPos
char * get_string(char * sBlock, char * str, int iPos, int sLen);
//Проверка не состоит ли строка только лишь из пробелов
bool not_empty_str(char * str);
//Возвращает количество слов в строке
int get_num_words(char * str);
//Расвномерное распределение пробелов между словами строки
//при их количстве вконце строки > nSpaces
char * distr_spaces(char * str, int nSpaces);
 
void main()
{
    printf("\tEnter text block\r\n");
    str = enter_text(str, '\n');
    printf("\tEnter length of 1 string\r\n");
    int sLen = -1;scanf("%d",&sLen);
    int nStr = strlen(str) / sLen + 1;
    sMass = (char **)realloc(sMass,nStr*sizeof(char));
    printf("\tStrings after dividing input text\r\n");
    //Формируем массив строк sMass
    for(int i = 0,iAdd = 0; i < nStr; i++)
    {
        sMass[i] = (char *)malloc(sLen);
        sMass[i] = get_string(str, sMass[i], iAdd, sLen);
        iAdd += strlen(sMass[i]);
        printf("[%02d] : %s\r\n",i + 1,sMass[i]);
        if(strlen(str) <= iAdd)
            break;
    }
    printf("Num of strings : %d\r\n", (nStr = i + 1));
    printf("Press NUM1 to enter new text block\r\n");
    getchar();
    str = enter_text(str, '\n');
    if(str[0] == '1')
        main();
}
 
char * enter_text(char * str, char ch_end)
{
    int sLen = 0;
    if(str)
    {
        while((str[sLen++] = getchar()) != ch_end)
            str = (char *)realloc(str,(sLen + 1)*sizeof(char));
        str[sLen - 1] = '\0';
    }
    return str;
}
 
char * get_string(char * sBlock, char * str, int iPos, int sLen)
{
    if(sBlock != NULL && str != NULL)
    {
        for(int i = iPos; i < iPos + sLen; i++)
            str[i - iPos] = sBlock[i];
        //Если строка оканчивается посередине слова, 
        //то копируем оставшиеся символы, одновременно 
        //увеличивая длину строки
        while(sBlock[i] != ' ')
        {
            str = (char *)realloc(str,i - iPos + 1);
            str[i - iPos] = sBlock[i];
            i++;
        }
        str[i - iPos] = '\0';
    }
    return str;
}
ниже скриншот работы а также пример с последовательным разбиением на одного и того же текста на строки с разным числом слов, в архиве экзешник и скомпилированный экзешник...Писал просто без всяких вывертов с использованием динамического выделения памяти под текстовый блок и массив строк..
Миниатюры
Разбиение произвольного текста на строки указанной длины  
Вложения
Тип файла: txt PrntScrn.txt (1.8 Кб, 28 просмотров)
Тип файла: rar text_divide.rar (15.5 Кб, 37 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru