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

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

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

Определить количество разных букв в тексте - C++

09.03.2013, 12:24. Просмотров 386. Ответов 7
Метки нет (Все метки)

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

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

Определить количество слов в тексте, состоящих из K букв. C#/C++ - C++
Даны числа K и текст из слов разделенными пробелами, в конце точка. Определить количество слов в тексте, состоящих из K букв. Помогите...

В тексте определить количество слов, имеющих более двух букв 'O' в слове - C++
Задача : В тексте определить количество слов, имеющих более двух букв 'O' в слове. Вывести на печать эти слова. Помогите решить задачу...

Строки. Подсчитать количество заглавных букв в тексте; вывести на экран слова, имеющие наименьшее количество букв... (подправить) - C++
Дано задачу: С клавиатуры вводится строка. Составить программу, которая подсчитывает количество заглавных букв в тексте; выводит на...

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

26. Подсчитать количество букв "А" в предложении и общее количество букв. В тексте несколько строк. - C++
помогите с программкой пожалуйста. язык для меня совершенно незнакомый, а от решения этой задачки зависит судьба в универе одной очень...

7
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.03.2013, 12:57 #2
Можно использовать std::set<char> и метод insert при проходе по тексту
1
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.03.2013, 14:01 #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
#include <iostream>
#include <string>
#include <sstream>
#include <cstdlib>
#include <cctype>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL,"");
    
    string str = "afode AdsSD sddfae CF cksla bsefdbda qzkeirl";
 
    stringstream s;
    s << str;
    string str2;
    
    unsigned char ch;
    while (true)
    {
        s >> ch;
        if(s.eof()) break;
        if (!str2.empty())
        {
            int i = str2.find(tolower(ch));
            if (i == -1) str2.push_back(tolower(ch));
        }
        else str2.push_back(ch);
    }
 
    cout << str2 << endl;
    cout << "Разных букв в тексте: " << str2.size() << endl;
    
    system("pause");
    return 0;
}
0
Wolkodav
607 / 460 / 32
Регистрация: 18.09.2012
Сообщений: 1,686
09.03.2013, 14:05 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <map>
#include <string>
#include <iostream>
#include <locale>
 
using namespace std;
 
int main()
{
setlocale(LC_ALL,"Russian");
cout<<"Введите текст: "<<endl;
string text;
cin>>text;
map<char,int> count;
for (int i=0;i<text.length();i++)
{
count[text[i]]++;
}
cout<<count.size();
return 0;
}
Как то так.
1
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.03.2013, 14: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
#include <iostream>
#include <string>
#include <cstdlib>
#include <map>
#include <cctype>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"");
    
    string text = "FFFF ffff ФФФФ фффф";
 
    map<char, int> count;
    for (int i = 0; i < text.length(); i++)
    {
        if (isalpha((unsigned char)text[i]))
            count[tolower(text[i])]++;
    }
    cout << count.size();
    
    system("pause");
    return 0;
}
1
Wolkodav
607 / 460 / 32
Регистрация: 18.09.2012
Сообщений: 1,686
09.03.2013, 14:21 #6
alsav22, вы правы, не подумал.
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.03.2013, 14:32 #7
А ещё лучше через set (в map здесь особого смысла нет, а set тоже удаляет дубликаты):
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
#include <iostream>
#include <string>
#include <cstdlib>
#include <set>
#include <cctype>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"");
    
    string text = "FFFF ffff ФФФФ фффф";
 
    set <char> count;
    for (int i = 0; i < text.size(); i++)
    {
        if (isalpha((unsigned char)text[i]))
            count.insert(tolower(text[i]));
    }
    cout << count.size() << endl;
    
    system("pause");
    return 0;
}
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.03.2013, 14:34 #8
Можно еще так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <algorithm>
inline char low(char& c)
{
    return c = tolower(c);
}
inline bool alpha(char c)
{
    return !isalpha(c);
}
int main()
{
     std::string str = "dioafadfs sl&*&*E489D gfgd;fgdfgdf";
     std::for_each(str.begin(), str.end(), low);
     std::sort(str.begin(), str.end());
     str.erase(std::unique(str.begin(), str.end()),str.end()); // erase дописан Croessmah
     str.erase(std::remove_if(str.begin(), str.end(),alpha),str.end());
     std::cout<<str.size();
     return 0;
}
0
09.03.2013, 14:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2013, 14:34
Привет! Вот еще темы с ответами:

Определить длину данного и количество Букв «а». Вывести имя и количество букв в третьем слове - C++
Ввести фамилию , имя и отчество как одно текстовое данное. Определить длину данного и количество Букв « а » в нем . Вывести имя и...

Количество разных слов из n букв - C++
Полное условие задачи: Школьник Никита прямо сейчас участвует в олимпиаде по программированию. Прочитав комплект задач, он очень...

Количество гласных букв в тексте - C++
// Лабораторная работа №5.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; ...

Количество заглавных букв в тексте - C++
Помогите исправить ошибку, которую не знаю) Все подпрограммы работают, но когда они не в одной программе, а если в одной то некорректно...


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

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

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