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

Вывести группы букв строки, в которых буква А встречается не менее двух раз - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
TambowsWolf
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 19
09.07.2011, 17:57     Вывести группы букв строки, в которых буква А встречается не менее двух раз #1
решите пожалуйста задачу. буду очень благодарен.

Ввести строку, в которую могут входить только цифры и буквы. Распечатать те группы букв, в которых буква А встречается не менее двух раз. (Группа букв - это последовательность букв, обрамленная цифрами.)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2011, 17:57     Вывести группы букв строки, в которых буква А встречается не менее двух раз
Посмотрите здесь:

Каждая буква входит в слово не менее двух раз (на си) C++
Что здесь неправильно? (Вывести все слова строки в которых первая буква входит в него ещё раз) C++
C++ Строковые переменные: Найти все слова, в которых буква ''а'' входит не менее двух раз
C++ В заданной строке выбрать те слова,в которых первая буква этого слова встречается еще хоть один раз
Определить, имеются ли в последовательности слова, в которых каждая буква слова входит в него не менее двух раз C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.07.2011, 18:29     Вывести группы букв строки, в которых буква А встречается не менее двух раз #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
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
#include <iostream>
#include <string>
#include <set>
#include <algorithm>
#include <iterator>
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    std::string letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    std::string digits = "0123456789";
 
    std::string input_string;
 
    std::cout << "Введите строку, содержащую только буквы латинского алфавита и цифры: ";
    std::cin >> input_string;
 
    if (input_string.find_first_not_of(letters + digits) != std::string::npos)
    {
        std::cout << "Введённая строка должна  содержать только буквы латинского алфавита и цифры!" << std::endl;
 
        return 0;
    }
 
    std::string::size_type left_pos, right_pos = input_string.find_first_of(digits);
    std::string::const_iterator input_string_begin = input_string.begin();
 
    std::set< std::string > string_set;
 
    while ((left_pos = input_string.find_first_of(letters, right_pos)) != std::string::npos)
    {
        if ((right_pos = input_string.find_first_of(digits, left_pos)) == std::string::npos)
            break;
 
        std::string::const_iterator left_pos_iter = input_string_begin + left_pos;
        std::string::const_iterator right_pos_iter = input_string_begin + right_pos;
 
        if (std::count(left_pos_iter, right_pos_iter, 'A') >= 2)
            string_set.insert(std::string (left_pos_iter, right_pos_iter));
    }
 
    std::cout << "Группы букв, в которых буква \'A\' встречается не менее двух раз"
              << (string_set.size() == 0 ? ", не найдены" : ":") << std::endl;
 
    std::copy(string_set.begin(), string_set.end(), std::ostream_iterator< std::string > (std::cout, "\n"));
 
    return 0;
}
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
09.07.2011, 18:31     Вывести группы букв строки, в которых буква А встречается не менее двух раз #3
Ну если пробелов не будет, то можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <functional>
#include <algorithm>
#include <string>
#include <sstream>
#include <cctype>
 
int main(){
  std::string  s, t;
  getline(std::cin, s);
  std::replace_if(s.begin(), s.end(), isdigit, ' ');
  std::istringstream  ist(s);
  while(ist >> t)
    if(std::count(t.begin(), t.end(), 'A') >= 2)
      std::cout << t << ' ';
  return 0;
}
silent_1991
09.07.2011, 18:34
  #4

Не по теме:

asics, чоооорд, до такого не догадался...

nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
09.07.2011, 18:40     Вывести группы букв строки, в которых буква А встречается не менее двух раз #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
29
30
31
#include <iostream>
#include <algorithm>
#include <string>
 
std::string numbers = "0123456789";
 
bool pred(char c)
{
    return (std::find(numbers.begin(), numbers.end(), c) != numbers.end()) ? true : false;   
}
 
void print(char c) { std::cout << c; }
 
int main()
{
    std::string str = "6AAA8jbkfbbaghbhbAABDhavdfj85656A9AAAD1kslfAAAjsbb1A  AA";
    std::string::iterator start = str.begin(), end = str.end();
   
    start = std::find_if(start, str.end(), pred);
    while (start != str.end() && (end = std::find_if(start + 1, str.end(), pred)) != str.end())
    {
        if (static_cast <int> (std::count(start, end, 'A')) >= 2)
        {
            std::for_each(start + 1, end, print);
            std::cout << std::endl;
        }
        start = end;
    }
 
    return 0;
}
asics
09.07.2011, 18:40
  #6

Не по теме:

Ну у меня там тоже не все учтено, т. е. при таком вводе: hdgAAA761fs342sdf34
вывод: hdgAAA, что в принципе не совсем верно.

silent_1991
09.07.2011, 18:41
  #7

Не по теме:

asics, да, об этом я позаботился)) Но, видимо, всё-таки нужно время, чтобы отучиться мыслить циклами и начать думать в рамках алгоритмов... STL только начинаю изучать))

TambowsWolf
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 19
09.07.2011, 20:55  [ТС]     Вывести группы букв строки, в которых буква А встречается не менее двух раз #8
Большое спасибо!!! Просьба: можно эту задачу передалать на язык СИ.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
09.07.2011, 20:58     Вывести группы букв строки, в которых буква А встречается не менее двух раз #9
TambowsWolf, а почему было сразу язык не указать? Видишь ли, раздел называется С/C++.
TambowsWolf
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 19
09.07.2011, 21:14  [ТС]     Вывести группы букв строки, в которых буква А встречается не менее двух раз #10
Иззвини. Просто работы много. Забыл дописать.
silent_1991
09.07.2011, 21:17
  #11

Не по теме:

А авторы языка си, в таком случае, забыли дописать к нему STL. К сожалению...

TambowsWolf
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 19
09.07.2011, 21:42  [ТС]     Вывести группы букв строки, в которых буква А встречается не менее двух раз #12
Перепешите пожалуйста. Просто очень срочно надо!!!
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
09.07.2011, 22:05     Вывести группы букв строки, в которых буква А встречается не менее двух раз #13
Цитата Сообщение от TambowsWolf Посмотреть сообщение
Иззвини. Просто работы много. Забыл дописать.
какой ты занятой однако. Остальным наверно делать нечего по десять раз тебе программы писать?
vinternete
2 / 3 / 1
Регистрация: 02.11.2010
Сообщений: 129
10.07.2011, 19:36     Вывести группы букв строки, в которых буква А встречается не менее двух раз #14
куплю решение на Си за 35р
http://www.cyberforum.ru/freelance/thread331587.html]куплю решение на си за 35р
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
10.07.2011, 20:49     Вывести группы букв строки, в которых буква А встречается не менее двух раз #15
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 <stdio.h>
#include <string.h>
 
int meets_enough(const char * s, char c, int needed){
    char * p;
    int cnt;
    
    for ( cnt = 0, p = strchr(s, c); p && ++cnt; p = strchr(p + 1, c) )
        if ( cnt == needed )
            return 1;
    
    return 0;
}
 
#define SRCH_SYMBOL 'A'
#define MEETS_NEEDED 2
#define DELIMS "0123456789\n"
 
int main(void){
    char buf[BUFSIZ], * p;
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
        for ( p = strtok(buf, DELIMS); p; p = strtok(NULL, DELIMS) )
            if ( meets_enough(p, SRCH_SYMBOL, MEETS_NEEDED) )
                printf("%s\n", p);
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2011, 23:26     Вывести группы букв строки, в которых буква А встречается не менее двух раз
Еще ссылки по теме:

(Только простой вариант)Дано слово и буква.Сколько раз эта буква встречается в слове C++
Подсчитать, сколько раз среди символов строки встречается заданная буква C++
C++ Подсчитать сколько раз среди символов строки встречается буква x

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

Или воспользуйтесь поиском по форуму:
vinternete
2 / 3 / 1
Регистрация: 02.11.2010
Сообщений: 129
10.07.2011, 23:26     Вывести группы букв строки, в которых буква А встречается не менее двух раз #16
offtop о чем я и говорил, то бесплатно выкладывают, а когда деньги еще предлагаешь, так ..... обливают.
Yandex
Объявления
10.07.2011, 23:26     Вывести группы букв строки, в которых буква А встречается не менее двух раз
Ответ Создать тему
Опции темы

Текущее время: 18:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru