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

По строкам s2 и s3 восстановить строку s1 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как расширить длину строки до определённого значения? http://www.cyberforum.ru/cpp-beginners/thread1215249.html
Подскажите,как расширить длину строки до определённого значения.
C++ Давайте создадим библиотеку с литературой для начинающих Здравствуйте уважаемые админы сайта:) С недавних пор начал изучение языка программирования С++ и естественно встал самый первый и самый важный вопрос -"Где бы надыбать материал для чайников, новичков, начинающих и т.д. и др. Пришлось не мало сайтов облазить для поиска необходимой литературы. Но всё же что то нашёл и радуюсь!))) Заглянув на вашем сайте в раздел для новичков, для поиска какой... http://www.cyberforum.ru/cpp-beginners/thread1215218.html
Определить слова, в которых больше гласных букв, чем согласных C++
В программировании пока не силен. Не могу решить 3 интересных задачки. Нужна помощь. 1) В предложении, вводимом пользователем с клавиатуры, определить слова, в которых больше гласных букв, чем согласных. Предусмотреть возможность ввода как строчных, так и прописных букв. Под предложением понимается последовательность символов латинского алфавита, начинающаяся прописной буквой и...
C++ Создайте программу, выводящую сумму элементов последовательности 2, 4, 6, 8,… 98, 100
Приветствую друзья! Вообщем мне нужно создать программку выводящую сумму элементов последовательности 2, 4, 6, 8,… 98, 100 int sum = 0; for (int j = 2; j <= 100; j=j+2) { sum = sum + j; } cout << sum;вообщем как то так, но всё равно не получается, почему то не работает и я не могу понять почему. помогите пожалуйста, хотя бы советом.
C++ Почему вывод аргументов не осуществляется для классового шаблона? http://www.cyberforum.ru/cpp-beginners/thread1215173.html
Заметьте,что параметры классовых шаблонов никогда не выводятся.Причина заключается в том,что гибкость,порождаемая наличием нескольких конструкторов класса,в ряде случаев делает вывод параметров шаблона невозможным,а во многих других случаях - неоднозначным.Вот что говорит по этому поводу Страуструп. А мне хоть учебник на эту тему дай, без примера не могу обойтись... Товарищи знатоки, напишите...
C++ Вернуть указатель на массив указателей Всем привет! Написал маленький код: int WHAT(); int main() { cout<<WHAT(); подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3042 / 1687 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
24.06.2014, 23:02     По строкам s2 и s3 восстановить строку s1
Если возможны варианты ответа, то программа находит их все:
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/////////////////////////////////////////////////////////////////////////////////////////
//Заданная строка s1. После удаления одной буквы с s1 образуется строку s2. После удаления 
//из s1 другой буквы образуется строка s3. по строкам s2 и s3 восстановить строку s1.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <iterator>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string         T_str;
typedef std::set< T_str >   T_strings;
/////////////////////////////////////////////////////////////////////////////////////////
T_strings  get_restored_strings
    (
        T_str   const   &   AA,
        T_str   const   &   BB
    )
{
    T_strings   res_strings;
 
    if  (
            AA.size() == BB.size()
        )
    {
        for( size_t   max_pref_size = 0; max_pref_size < AA.size(); ++max_pref_size )
        {
            T_str   A   =   AA;
            T_str   B   =   BB;
 
            T_str   pref;
 
            while   (
                            A.size()    >   1
                        &&  A.front()   ==  B.front()
                        &&  pref.size() <   max_pref_size
                    )
            {
                pref    +=  A.front();
                A.erase( 0, 1 );
                B.erase( 0, 1 );
            }
 
            T_str   suff;
 
            while   (
                            A.size()    >   1
                        &&  A.back()    ==  B.back()
                    )
            {
                suff    +=  A.back();
                A.pop_back();
                B.pop_back();
            }
            std::reverse
                (
                    suff.begin  (),
                    suff.end    ()
                );
 
            for( int  i = 0; i < 2; ++i )
            {
                if  (
                            B.front()    +   A
                        ==  B            +   A.back()
                    )
                {
                    res_strings.insert
                        (
                                pref
                            +   B.front()    +   A
                            +   suff
                        );
                }//if
 
                std::swap( A, B );
            }//for
        }//for
    }//if
 
    return  res_strings;
}
/////////////////////////////////////////////////////////////////////////////////////////
void  print_strings( T_strings  const   &   strings )
{
    if( strings.empty() )
    {
        std::cout   <<  "Нет ответа.";
    }
 
    std::copy
        (
            strings.begin   (),
            strings.end     (),
            std::ostream_iterator<T_str>( std::cout, "\n" )
        );
}
/////////////////////////////////////////////////////////////////////////////////////////
int  main()
{
    std::locale::global(std::locale(""));
 
    for(;;)
    {
        T_str   A;
        std::cout   <<  "\n\n\n\n\nподстрока 1: ";
        std::cin    >>  A;
 
        T_str   B;
        std::cout   <<  "подстрока 2: ";
        std::cin    >>  B;
 
        T_strings   strings     =   get_restored_strings( A, B );
 
        print_strings( strings );
    }//for
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru