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

Посчитать количество по каждой букве в string? - C++

Восстановить пароль Регистрация
 
QWERY_2012
5 / 5 / 2
Регистрация: 09.09.2012
Сообщений: 227
08.11.2012, 20:43     Посчитать количество по каждой букве в string? #1
Необходимо посчитать количество каждой буквы (английского алфавита) в string:

Могу посчитать кол-во слов и letters в общем - но как сделать по каждой ?

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream> 
#include <string> 
#define MAXNUM 1000
 
 
 
 
using namespace std;
 
 
      int countchars(char[]);
      int countwords(char []);  //function returns the number of words in the string 
 
int main() 
{
    char list[MAXNUM];
    
   
    int numwords, numchar;
    
        cout << "Homework 10: Solution to Project 1.\n"; 
        
        cout << "\n Enter a text string to test:\n";
        cin.getline(list, 80); 
        
       
            numwords = countwords(list);
            numchar = countchars(list);
    
            cout << "\n There are " << numwords <<  " words in that text.\n";
            cout << "\n There are " << numchar <<  " letters in that text:\n\n";
            
            
            
    
    
    system("Pause");
    return 0;
}
   
   
  
   
   
           int countwords(char list[])
           #define YES 1
           #define NO 0
           {
           int i, inaword, count = 0; 
       
           inaword = NO;
           for(i = 0; list[i] != '\0'; i++)
           {
               if (list[i] == ' ')
                 inaword = NO;
               else if (inaword == NO)
               {
                    inaword = YES;
                    count++;
               }
               }
         
               return(count);
       
               }
               
               
                int countchars(char list[])
   {
       int i, count = 0;
       
       for ( i = 0;  list[i] != '\0'; i++) 
        if(isalpha(list[i])) 
            count++;
  
         return(count);
       }
Должно быть:
Character: A Count: 2
Character: B Count: 2
Character: C Count: 3

и т.д.

Добавлено через 23 минуты
Counting the occurrences of each character becomes simpler when you remember that char type values are simple integers. The values 'A' and 'Z' are simple numbers, and a loop can easily take a char type loop control variable through all the values from 'A' to 'Z'.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 20:43     Посчитать количество по каждой букве в string?
Посмотрите здесь:

C++ как посчитать количество повторений каждой из цифр в числе N*N
Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. C++
[C++] посчитать процентное соотношение(или количество) каждой буквы алфавита и биграмм C++
C++ Введите с клавиатуры строку символов, после чего выведите ее на экран вертикально (по одной букве в каждой строке).
C++ Посчитать количество подряд идущих символов в каждой строке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
JlightenDev_C++
 Аватар для JlightenDev_C++
61 / 61 / 7
Регистрация: 12.08.2012
Сообщений: 150
08.11.2012, 21:24     Посчитать количество по каждой букве в string? #2
Просто пройдись по массиву символов и сравнивай каждый символ с нужной тебе буквой, если они равны то +1 в соответственную переменную или в соответственный элемент массива. (например a[0] это будет буквой A).

Добавлено через 8 минут
Например так
C++
1
2
3
4
5
6
7
8
9
char str[size];
char a[size_a] = {A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z} //size_a = 26
for(int i = 0; i < size; i++)}{
        for(int j = 0; j < size_a; j++){
                if(str[i] == a[j]){
                            a[j] = a[j] + 1;
                            }
                }
        }
QWERY_2012
5 / 5 / 2
Регистрация: 09.09.2012
Сообщений: 227
08.11.2012, 21:24  [ТС]     Посчитать количество по каждой букве в string? #3
ОК, понятно на как бы это на С++ реализовать (не пойму)?
JlightenDev_C++
 Аватар для JlightenDev_C++
61 / 61 / 7
Регистрация: 12.08.2012
Сообщений: 150
08.11.2012, 21:25     Посчитать количество по каждой букве в string? #4
Я отредактировал пост, смотри пример.
QWERY_2012
5 / 5 / 2
Регистрация: 09.09.2012
Сообщений: 227
08.11.2012, 21:49  [ТС]     Посчитать количество по каждой букве в string? #5
Спасибо!!!

Добавлено через 17 минут
Вопрос а как считать не зглавные буквы - на выходе все необходимо.

Хотя в примере выводят все как заглавные: т.е. если встречается а то считается как А.
Что-то совсем запутался .



Что писать на cout <<?

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
#include <iostream> 
#include <string> 
#define MAXNUM 1000
 
 
 
 
using namespace std;
 
 
      
int main() 
{
 
 
 char list[MAXNUM];
 
 
 cout << "\n Enter a text string to test:\n";
        cin.getline(list, 80); 
 
 
char a[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; //size_a = 26
 
for(int i = 0; i < 26; i++)
{
        for(int j = 0; j < 26; j++)
        {
                if(list[i] == a[j])
                {
                            a[j] = a[j] + 1;
                            }
                }
        }
        
        cout << "\n There are " << .......; 
         
            system("Pause");
    return 0;
}
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.11.2012, 22:01     Посчитать количество по каждой букве в string? #6
Воспользуйтесь map.

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <map>
 
int main()
{
    std::map <char, size_t> chars;
    std::string str = "Several specializations for common character types are provided.";
    size_t i = 0;
    while (str[i++])
        chars[ str[i] ]++;
    for (auto it = chars.cbegin(); it != chars.cend(); it++)
        std::cout<<(*it).first<<": "<<(*it).second<<std::endl;
    system("pause");
    return 0;
}
Петррр
 Аватар для Петррр
5916 / 3353 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
08.11.2012, 22:03     Посчитать количество по каждой букве в string? #7
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 <cctype>
 
int main()
{
    std::string str;
    std::cout << ">>>";
    std::getline(std::cin, str);
    std::string::size_type len = str.size();
    for (char c = 'A'; c <= 'Z'; c++)
    {
        std::size_t ch_count = 0;
        for (int i = 0; i < len; i++)
            if (str[i] == c || str[i] == tolower(c))
                ch_count++;
        if (ch_count != 0)
            std::cout << c << ": " << ch_count << std::endl;
    }
    return 0;
}
QWERY_2012
5 / 5 / 2
Регистрация: 09.09.2012
Сообщений: 227
08.11.2012, 22:13  [ТС]     Посчитать количество по каждой букве в string? #8
Спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2012, 22:54     Посчитать количество по каждой букве в string?
Еще ссылки по теме:

Посчитать количество четных элементов в каждой строке матрицы C++
C++ Посчитать количество всех букв и количество вхождений каждой буквы
C++ Посчитать количество звездочек в каждой строке

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

Или воспользуйтесь поиском по форуму:
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
08.11.2012, 22:54     Посчитать количество по каждой букве в string? #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cctype>
 
using namespace std;
 
int main() {
 
    const int n = (('Z' - 'A') + 1);    
    int arr[n] = {0};
    
    char str[256];
    cin.getline(str, sizeof(str));
 
    for(int i = 0; str[i]; ++i)
        if(isalpha(str[i]))
            ++arr[toupper(str[i]) - 'A'];
 
    for(int i = 0; i < n; ++i)
        cout << static_cast<char>('A' + i) << " -> " << arr[i] << endl;
}
Yandex
Объявления
08.11.2012, 22:54     Посчитать количество по каждой букве в string?
Ответ Создать тему
Опции темы

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