Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2022, 16:08   #1
177semen177
 
Регистрация: 25.11.2021
Сообщений: 4
По умолчанию Дана последовательность символов латинского алфавита и пробелов

Дана последовательность символов латинского алфавита и пробелов. Поменять порядок следования букв на обратный в тех словах, которые начинаются с заданного символа. Подсчитать количество таких слов.
177semen177 вне форума Ответить с цитированием
Старый 12.01.2022, 23:25   #2
maks1331
Форумчанин
 
Аватар для maks1331
 
Регистрация: 20.12.2016
Сообщений: 270
По умолчанию

Код:
string sequence;

bool isWordStart{ true };
const char symbol{ 'A' };
int size{ sequence.size() };
for (int index{ 0 }; index < size; ++index) {
    if (!isWordStart || sequence[index] != symbol) {
        if (sequence[index] != ' ') {
            if (isWordStart) {
                isWordStart = false;
            }
        }
        else {
            isWordStart = true;
        }
        continue;
    }
    
    int wordSize{ 1 };
    while (index + wordSize + 1 < size) {
        if (sequence[index + wordSize + 1] != ' ') {
            ++wordSize;
        }
    }
    int newIndex{ index + wordSize };
    char temp;
    for (int count{ wordSize  / 2 }; count > 0; --count) {
        temp = sequence[index];
        sequence[index] = sequence[index + wordSize];
        sequence[index + wordSize] = temp;
        ++index;
        wordSize -= 2;
    }
    index = newIndex;
}
Я не проверял
формошлеп.рф
witech.su

Последний раз редактировалось maks1331; 12.01.2022 в 23:52.
maks1331 вне форума Ответить с цитированием
Старый 16.01.2022, 13:39   #3
maks1331
Форумчанин
 
Аватар для maks1331
 
Регистрация: 20.12.2016
Сообщений: 270
По умолчанию

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

Рабочая версия:
Код:
#include <iostream>
#include <string>

int main()
{
    using namespace std;

    int counter{ 0 };
    string sequence{ "A123456 B123456 A12 A123 B A A1 BAC BAAAC AABB1122 A1" };

    bool isWordStart{ true };
    const char symbol{ 'A' };
    int size = sequence.size();

    for (int index{ 0 }; index < size; ++index) {
        if (!isWordStart || sequence[index] != symbol) {
            if (sequence[index] != ' ') {
                if (isWordStart) {
                    isWordStart = false;
                }
            }
            else {
                isWordStart = true;
            }
            continue;
        }
        ++counter;

        int wordSize{ 1 };
        while (index + wordSize + 1 <= size) {
            if (sequence[index + wordSize] != ' ') {
                ++wordSize;
            }
            else {
                break;
            }
        }

        int newIndex{ index + wordSize};
        char temp;
        for (int count{ wordSize-- / 2 }; count > 0; --count) {
            temp = sequence[index];
            sequence[index] = sequence[index + wordSize];
            sequence[index + wordSize] = temp;
            ++index;
            wordSize -= 2;
        }
        index = newIndex;
    }

    if (sequence == "654321A B123456 21A 321A B A 1A BAC BAAAC 2211BBAA 1A" && counter == 7) {
        std::cout << "Test passed!" << std::endl;
    }
    else {
        std::cout << "Test failed." << std::endl;
    }

    cin.clear();
    cin.ignore(32767, '\n');
    cin.get();
}
формошлеп.рф
witech.su
maks1331 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все возможные комбинации латинского алфавита из 8 символов Adder1 Общие вопросы Delphi 3 05.12.2017 13:38
Ввести последовательность из букв латинского алфавита. Сформировать два множества: множество S1 с маленьких гласных букв, множеств destra1j Помощь студентам 1 27.05.2016 08:57
Дана последовательность символов rudy47 Паскаль, Turbo Pascal, PascalABC.NET 2 28.01.2013 14:40
последовательность латинского алфавита (z, yz, xyz и т. д.) X-REY Паскаль, Turbo Pascal, PascalABC.NET 2 01.12.2012 18:39
Дана последовательность символов (строка). Группу символов, разделенную с одной или обеих сторон пробелам viper1941 Паскаль, Turbo Pascal, PascalABC.NET 1 14.04.2011 08:46