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

Найти все слова,в которых доля букв a,b максимальна. - C++

Восстановить пароль Регистрация
 
Слава Кондратье
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 75
10.11.2012, 19:03     Найти все слова,в которых доля букв a,b максимальна. #1
Дан текст.Группы слов,разделенные пробелами(одним или несколькими) и не содержащие пробелов внутри себя,будем называть, как и прежде словами. Найти все слова,в которых доля букв a,b максимальна.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2012, 19:03     Найти все слова,в которых доля букв a,b максимальна.
Посмотрите здесь:

C++ [C++] Найти все слова,в которых доля букв a,b максимальна.
В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются. C++
C++ Непонятно условие. Основы С++ (Найти все слова, в которых доля букв a, b максимальна)
Вывести все слова в предложении в которых нет повторяющихся букв C++
C++ Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв. Напечатать все слова, отличные от последнего слова
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
extenup
53 / 53 / 3
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 20:25     Найти все слова,в которых доля букв a,b максимальна. #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
50
51
52
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string str = "brevno akarachok abrikos barhat baran amar bambuk";
 
    string str_max_a = "";
    string str_max_b = "";
    int a_counts = 0;
    int b_counts = 0;
 
    while(str != "")
    {
        int space_pos = str.find(" ");
 
        string temp = "";
        if(space_pos != -1)
            temp = str.substr(0, space_pos);
        else
            temp = str;
 
        int ac = 0;
        int bc = 0;
 
        for(unsigned int i = 0; i < temp.size(); i++)
        {
            if(temp[i] == 'a') ac++;
            if(temp[i] == 'b') bc++;
        }
        if(ac > a_counts) 
        { 
            str_max_a = temp;
            a_counts = ac;
        }
        if(bc > b_counts)
        {
            str_max_b = temp;
            b_counts = bc;
        }
        if(space_pos != -1)
            str.erase(0, space_pos + 1);
        else
            str = "";
    }
 
    cout << "Max 'a' letters in word: " << str_max_a << endl;
    cout << "Max 'b' letters in word: " << str_max_b << endl;
 
    return 0;
}
Слава Кондратье
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 75
14.11.2012, 08:54  [ТС]     Найти все слова,в которых доля букв a,b максимальна. #3
если вам не сложно объясните пожалуйста строчки
Слава Кондратье
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 75
28.11.2012, 17:46  [ТС]     Найти все слова,в которых доля букв a,b максимальна. #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
#include <string>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <iterator>
 
struct Counter
{
    const char a, b;
    Counter() : a('a'), b('b'){}
    bool operator()(char x) const
    {
        return a == x || b == x;
    }
};
 
int main()
{
    std::string s("aa  bBB   saas bb");
    std::istringstream iss(s);
    std::size_t maxCount = 0, tmpCount;
    Counter pred;
    while(iss >> s)
    {
        if((tmpCount = std::count_if(s.begin(), s.end(), pred)) > maxCount)
        {
            maxCount = tmpCount;
        }
    }
    std::cout << "maxCount = " << maxCount << std::endl;
    iss.clear();
    iss.seekg(0);
    if(maxCount)
    {
        while(iss >> s)
        {
            if(std::count_if(s.begin(), s.end(), pred) == maxCount)
            {
                std::cout << s << std::endl;
            }
        }
    }
    return 0;
}
Слава Кондратье
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 75
14.12.2012, 15:57  [ТС]     Найти все слова,в которых доля букв a,b максимальна. #5
она выдает просто максимум где встречается буква a b ,а надо долю букв,как это сделать?
Слава Кондратье
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 75
16.12.2012, 10:04  [ТС]     Найти все слова,в которых доля букв a,b максимальна. #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
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
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct T
{
    int pos, a, b;
    };
int main()
{
char *p=NULL, str[ 100 ];
int i, j, a_count=0, b_count=0, a_max=0, b_max=0, word_count, N;
printf( "Enter string" );
fgets( str, 100, stdin );
N=strlen( str );
T *tot=new T[ N ];
for( i=0; i<N; i++ )
    tot[ i ].pos=0;
for( i=0, word_count=0; i<N; i++ )
{
    if( str[ i ]=='a' )
        ++a_count;
    else if( str[ i ]=='b' )
        ++b_count;
    else if( str[ i ]==' ' || str[ i ]=='.' )
    {
        if( a_count && b_count )
        { 
            if( a_count>a_max )
                a_max=a_count;
            if( b_count>b_max )
                b_max=b_count;
            tot[ word_count ].pos=1;
            tot[ word_count ].a=a_count;
            tot[ word_count ].b=b_count;
            }
            ++word_count;
            a_count=0;
            b_count=0;
        }
    }
p=strtok( str, " " );
for( i=0; ; i++ )
{
    if( p )
    {
        if( tot[ i ].pos>0 )
        {
            if( tot[ i ].a>=a_max || tot[ i ].b>=b_max  )
                printf( "%s\n", p );
            }
        }
    else
        break;
    p=strtok( NULL, " " );
    }
getch();
 
}
Добавлено через 21 секунду
кто поможет строчки объяснить,хочу разобраться?
Yandex
Объявления
16.12.2012, 10:04     Найти все слова,в которых доля букв a,b максимальна.
Ответ Создать тему
Опции темы

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