Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
NikitaPondLinux
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 6
1

Преобразовать заданные строки, согласно условию (сортировка и сравнение строк, вставка/удаление символов)

14.09.2016, 23:01. Просмотров 389. Ответов 4
Метки нет (Все метки)

Даны строки A и B. Если все символы A входят в B и в B есть повторяющиеся символы, то упорядочить символы B в порядке, обратном к алфавитному, удалив повторяющиеся символы, и удалить русские буквы из A; в остальных случаях удалить из A символы, не входящие в B, и продублировать цифры в B.

Помогите очень прошу) последняя лаба из долгов по сессии(((
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2016, 23:01
Ответы с готовыми решениями:

Скопировать и конкатенировать (объединить) заданные строки согласно условию
Скопируйте строку А в строку В строку К в строку Т, объедините.

Заменить заданные элементы исходного массива согласно условию и сформировать новый массив
дан массив a(14). заменить все нечетные элементы с номером индекса и составить...

Преобразовать матрицу согласно условию
Помогите плииз с задачкой!=) Дана целочисленная матрица размера n x m, целые...

Получить последовательность символов согласно условию
Напишите пожалуйста код с подробными объяснениями и комментариями. Условие...

Заполнить вектор (или дек) на основе заданной строки согласно условию
Есть строка Str='SENDMOREMONEY" Есть нулевой вектор (либо дек), размер...

4
sourcerer
Модератор
Эксперт CЭксперт С++
4873 / 2059 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
18.09.2016, 01:45 2
NikitaPondLinux, что имеется ввиду под "русскими буквами"? Латинские (английские) буквы, которые по написанию совпадают с русскими (a, c, e, o, p, x, y, A, B, C, E, H, K, M, O, P, T, X, Y) или реально русские буквы (типа б, г, д, ж, з, и, й и тому подобное)?

Добавлено через 2 часа 31 минуту
Вот Вам такое чудище:

Работа ветки if

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
#include <iostream>
#include <string>
#include <algorithm>
#include <set>
 
bool contains_all_chars_of_str( const std::string & b, const std::string & a );
bool contains_repeated_letters( const std::string & str );
void erase_same_chars( const std::string & from_str, std::string & in_str );
void erase_unique_chars( const std::string & from_str, std::string & in_str );
void duplicate_digits_in_str( std::string & str );
 
int main()
{
    std::string a = "ABCDEF";
    std::string b = "1234ABCDEFGHIJKLM_NNOOPP";
    std::string letters_looks_like_russian = "aceopxyABCEHKMOPTXY";
 
    if (
            contains_all_chars_of_str( b, a )
            &&
            contains_repeated_letters( b )
       )
    {
        std::set<char> bStrSet( b.begin(), b.end() );
        b.clear();
        b.resize( bStrSet.size() );
        std::copy( bStrSet.begin(), bStrSet.end(), b.begin() );
        sort( b.rbegin(), b.rend() );
        erase_same_chars( letters_looks_like_russian, a );
        std::cout << "Debug info: branch if works now.\n";
    }
 
    else
    {
        erase_unique_chars( b, a );
        //duplicate_digits_in_str( b );
        std::cout << "Debug info: branch else works now.\n";
    }
 
    std::cout << a << "\n" << b << "\n";
 
 
 
    return 0;
}
 
bool contains_all_chars_of_str( const std::string & b, const std::string & a )
{
    std::string b_temp( b );
    std::string a_temp( a );
    std::sort( b_temp.begin(), b_temp.end() );
    std::sort( a_temp.begin(), a_temp.end() );
 
    return std::includes( b_temp.begin(), b_temp.end(), a_temp.begin(), a_temp.end() );
}
 
bool contains_repeated_letters( const std::string & str )
{
    std::set<char> strSet( str.begin(), str.end() );
 
    return strSet.size() != str.size();
}
 
void erase_same_chars(const std::string & from_str, std::string & in_str )
{
    for ( const auto & elem : from_str )
    {
        auto p = std::find( in_str.begin(), in_str.end(), elem );
        if ( p != in_str.end() )
        {
            in_str.erase( p );
        }
    }
}
 
void erase_unique_chars( const std::string & from_str, std::string & in_str )
{
    std::string temp = "";
    for ( const auto & elem : from_str )
    {
        auto p = std::find( in_str.begin(), in_str.end(), elem );
        if ( p != in_str.end() )
        {
            temp += *p;
        }
    }
    in_str = temp;
}
 
void duplicate_digits_in_str( std::string & str )
{
    // some code here
}
Преобразовать заданные строки, согласно условию (сортировка и сравнение строк, вставка/удаление символов)



Работа ветки else

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
#include <iostream>
#include <string>
#include <algorithm>
#include <set>
 
bool contains_all_chars_of_str( const std::string & b, const std::string & a );
bool contains_repeated_letters( const std::string & str );
void erase_same_chars( const std::string & from_str, std::string & in_str );
void erase_unique_chars( const std::string & from_str, std::string & in_str );
void duplicate_digits_in_str( std::string & str );
 
int main()
{
    std::string a = "ABCDEF_XYZ";
    std::string b = "1234ABCDEFGHIJKLM_NNOOPP";
    std::string letters_looks_like_russian = "aceopxyABCEHKMOPTXY";
 
    if (
            contains_all_chars_of_str( b, a )
            &&
            contains_repeated_letters( b )
       )
    {
        std::set<char> bStrSet( b.begin(), b.end() );
        b.clear();
        b.resize( bStrSet.size() );
        std::copy( bStrSet.begin(), bStrSet.end(), b.begin() );
        sort( b.rbegin(), b.rend() );
        erase_same_chars( letters_looks_like_russian, a );
        std::cout << "Debug info: branch if works now.\n";
    }
 
    else
    {
        erase_unique_chars( b, a );
        //duplicate_digits_in_str( b );
        std::cout << "Debug info: branch else works now.\n";
    }
 
    std::cout << a << "\n" << b << "\n";
 
 
 
    return 0;
}
 
bool contains_all_chars_of_str( const std::string & b, const std::string & a )
{
    std::string b_temp( b );
    std::string a_temp( a );
    std::sort( b_temp.begin(), b_temp.end() );
    std::sort( a_temp.begin(), a_temp.end() );
 
    return std::includes( b_temp.begin(), b_temp.end(), a_temp.begin(), a_temp.end() );
}
 
bool contains_repeated_letters( const std::string & str )
{
    std::set<char> strSet( str.begin(), str.end() );
 
    return strSet.size() != str.size();
}
 
void erase_same_chars(const std::string & from_str, std::string & in_str )
{
    for ( const auto & elem : from_str )
    {
        auto p = std::find( in_str.begin(), in_str.end(), elem );
        if ( p != in_str.end() )
        {
            in_str.erase( p );
        }
    }
}
 
void erase_unique_chars( const std::string & from_str, std::string & in_str )
{
    std::string temp = "";
    for ( const auto & elem : from_str )
    {
        auto p = std::find( in_str.begin(), in_str.end(), elem );
        if ( p != in_str.end() )
        {
            temp += *p;
        }
    }
    in_str = temp;
}
 
void duplicate_digits_in_str( std::string & str )
{
    // some code here
}
Преобразовать заданные строки, согласно условию (сортировка и сравнение строк, вставка/удаление символов)



P.S. Оба варианта одинаковые - меняются только 14 и 15 строчки кода. Для работы кода необходимо в своей IDE включить поддержку стандарта C++11. Функцию дублирования цифр в строке мне было писать лень - напишите её самостоятельно. Для её реализации Вам понадобится функция isdigit() из заголовочного файла cctype.
0
NikitaPondLinux
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 6
18.09.2016, 23:07  [ТС] 3
реально русские буквы))))
0
NikitaPondLinux
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 6
18.09.2016, 23:12  [ТС] 4
Вот скрин примера ввода и вывода))))
0
Миниатюры
Преобразовать заданные строки, согласно условию (сортировка и сравнение строк, вставка/удаление символов)  
NikitaPondLinux
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 6
02.10.2016, 17:05  [ТС] 5
Ну напишите ещё одну программу прошу!!!!
0
02.10.2016, 17:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2016, 17:05

Получить из строк новую строку, содержащюю первые N1 символов строки S1 и последнии N2 символов строки S2
помогите написать программу на двух разных классах! 2) Даны целые...

матрицы, упорядочить ее строки согласно кол-ву строк с нулями
Даны три матрицы M * N, упорядочить по росту сумм элементов строк строки той...

Сравнение строк в векторе и удаление их повторений
Ошибка компиляции в строках с erase(). Прога считывает n строк, сравнивает их...


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

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

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