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

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

Восстановить пароль Регистрация
 
Kedra
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 8
04.05.2012, 01:45     Отобразить в виде таблицы количество строчных английских букв #1
Задача:
Напишите программу, которая отображает в виде таблицы количество строч-
ных английских букв (от 'a' до 'z') в собственном исходном файле "ex5_5.cpp"
(сохраните исходный текст программы именно в этом файле).
При разработке программы предположите, что у компьютера очень мало памя-
ти – используйте только одну переменную типа "ifstream", одну переменную типа
"char" и две переменных типа "int".

Мой вариант решения (работает только для первой буквы):
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 <conio.h>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream in_stream;
    char ch;
    int var1, var2;
//Заголовки таблицы
    cout.width(10);
    cout << "Symbol";
    cout.width(25);
    cout << "Number of entries\n\n";
 
    for (var1 = 97; var1 <= 122; var1++)
    {
        in_stream.open("5 - count own letters.cpp");
        var2 = 0;
        while (!in_stream.eof())
        {
            in_stream.get(ch);
            if (int(ch) == var1)
            {
                var2++;
            }
        }
        cout.width(10);
        cout << char(var1);
        cout.width(15);
        cout << var2 <<endl;
        int(var1);
        in_stream.close();
    }
 
    _getch();
    return 0;
}
Подскажите пожалуйста, почему подсчитывает только первую букву?
Или поток можно использовать только один раз? Не совсем их понимаю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2012, 01:45     Отобразить в виде таблицы количество строчных английских букв
Посмотрите здесь:

В заданной строке найти количество строчных букв C++
C++ Текстовый файл. Открыть, посчитать в нем количество английских и русских букв
C++ Посчитать количество строчных и количество прописных букв
Напечатать последовательность строчных английских букв из входной последовательности, и частот их повторения C++
C++ Количество строчных букв в строке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
blackbodom
1 / 1 / 0
Регистрация: 24.01.2012
Сообщений: 7
04.05.2012, 02:26     Отобразить в виде таблицы количество строчных английских букв #2
Замените в 20й строке имя файла на "ex5_5.cpp", код рабочий, идет подсчет всех букв.
Kedra
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 8
04.05.2012, 04:09  [ТС]     Отобразить в виде таблицы количество строчных английских букв #3
Файл назван иначе, чтобы было проще ориентироваться в куче задачек. 20 строка верна.
Подсчет идет только для первой буквы. Что-то всё-таки неверно
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
04.05.2012, 04:25     Отобразить в виде таблицы количество строчных английских букв #4
По-моему перед каждым циклом while (!in_stream.eof()) надо прописывать что-то вроде in_stream.seekg(0) и переоткрывать файл не надо будет

Не по теме:

Ну и замудренный же у вас алгоритм!

Kedra
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 8
04.05.2012, 04:28  [ТС]     Отобразить в виде таблицы количество строчных английских букв #5
Заработало. Спасибо!

Не по теме:

простите, иначе пока не умею.

Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
04.05.2012, 04:38     Отобразить в виде таблицы количество строчных английских букв #6
Ахаххаха, а у меня видите ли, наоборот, ваша версия работает, а то что я написал не работает
P.S. а вот этот код уже работает
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 <fstream>
 
using namespace std;
 
int main()
{
    ifstream in_stream;
    char ch;
    int var1, var2;
//Заголовки таблицы
    cout.width(10);
    cout << "Symbol";
    cout.width(25);
    cout << "Number of entries\n\n";
 
    in_stream.open("main.cpp");
    for (var1 = 'a'; var1 <= 'z'; var1++)
    {
 
        var2 = 0;
        in_stream.clear(); // сброс флага EOF
        in_stream.seekg(0);
        while (!in_stream.eof())
        {
            in_stream.get(ch);
            if ( ch == var1)
            {
                var2++;
            }
        }
        cout.width(10);
        cout << char(var1);
        cout.width(15);
        cout << var2 <<endl;
    }
    in_stream.close();
 
    return 0;
}
Kedra
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 8
04.05.2012, 04:39  [ТС]     Отобразить в виде таблицы количество строчных английских букв #7
а как это у вас в 19 строке переменные типа int сравниваются с буквами? Или это так, для наглядности?
И почему у меня без сброса флага работает?

P.S. Дошло. Из-за того, что функция open вынесена за пределы цикла.
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
04.05.2012, 04:51     Отобразить в виде таблицы количество строчных английских букв #8
Цитата Сообщение от Kedra Посмотреть сообщение
а как это у вас в 19 строке переменные типа int сравниваются с буквами? Или это так, для наглядности?
Это не буквы, а символьные константы
Насчёт флага ничего сказать не могу, может от компилятора зависит, а может и от файловой системы. Т.е. вы в моём коде удаляете строчку 23 и всё работает как надо? О_о
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2012, 04:56     Отобразить в виде таблицы количество строчных английских букв
Еще ссылки по теме:

C++ Вычислить и отобразить в виде таблицы функцию
Подсчитать общее количество строчных латинских и русских букв, содержащихся в строке C++
C++ Вычислить общее количество строчных букв

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

Или воспользуйтесь поиском по форуму:
Kedra
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 8
04.05.2012, 04:56  [ТС]     Отобразить в виде таблицы количество строчных английских букв #9
Цитата Сообщение от Buckstabue Посмотреть сообщение
Т.е. вы в моём коде удаляете строчку 23 и всё работает как надо? О_о
Не работает
Просто не сразу заметила различия.
Yandex
Объявления
04.05.2012, 04:56     Отобразить в виде таблицы количество строчных английских букв
Ответ Создать тему
Опции темы

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