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

Как можно четко изложить эту программу через string?

01.03.2019, 03:49. Показов 398. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
С клавиатуры вводятся две строки, содержащие некоторые слова. Слова перечислены через запятую. Исключить из первой строки слова, входящие во вторую строку. Слова должны сравниваться без учета регистра символов.
Пример ввода:
строка 1: world,cat,DOG,BALL
строка 2: World,dog,processor,memory,programming
Результат: cat ball
Исходные строки вводятся с клавиатуры. Обработка строк должна осуществляться посимвольно (использование функций форматированного ввода scanf и sscanf не допускается).

видел много способов, но никак не могу догнать как ее можно написать через простой string и не лезть в дебри с подключением дополнительных библиотек.Кто-то может написать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2019, 03:49
Ответы с готовыми решениями:

как перевести эту программу на С ?я думал реализовать через масивы но они статические, или можно менять элементы масива?
text = input() text = text.replace("0", "") text = text.replace("6", "") start = 0 today =...

Как можно писать эту программу?
я не могу писать эту программу ... задание. Разработка консольного приложения на языках C++ и...

Как можно по-другому написать эту программу
#include <iostream> using namespace std; void swap(int x, int y,int &x1,int &y1) { int dop;...

Как можно реализовать эту программу с использованием класса?
using namespace std; int main() { int N; double x; bool flag; cout <<...

3
602 / 922 / 149
Регистрация: 10.08.2015
Сообщений: 4,850
01.03.2019, 09:38 2
C++
1
2
3
4
5
6
7
8
9
string foo(string first, string second) {
   while ((first != "") || (second != "")) {
  // ищешь слово во второй строке 
  // если находишь его в первой строке, то удаляешь из первой строки
  // удаляешь слово из второй строки
  // ...
  //}
  return first;
}
0
2658 / 1924 / 960
Регистрация: 21.12.2010
Сообщений: 3,566
Записей в блоге: 9
01.03.2019, 18:38 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <regex>
 
 
int main()
{
    std::string s1{"world,cat,DOG,BALL"}, s2{"World,dog,processor,memory,programming"};
    std::regex r1{"(?:^|,)([\\d[:alpha:]]+)(?=$|,)"};
    for (std::sregex_iterator ib{ s1.begin(), s1.end(), r1 }, ie; ib != ie; ++ib)
    {
        if (!std::regex_search(s2, std::regex{ "(?:^|,)(" + ib->str(1) + ")(?=$|,)", std::regex_constants::icase }))
        {
            std::cout << ib->str(1) << std::endl;
        }
    }
}
Добавлено через 1 час 19 минут
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
#include <iostream>
#include <string>
 
 
int main()
{
    std::string s1{"wOrld,cat,DOG,BALL"}, s2{"World,doG,processor,memory,programming"};
    std::string::size_type i1 = 0, i2 = 0;
    for (i1 = s1.find_first_not_of(',', i2); i1 != std::string::npos; i1 = s1.find_first_not_of(',', i2), ++i2)
    {
        i2 = s1.find_first_of(',', i1);
        if (i2 == std::string::npos)
        {
            i2 = s1.size();
        }
        //std::cout.write(&s1[i1], i2 - i1) << std::endl;
 
        std::string::size_type j1 = 0, j2 = 0;
        for (j1 = s2.find_first_not_of(',', j2); j1 != std::string::npos; j1 = s2.find_first_not_of(',', j2), ++j2)
        {
            j2 = s2.find_first_of(',', j1);
            if (j2 == std::string::npos)
            {
                j2 = s2.size();
            }
            //std::cout.write(&s2[j1], j2 - j1) << std::endl;
 
            auto i = i1, j = j1;
            for (; i != i2 && j != j2; ++i, ++j)
            {
                if (s1[i] != s2[j] && s1[i] != s2[j] + 32 && s1[i] + 32 != s2[j])
                {
                    break;
                }
            }
            if (i == i2 && j == j2)
            {
                break;
            }
        }
        if (j1 == std::string::npos)
        {
            std::cout.write(&s1[i1], i2 - i1) << std::endl;
        }
    }
}
1
Комп_Оратор)
Эксперт по математике/физике
8916 / 4673 / 626
Регистрация: 04.12.2011
Сообщений: 13,905
Записей в блоге: 16
01.03.2019, 23:22 4
Не уверен на счёт четкости. Если не чётко то так можно:
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
#include <iostream>
#include <string>
#include <sstream>
#include <set>
#include <algorithm>
using std::cout; 
using std::cin;
using std::endl;
using std::string;
using std::set;
using std::stringstream;
using std::copy;
 
void replace_all (
                        string& input_str,
                  const string& substr_old,
                  const string& substr_new
                  )
{
if(0 == input_str.size()) return;
string::iterator strt=input_str.begin(), fin=input_str.end();
size_t comma_pos=0;
while((comma_pos=input_str.find(substr_old, comma_pos ))!=string::npos)
{
input_str.replace( comma_pos, substr_new.size(), substr_new);
++comma_pos;
}
}
 
int main(int argc, char* argv[])
{
string input_str="world,cat,DOG,BALL",// ДЛЯ ТЕСТА
output_str="World,dog,processor,memory,programming";//ДЛЯ ТЕСТА
 
//getline(cin, input_str);//ДЛЯ ТЕСТА ЗАКОМЕНТИЛ
std::transform(input_str.begin(), input_str.end(), input_str.begin(), ::tolower);
std::transform(output_str.begin(), output_str.end(), output_str.begin(), ::tolower);
cout<<input_str<<endl;
cout<<output_str<<endl;
 
replace_all(input_str, ","," ");
replace_all(output_str, ","," ");
cout << endl;
 
cout<<input_str<<endl;
cout<<output_str<<endl;
 
stringstream inp_ss(input_str );
stringstream out_ss(output_str );
set<string>words;
string word;
while(out_ss>>word)
{
    cout<<word<<'\n';
    words.insert(word);
 
};
 
string tmp_rezult;
while(inp_ss>>word)
{
    cout<<word<<'\n';
    if(words.find(word)==words.end())tmp_rezult+=word+' ';  
 
};
 
input_str=tmp_rezult.substr(0,tmp_rezult.size()-1) ;
 
cout<<"\n\nRezult:\n"<<input_str;
cin.get();
 
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2019, 23:22
Помогаю со студенческими работами здесь

Как написать эту программу через rand?
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std;...

Как выполнить эту программу через процедуру?
Дано вещественное число X (|X| &lt; 1) и целое число N &gt; 0. Написать функцию для вычисления суммы...

как эту программу сделать через функции пользователя?
как эту программу сделать через функции пользователя? #include &lt;iostream&gt; #include &lt;string.h&gt;...

как тут эту программу через два класса сделать ?
как тут эту программу через два класса сделать ? #include &lt;iostream&gt; #include &lt;cstdlib&gt;...

как записать эту программу через функцию main и ее прототип?
можите помоч! как записать эту программу через функцию main и ее прототип? в конце вызвать эту...

Как переделать эту программу, чтобы она выполнялась через функцию?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main(int argc, char* argv)...


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

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

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