Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BROO
0 / 0 / 0
Регистрация: 15.08.2015
#1

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

08.04.2013, 16:04. Просмотров 455. Ответов 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;
}
Спасибо заранее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2013, 16:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввести строку символов, переформатировать его, продлив до длины 60 символов равномерным добавлением пробелов между словами. (C++):

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

Ввести строку символов. Найти количество неповторяющихся символов - C++
Ввести строку символов. Найти количество неповторяющихся символов. Вот мой текст программы (рабочий): #include &lt;iostream.h&gt; ...

Вывести строку длины N, которая состоит из символов C - C++
Мне задали написать задачу ,вывести строку длины N, которая состоит из символов C. вот мой код, не пашет... Вижуал студии у меня пока...

Ввести с клавиатуры строку символов и обработать ее - C++
Здравствуйте! помогите пожалуйста со строками в С++! Ввести с клавиатуры строку символов и обработать ее в соответствии со своим...

Ввести строку длинной 500 символов - C++
Ввести строку длинной до 500 символов.Найти и вывести все слова содержащие заданную последовательность символов.Алфавит русский, английские...

Вывести строку длины N, которая состоит из чередующихся символов - C++
Дано четное число N (&gt; 0) и символы C1 и C2. Вывести строку длины N, которая состоит из чередующихся символов C1 и C2, начиная с C1. нужно...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2013, 16:04
Привет! Вот еще темы с ответами:

дан текстовый файл. получить все его строки, содержащие более 20 символов, отличных от пробелов. - C++
Здравствуйте, помогите написать программу. дан текстовый файл. получить все его строки, содержащие более 20 символов, отличных от пробелов....

Напишите программу, которая позволяет ввести строку символов - C++
Напишите программу, которая позволяет ввести строку символов, и вывести ее в обратном порядке, заменяя одиночные пробелы двойными.

Удалить конец строки символов. Ввести кол-во удаляемых символов , вывести результат ,String ,задачка,С++ - C++
Удалить конец строки символов. Ввести количество удаляемых символов , вывести результат на печать . Помогите плиз с задачкой. тема :...

Ввести массив символов, а затем вывести его на экран - C++
народ помогите пожалуйстаю напишите пожалуйста небольшой кусочек кода: необходимо ввести массив символов, а затем вывести его на...


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

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

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