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

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

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

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

04.05.2012, 01:45. Просмотров 416. Ответов 8
Метки нет (Все метки)

Задача:
Напишите программу, которая отображает в виде таблицы количество строч-
ных английских букв (от '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;
}
Подскажите пожалуйста, почему подсчитывает только первую букву?
Или поток можно использовать только один раз? Не совсем их понимаю
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2012, 01:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отобразить в виде таблицы количество строчных английских букв (C++):

Напечатать последовательность строчных английских букв из входной последовательности, и частот их повторения - C++
Проверьте пожалуйста решение задачи: На вход программы подаются произвольные алфавитно-цифровые символы. Вывод этих символов...

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

Текстовый файл. Открыть, посчитать в нем количество английских и русских букв - C++
У меня есть текстовый фаил с русским и английским текстом, как мне открыть этот фаил в с++ (путь к нему как указывать правильно), и как...

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

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

Вычислить общее количество строчных букв - C++
Вычислить общее количество строчных английских и строчных букв. Не получается это вычислить, после пробела не высчитывает буквы. Еще ...

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

Не по теме:

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

1
Kedra
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 8
04.05.2012, 04:28  [ТС] #5
Заработало. Спасибо!

Не по теме:

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

0
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;
}
1
Kedra
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 8
04.05.2012, 04:39  [ТС] #7
а как это у вас в 19 строке переменные типа int сравниваются с буквами? Или это так, для наглядности?
И почему у меня без сброса флага работает?

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

В заданной строке найти количество строчных букв - C++
Помогите написать лабу на Си!! 1.Выровнять слова в строках по ширине самой длинной строки!! 2.В заданной строке найти колличество...

Подсчитать общее количество строчных латинских и русских букв - C++
Дана строка. Подсчитать общее количество содержащее в ней строчных латинских и русских букв. #include &lt;iostream&gt; using namespace std; ...

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

Вычислить и отобразить в виде таблицы функцию - C++
Вычислить и отобразить в виде таблицы функцию Y=X*X*X+3 на интервале с шагом 0.5.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.05.2012, 04:56
Ответ Создать тему
Опции темы

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