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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
cibapofova
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 3
#1

Удалить из строки все буквы, встречающиеся в строке более 2 раз - C++

28.10.2015, 19:08. Просмотров 414. Ответов 9
Метки нет (Все метки)

Здравствуйте! Нужна помощь.

Консольное приложение. Ввести символьную строку. Удалить из строки все буквы, встречающиеся в строке более 2 раз. Строку до и после вывести на экран.

Может у кого есть пример?

Добавлено через 15 минут
С++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2015, 19:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из строки все буквы, встречающиеся в строке более 2 раз (C++):

Удалить из массива все элементы, встречающиеся более 2 раз - C++
массив дан целочисленный одномерный массив.удалить из массива все элементы ,встречающиеся более 2 раз функция даны действительные...

Удалить из массива все элементы встречающиеся более двух раз - C++
Дано целочисленный массив размера N. Удалить из массива все элементы, встречаются более двух раз , и вывести размер полученного массива и...

Удалить из строки все символы встречающиеся более одного раза - C++
ввести символьную строку удалить из строки все символы встречающиеся более одного раза #include <string.h> #include <conio.h> ...

Выведите все строчные гласные латинские буквы, встречающиеся в данной строке ровно один раз. - C++
Выведите все строчные гласные латинские буквы, встречающиеся в данной строке ровно один раз.

Выведите все строчные гласные латинские буквы, встречающиеся в данной строке ровно один раз - C++
Разработка алгоритмов программ с использованием дружественных функций и классов. (Выведите все строчные гласные латинские буквы,...

Удалить из строки s1 все символы, встречающиеся в строке s2. - C++
Удалить из строки s1 все символы, встречающиеся в строке s2 А вот здесь как подсчитать кол-во удаленных символов? Пробовал поставить в...

9
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
28.10.2015, 19:24 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long ll;
 
int used[500000];
 
int main(int argv, char **argc)
{
    string s;
    cin >> s;
    for(int i=0;i<s.size();i++)
    {
        used[s[i]]++;
    }
    cout << s << endl;
    for(int i=0;i<s.size();i++)
    {
        if(used[s[i]<=2])
        cout << s[i];
    }
}
как-то так
0
Andreas_Kara
32 / 32 / 17
Регистрация: 26.10.2015
Сообщений: 94
28.10.2015, 19:38 #3
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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char str[250];
    cin.getline(str, 250);
    int i = 0;
    while(str[i])
        cout << str[i++];
    cout << endl;
    i = 0;
    int cnt = 1;
    while(str[i])
    {
        for(int j = i; j >= 0; j--)
        {
            if(str[i] == str[j] && j!=i) cnt++;
            if(cnt >= 3)
            {
                int z = i;
                while(z < strlen(str)){
                    str[z] = str[z+1]; z++;}
                i--;
                break;
            }
        }
        cnt = 1;
        i++;
    }
    i = 0;
    while(str[i]) cout << str[i++];
    return 0;
}
Изменена сама строка, а не вывод.
0
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
28.10.2015, 21:41 #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
#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long ll;
 
int used[500000];
 
int main(int argv, char **argc)
{
    string s;
    cin >> s;
    for(int i=0;i<s.size();i++)
    {
        used[s[i]]++;
    }
    cout << s << endl;
    for(int i=0;i<s.size();i++)
    {
        if(used[s[i]]<=2)
            cout << s[i];
    }
}
0
daslex
1280 / 524 / 107
Регистрация: 02.08.2011
Сообщений: 2,739
29.10.2015, 11:17 #5
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
#include <iostream>
#include <string>
 
using namespace std;
 
 
int main()
{
    string S;
    getline(cin, S);
 
    int pos = 0;
     int uch = 0;
    unsigned char Arr[255] = {};
 
    for (unsigned i = 0; i < S.size(); ++i) {
        uch = (unsigned char)(S[i] - '0');
        if (Arr[uch]++ == 0) {
            S[pos++] = S[i];
        }
    }  
    S.erase(S.begin() + pos,S.end());
    cout << '\n' << S << '\n';
 
 
    cin.get();
 
}
0
Vtulhu
371 / 377 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
29.10.2015, 12:40 #6
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
#include <map>
#include <string>
#include <iostream>
 
using namespace std;
 
string filter2(string s)
{
    map<char, int> freq;
    string::iterator i;
    for (i = s.begin(); i != s.end(); i++) {
        if (freq.find(*i) == freq.end()) { freq[*i] = 0; }
        freq[*i]++;
    }
    string x = "";
    for (i = s.begin(); i != s.end(); i++) {
        if (freq[*i] <= 2) { x += *i; }
    }
    return x;
}
 
int main()
{
    cout << filter2("abracadabra") << endl;
    return 0;
}
2
daslex
29.10.2015, 12:55
  #7

Не по теме:

2 b осталось, а а под чистую

0
Vtulhu
371 / 377 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
29.10.2015, 13:55 #8
Цитата Сообщение от daslex Посмотреть сообщение
2 b осталось, а а под чистую
И что? Задание именно таково. Прочтите внимательнее ТЗ.
1
Andreas_Kara
32 / 32 / 17
Регистрация: 26.10.2015
Сообщений: 94
29.10.2015, 13:59 #9
о, я удалил все буквы которые уже дважды были в строке. невнимательно прочитал ТЗ.
0
daslex
1280 / 524 / 107
Регистрация: 02.08.2011
Сообщений: 2,739
29.10.2015, 14:37 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <algorithm>
 
using namespace std;
 
int main()
{
    string S = "abracadabra";
    unsigned pos = 1;
    remove_copy_if(S.begin(), S.end(), S.begin(), [&S, &pos](const char &ch) {  return  count(S.begin(), S.end(), ch) > 2 && pos++; });
    S.erase(S.begin() + pos + 1, S.end());
    cout << S << '\n';
 
    cin.get();
 
}
Добавлено через 14 минут
неправильно у меня.
1
29.10.2015, 14:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2015, 14:37
Привет! Вот еще темы с ответами:

Вывести слова, в которых отсутствуют буквы, встречающиеся в строке максимальное число раз - C++
дана строка символов,состоящая из слов.вывести на экран слова,в которых отсутствуют буквы,встречающиеся в строке максимальное число раз

Удалить из файла все слова, встречающиеся более одного раза - C++
Найти в файле f все слова которые встречаются более одного раза выбросить их из файла f и получить новый файл q. Помогите пожалуйста.!!!

Удалить из массива все элементы, встречающиеся ровно n раз - C++
1. Дан целочисленный массив ,состоящий из n элементов. Удалить из массива все элементы ,встречающиеся ровно n раз. 2. Дана целочисленная...

Вывести в алфавитном порядке все латинские буквы, встречающиеся в строке (Pascal -> C++) - C++
Переведите из паскаля в с++, пожалуйста! Задание:Задана строка символов. Вывести в алфавитном порядке все латинские буквы,...


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

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

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