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

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

Войти
Регистрация
Восстановить пароль
 
QWERY_2012
5 / 5 / 2
Регистрация: 09.09.2012
Сообщений: 227
#1

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

08.11.2012, 20:43. Просмотров 570. Ответов 8
Метки нет (Все метки)

Необходимо посчитать количество каждой буквы (английского алфавита) в 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++
Есть файл из нескольких строк. нужно: 1 посчитать количество всех букв 2 посчитать количество каждой из букв (abcd) Проблема:...

Посчитать количество звездочек в каждой строке - C++
4. Пусть даны натуральное число n и символьная квадратная матрица порядка n. Получите последовательность b1, ….bn , из нулей и единиц, в...

Посчитать количество чисел в каждой строке текстового файла - C++
можете помочь с вопросом как посчитать количество чисел в каждой строке формата f файла txt (каждая строка не длиннее 255 символов) мне...

Посчитать количество подряд идущих символов в каждой строке - C++
привет всем. очень нужна помощь. бо бьюсь об неё уже не один день. дело в следующим: есть файл в нём строки с числами как...

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

Посчитать количество четных элементов в каждой строке матрицы - 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++
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
1429 / 766 / 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;
}
Петррр
5946 / 3383 / 336
Регистрация: 28.10.2010
Сообщений: 5,927
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?
Еще ссылки по теме:

Как посчитать количество повторений каждой из цифр в числе N*N? - C++
я очень плохо ориентируюсь на С++.Такой вопрос:можно числа переводить в строки?И если нет,то как осуществить решение задачи?Помогите,...

Посчитать процентное соотношение (или количество) каждой буквы алфавита и биграмм - C++
Дан текст 5Мб. надо написать программу на с++, посчитать процентное соотношение(или количество) каждой буквы алфавита и биграмм. Подскажите...

Запросить строку, посчитать количество вхождений каждой буквы, и вывести статистику - C++
Не могу решить!Помогите!

Каждой букве в тексте поставить в соответствие число, равное квадрату её позиции в латинице - C++
Каждой букве в тексте поставить в соответствие число, равное квадрату её позиции в латинице.Вот код но выводит другие символы: #include...

Введите с клавиатуры строку символов, после чего выведите ее на экран вертикально (по одной букве в каждой строке). - C++
ДОБРОГО ВРЕМЕНИ СУТОК ВАМ))) помогите пожалуйста,если не трудно с выполнением задания.:umnik: Введите с клавиатуры строку символов,...

Для каждой из матриц подсчитать количество четных элементов в каждой строке - C++
даны 2 матрицы разн.размерности. Для каждой из них подсчитать кол-во четных эл-тов в каждой строке. Использовать процедуры и ф-ции.


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

Или воспользуйтесь поиском по форуму:
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
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?
Ответ Создать тему
Опции темы

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