Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Broo
1

Ввести строку символов, переформатировать его, продлив до длины 60 символов равномерным добавлением пробелов между словами.

08.04.2013, 16:04. Просмотров 567. Ответов 0
Метки нет (Все метки)


Всем привет)
Не подскажите как написать алгоритм по задаче
Есть задача
Ввести строку символов, переформатировать его, продлив до длины 60 символов равномерным добавлением пробелов между словами. Определить количество добавленных пробелов.

вот код :
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 <iostream>
#include <conio.h>
using namespace std;
 
const int size=60; // длина строк
char S[size+1]; //рядок
int spacing(char *S, int target_len); // добавление пробелов
int ch_count(char *S, const char Ch); // подсчет вхождения символа в строку
 
int main()
{  
    int count=0; 
    puts("Input string: ");
    cin.getline(S,size+1);
    cout<<"String length: "<<strlen(S)<<endl;
    
    if (strlen(S)!=size) count=spacing(S,size);
    
    if (count<0) 
        cout<<"String has only one word! Operation fail!"<<endl;
    else {
        cout<<S<<endl;
        cout<<"Count of space: "<<count<<endl;
    }
 
    system("pause");
    return 0;       
}
 
int spacing(char *S, int target_len)
{
    int i, j, n, count;
    char *ptr=S;
    char *result;
 
    count = ch_count(S,' ');
    if (!count) return -1;
    for(n=0; strlen(S)+count*(n+1) <= target_len; n++);//количество пробелов которе нужно вставить в каждую пробельную позицию 
    if (!n) return 0;
 
    result = new char [target_len+1];//динамическое выделения памяти под строку
 
    for(i=0; *ptr; i++)//создания результатирующая строки 
    {
        if (*ptr==' ')
        {
            for(j=0; j!=n; j++, i++)
                result[i]=*ptr;
            ptr++;
            i--;
        } else {
            result[i]=*ptr; ptr++;
        }
    }
    result[i]=0;
 
    strcpy(S,result);//передача результатирующий строки строке S
 
    delete [] result;
    return count*n;
}
 
int ch_count(char *S, const char Ch)
{
    int count = 0;
    char *begin = S, *end = begin + strlen(S);
 
    while (begin<end)
    {
        if (*begin == Ch) count++;
        if (*end == Ch) count++;
        begin++;
        end--;
    }
 
    if (begin == end && *begin == Ch) count++;
 
    return count;
}
Спасибо заранее
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2013, 16:04
Ответы с готовыми решениями:

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

Дана строка символов. Группы символов в ней между группами пробелов считаются словами. Определить сколько слов содержат ровно три буквы "е".
Дана строка символов. Группы символов в ней между группами пробелов считаются словами. Определить...

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

Дана строка символов S. Подсчитать количество пробелов между словами
Требуется написать программу. Дана строка символов S. Подсчитать количество пробелов между всеми...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2013, 16:04

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Ввести с клавиатуры строку символов. Составить программу для замены в данной строке всех пробелов на символ $
Ввести с клавиатуры строку символов. Составить программу для замены в данной строке всех пробелов...

Написать функцию, преобразующую строку символов так, что между словами всегда находится два пробела
Написать функцию, преобразующую строку символов так, что между словами всегда находится два...

Написать функцию, преобразующую строку символов так, что между словами всегда находится два пробела.
Ребят, помогите с лр3 задача: Для всех заданий необходимо написать функцию и тестирующую...

Написать функцию, преобразующую строку символов так, что между словами всегда находится два пробела
помогите с этой лабой

Ввести с клавиатуры произвольную строку символов и выдать на экран количество введенных символов
Cоставить программу которая вводит с клавиатуры произвольную строку символов (конец строки клавиша...

Ввести строку символов, посчитать количество символов, не являющихся буквами английского алфавита
Ввести строку символов, если ее длина &gt;6, то посчитать количество символов, не являющихся буквами...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.