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

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

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

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

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

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

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

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

Вставка в строку нескольких символов и удаление символов из строки
не могу найти информацию про это:( какими операторами это делается?

Функции работы со строками символов: определение размера строки, копирование строк, добавление строк, сравнение строк
На языке Ассемблер написать функции работы со строками символов: определение размера строки,...

4
sourcerer
Модератор
Эксперт CЭксперт С++
4963 / 2149 / 326
Регистрация: 20.02.2013
Сообщений: 5,584
Записей в блоге: 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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2016, 17:05

Удаление символов из строки по условию
Всем доброго времени суток. Есть строка. В ней используются пробелы либо символы &quot;\0&quot; для...

Преобразовать массив согласно условию
Задан массив. Преобразовать его элементы по правилу: из всех положительных элементов вычесть...

Преобразовать массив согласно условию
Есть рабочая программа. Но в итоге выводит не то, что нужно. Помогите, если не сложно, плз. Вот...


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

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

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