0 / 0 / 0
Регистрация: 15.10.2014
Сообщений: 3
1

Изменить текст, используя "struct" в c++

15.10.2014, 17:56. Показов 501. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня есть следующий стих:

A swarm of bees in May
Is worth a load hey;
A swarm of bees in June
Is worth a silver spoon;
A swarm of bees in July
Is hot a worth a fly.

И я должен изменить этот текст, так чтобы все линии закончились в одном и том же положении.
Недостаточное количество позиций в строке дополнить пробелами, распределив их равномерно между словами строки

Я знаю, что мой код очень громоздкий, но я должен использовать структуру в своем коде
Как мне найти самую длинную строку и добавить пробелы в другие, чтобы выполнить задачу?
Спасибо!

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
#include "stdafx.h"
#include "iostream"
#include <string.h> 
using namespace std;
 
struct VERSE {
    char row_one[25];
    char row_two[25];
    char row_three[25];
    char row_four[25];
    char row_five[25];
    char row_six[25];
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    struct VERSE v;
    strcpy_s(v.row_one, "A swarm of bees in May");
    strcpy_s(v.row_two, "Is worth a load hey;");
    strcpy_s(v.row_three, "A swarm of bees in June");
    strcpy_s(v.row_four, "Is worth a silver spoon;");
    strcpy_s(v.row_five, "A swarm of bees in July");
    strcpy_s(v.row_six, "Is hot a worth a fly.");
    cout << v.row_one << endl << v.row_two << endl << v.row_three << endl
        << v.row_four << endl << v.row_five << endl << v.row_six << endl;
 
    cout << strlen(v.row_one) << endl;
    cout << strlen(v.row_two) << endl;
    cout << strlen(v.row_three) << endl;
    cout << strlen(v.row_four) << endl;
    cout << strlen(v.row_five) << endl;
    cout << strlen(v.row_six) << endl;
 
    //the length of row
    /*
    int length = 0;
    for(int i = 0; v.row_two[i] != '\0'; i++) {
        length++;
    }
    printf("Length of second row is: %d\n", length);
    */
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2014, 17:56
Ответы с готовыми решениями:

Изменить текст в таблице, расположенной в файле .docx используя Apache poi
Доброго всем времени суток. Подскажите как решить вот такой вопрос: Использую Apache poi для...

Как изменить значение строки в ресурсах проекта используя текст из string вместо названия ?
string u1 = &quot;text&quot;; Settings.Default = &quot;wdwswdw&quot;; ...

Используя компоненты вкладки Dialog, создайте следующее приложение, позволяющее открыть рисунок, найти и заменить текст, изменить атрибуты шрифта, пом
Лабораторная работа

Переписать, используя struct Stack, pop, push
Помогите, пожалуйста, переписать, используя struct Stack, pop, push... #include &lt;iostream&gt;...

3
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
15.10.2014, 18:23 2
andru2012, находите максимальную длину строки, затем используете setw(maxLength)
Как пример:
C++
1
cout << setw(10) << firstLine << endl; // выделяет под следующее значение 10 символов
0
Модератор
Эксперт С++
13329 / 10631 / 6352
Регистрация: 18.12.2011
Сообщений: 28,388
15.10.2014, 18:34 3
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
setw(maxLength)
Разве это позволит равномерно распределить слова?
Просто строка прижмется к правой или левой границе этого поля.
0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
15.10.2014, 19:44 4
zss, ах да, я не заметил условия, что пробелы должны быть равномерно распределены между словами. Сглупил, сейчас попробую реализовать идею

Добавлено через 1 час 2 минуты
andru2012, что то типа этого получится. Не исключено, что где то есть ошибки, но ваш пример решается корректно
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
#include <cstdlib>
#include <iostream>
#include <string>
 
using namespace std;
 
void add_spaces(string &text, int max_length)
{
    int ln = text.length(), pr = max_length-ln;
    if (pr == 0) return; // Åñëè äîáàâëÿòü ïðîáåëû íå òðåáóåòñÿ, ïðîñòî âûõîäèì
    int spaces = 0;
    for (int i = 0; i < ln; ++i)
        if (text[i] == ' ') spaces++;
    string buff = "";
    for (int i = 0; i < (int)pr/spaces; ++i) buff += " ";
    int counter = -1;
    string sub = (pr%spaces != 0 ? " ": "");
    while (++counter < text.length())
    {
        if (text[counter] == ' ')
        {
            if (--pr >= 0)
            {
                text.insert(counter, buff+sub);
                counter += buff.length()+sub.length();
            }
            else
            {
                text.insert(counter, buff);
                counter += buff.length();
            }
        }
    }
}
 
int main(int argc, char *argv[])
{
    const int count = 6;
    string text[6] = {"A swarm of bees in May",
                      "Is worth a load hey;",
                      "A swarm of bees in June",
                      "Is worth a silver spoon;",
                      "A swarm of bees in July",
                      "Is hot a worth a fly."};
    int max = text[0].length();
    for (int i = 0; i < count; ++i)
        if (max < text[i].length()) max = text[i].length();
    for (int i = 0; i < count; ++i)
    {
        add_spaces(text[i], max);
    }
    for (int i = 0; i < count; ++i)
    {
        cout << text[i] << endl;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
15.10.2014, 19:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2014, 19:44
Помогаю со студенческими работами здесь

Неправильное преобразование в byte используя struct.pack
Здравствуйте! Имеется функция, преобразующая объект в последовательность байтов. Вот она: def...

Создать однонаправленную очередь, используя struct и указатели
Совсем не понимаю и нигде не могу найти инфу как создать однонаправленную очередь без всяких...

Как делать текст в структурах (struct)?
В самой функции main переменная &quot;char name&quot; работает, а в struct нет. Как правильно задать...

Массив карт для игры в покер используя Struct
добрый дент, подскажите пожалуйста, как создать массив(карты 52 шт), , используя Struct ...

Бинарное дерево (переписать программу, используя class вместо struct)
Сделал бинарное дерево через структуру, не понимаю как сделать тоже самое через класс? Элементами...

Описать почтовую систему используя Struct. Посчитать количество элементов с определёнными условиями.
Описать, используя структуру, почтовую сортировку (город, улица, дом, квартира, кому, ценность). ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru