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

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

Войти
Регистрация
Восстановить пароль
 
Broo
Сообщений: n/a
#1

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

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

Написать функцию, преобразующую строку символов так, что между словами всегда находится два пробела C++
C++ Ввести массив символов, а затем вывести его на экран
C++ Ввести с клавиатуры строку символов и обработать ее
C++ Напишите программу, которая позволяет ввести строку символов
Вывести строку длины N, которая состоит из чередующихся символов C++
C++ Ввести строку длинной 500 символов
C++ Удалить конец строки символов. Ввести кол-во удаляемых символов , вывести результат ,String ,задачка,С++
дан текстовый файл. получить все его строки, содержащие более 20 символов, отличных от пробелов. C++
Ввести строку (не более 100 символов и не менее 30), вывести символы с 7 по 15 C++
C++ Вывести строку длины N, которая состоит из символов C
Ввести две строки символов A и B. Создать строку С следующим образом С1 = A1, C2 = В1, С3 = А2, С4 = В2 C++
Ввести строку символов. Найти количество неповторяющихся символов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 05:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru