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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
TambowsWolf
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 19
#1

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

09.07.2011, 17:57. Просмотров 1596. Ответов 15
Метки нет (Все метки)

решите пожалуйста задачу. буду очень благодарен.

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

Строковые переменные: Найти все слова, в которых буква ''а'' входит не менее двух раз - C++
Дан текст. Найти все слова, в которых буква ''а'' входит не менее двух раз.

Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_» - C++
День добрый. Имеется условие лабы. Написать программу, в которой с клавиатуры вводится до 10 символьных строк. Вывести строки, в...

Определить, имеются ли в последовательности слова, в которых каждая буква слова входит в него не менее двух раз - C++
Есть задача, никак не могу разобраться, помогите пожалуйста реализовать)) Определить, имеются ли в последовательности слова, в которых...

Удалить из текста все слова в которых буква "а" встречается более двух раз - C++
Все слова, в которых буква "а" встречается более 2-х раз, удалить из текста. Вывести полученную строку на экран, Если такой буквы нет,...

Каждая буква входит в слово не менее двух раз - C++
Используя класс string, решить задание: Дана строка. Между соседними словами - не менее одного пробела, за последним словом – точка....

Каждая буква входит в слово не менее двух раз (на си) - C++
Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Напечатать все слова, которые удовлетворяют следующему...

15
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 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;
}
0
asics
Freelance
Эксперт С++
2850 / 1785 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
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;
}
1
silent_1991
09.07.2011, 18:34
  #4

Не по теме:

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

0
nameless
Эксперт С++
334 / 298 / 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;
}
0
asics
09.07.2011, 18:40
  #6

Не по теме:

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

0
silent_1991
09.07.2011, 18:41
  #7

Не по теме:

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

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

Не по теме:

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

0
TambowsWolf
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 19
09.07.2011, 21:42  [ТС] #12
Перепешите пожалуйста. Просто очень срочно надо!!!
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
09.07.2011, 22:05 #13
Цитата Сообщение от TambowsWolf Посмотреть сообщение
Иззвини. Просто работы много. Забыл дописать.
какой ты занятой однако. Остальным наверно делать нечего по десять раз тебе программы писать?
0
vinternete
2 / 3 / 1
Регистрация: 02.11.2010
Сообщений: 129
10.07.2011, 19:36 #14
куплю решение на Си за 35р
http://www.cyberforum.ru/freelance/thread331587.html]куплю решение на си за 35р
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
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;
}
0
10.07.2011, 20:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2011, 20:49
Привет! Вот еще темы с ответами:

Посчитать, сколько раз встречается каждая буква в двух текстах - C++
мне нужно посчитать сколько раз встречается каждая буква в двух текстах. но почему-то в первом он считает правильно, а во втором тоже...

Что здесь неправильно? (Вывести все слова строки в которых первая буква входит в него ещё раз) - C++
Задание: Вывести все слова строки в которых первая буква входит в него ещё раз. #include &lt;iostream&gt; #include &lt;string&gt; #include...

Подсчитать сколько раз встречается каждая буква с учетом всех прописных и строчных букв - C++
нужно чтобы программа определила в тексте какие из символов &quot;а&quot;, &quot;о&quot;, &quot;у&quot;, &quot;ю&quot;, &quot;я&quot;, &quot;е&quot; встречаются чаще всего,затем подсчитать общее...

C++. Выводить на экран слово, если каждая его буква входит в него не менее двух раз - C++
C++. Выводить на экран слово, если каждая его буква входит в него не менее двух раз. Предположим пользователь вводит какое-то слово в...


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

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

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