Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
-1 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 43

Посчитать количество всех букв и количество вхождений каждой буквы

25.09.2014, 23:42. Показов 2287. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть файл из нескольких строк.
нужно:
1 посчитать количество всех букв
2 посчитать количество каждой из букв (abcd)
Проблема: считает только количество первой буквы (а).
Как это исправить и почему он считает только количество первой буквы?
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
#include <iostream>
#include <cstring>
#include <stdio.h>
#include <fstream>
#include <conio.h>
#include <cctype>
 
using namespace std;
 
 
 
int main()
{
    int i = 0;
    int const N = 100000;
    
    char *text = new char[100000];
    ifstream F;
    F.open("D:\\Users\\Greedy\\Documents\\Visual Studio 2013\\Projects\\байда\\Текст.txt");
    ofstream G;
    G.open("D:\\Users\\Greedy\\Documents\\Visual Studio 2013\\Projects\\байда\\Текст2.txt");
    
    int symb = 0;
    int sum = 0;
    int k = 0;
        char alf[] = { 'a', 'b', 'c', 'd', 'e' };
    int j;
    for (j = 0; j < sizeof(alf); j++)
    {
        symb = 0;
        char a = alf[j];
        
        while (k != 10)
        {
            k++;
            F.getline(text, N);
            cout << text << "\n";
            for (int m = 0; text[m] != '\0'; m++)
            {
                if (isalpha(text[m]))
                    sum = sum + 1;
            }
 
            for (i = 0; text[i] == a; i++)
            {
                symb = symb + 1;
            }
 
        }
        cout << alf[j] << ": " << symb << endl;
        
    }
 
    cout << "sum " << sum << endl;
 
 
 
 
 
    system("pause");
    return 0;
 
}
Платформа VS2013
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2014, 23:42
Ответы с готовыми решениями:

Посчитать количество вхождений каждой буквы
Добрый день, решаю такую задачку: спросить у человека строку, надо посчитать количество вхождений каждой буквы и вывести статистику,...

Посчитать количество вхождений каждой буквы в строке
Мне нужно сначала: -спросить у человека строку -надо посчитать количество вхождений каждой буквы -вывести статистику например: ...

Посчитать количество вхождений каждой буквы в строке
Мне нужно сначала: -спросить у человека строку -надо посчитать количество вхождений каждой буквы -вывести статистику например: ...

2
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
26.09.2014, 04:48
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
#include <iostream>
#include <cstring>
#include <fstream>
#include <cctype>
 
using namespace std;
 
 
 
int main()
{
   int i = 0;
    int const N = 1000;
 
    char *text = new char[N];
    ifstream F;
    F.open("iofail.txt");
 
 
    int symb = 0;
    int sum = 0;
 
        char alf[] = "abcdefghijklmnopqrstuvwxyz";
 
   int j;
   int alflength = strlen(alf);
    for (j = 0; j < alflength; j++)
    {
        symb = 0;
        char a = alf[j];
 
        while (!F.eof())
        {
 
            F.getline(text, N);
            if(j == 0)
            cout << text << "\n";
            if(j == 0){
            for (int m = 0; text[m] != '\0'; m++)
            {
                if (isalpha(text[m]))
                    sum = sum + 1;
            }
            }
            int length = strlen(text);
            for (i = 0;  i != length; i++)
            {
                if(a == tolower(text[i]))
                symb = symb + 1;
            }
 
        }
        //////////////////////////////
        //возвращаемся в нчало файла//
        //////////////////////////////
        F.clear();
        F.seekg(0, ios::beg);
        //////////////////////////////
        cout << alf[j] << ": " << symb << endl;
 
    }
 
    cout << "sum " << sum << endl;
 
 
 
 
 
    //system("pause");
    return 0;
 
}
Добавлено через 3 минуты
Цитата Сообщение от MELbHUK Посмотреть сообщение
и почему он считает только количество первой буквы?
Код C++
возможно потому, что к следующей итерации j ты уже полностью прочитываешь файл гетлайном
1
-1 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 43
26.09.2014, 10:13  [ТС]
Спасибо! Как я сам не допер до этого?-_- это же очевидно
Проблему реши: добавлением возвращения в начало файла из ответа, и условием, что считать сумму будет, только при 1-ой итерации j.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.09.2014, 10:13
Помогаю со студенческими работами здесь

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

Посчитать количество пробелов, количество букв, количество знаков пунктуации и количество всех символов
дан файл, в файле содержатся буквы лат. алфавита, знаки пунктуации, пробелы и цифры. по нажатию на кнопку, посчитать количество пробелов ,...

Посчитать количество вхождений буквы А в строковый массив
Получил задание которое звучит так: посчитать количество вхождений буквы А в строковый массив. Программа должна быть написана на...

Количество вхождений в тексте каждой буквы
Составить программу, которая бы для каждой буквы заданного текста указывала, сколько раз она встречается в тексте. и если можно с...

Количество вхождений каждой буквы в строке
Добрый день! В задаче нужно спросить у человека строку, надо посчитать количество вхождений каждой буквы и вывести статистику, например:...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru