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

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

04.05.2012, 01:45. Показов 1431. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.05.2012, 01:45
Ответы с готовыми решениями:

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

Дана строка, состоящая из строчных и заглавных английских букв. Заменить все строчные буквы на заглавные
Дана строка, состоящая из строчных и заглавных английских букв. Заменить все строчные буквы на заглавные. Строчны́е буквы —...

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

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

Не по теме:

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

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

Не по теме:

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

0
 Аватар для Buckstabue
179 / 127 / 25
Регистрация: 12.01.2012
Сообщений: 623
04.05.2012, 04:38
Ахаххаха, а у меня видите ли, наоборот, ваша версия работает, а то что я написал не работает
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
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 8
04.05.2012, 04:39  [ТС]
а как это у вас в 19 строке переменные типа int сравниваются с буквами? Или это так, для наглядности?
И почему у меня без сброса флага работает?

P.S. Дошло. Из-за того, что функция open вынесена за пределы цикла.
0
 Аватар для Buckstabue
179 / 127 / 25
Регистрация: 12.01.2012
Сообщений: 623
04.05.2012, 04:51
Цитата Сообщение от Kedra Посмотреть сообщение
а как это у вас в 19 строке переменные типа int сравниваются с буквами? Или это так, для наглядности?
Это не буквы, а символьные константы
Насчёт флага ничего сказать не могу, может от компилятора зависит, а может и от файловой системы. Т.е. вы в моём коде удаляете строчку 23 и всё работает как надо? О_о
0
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 8
04.05.2012, 04:56  [ТС]
Цитата Сообщение от Buckstabue Посмотреть сообщение
Т.е. вы в моём коде удаляете строчку 23 и всё работает как надо? О_о
Не работает
Просто не сразу заметила различия.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2012, 04:56
Помогаю со студенческими работами здесь

Напечатать все группы букв, содержащее наименьшее количество согласных английских букв
Рассматривается непустая строка, содержащая не более 80 символов. Каждый символ строки может быть малой английской буквой, цифрой или одним...

Найти все группы букв, содержащие наименьшее количество согласных английских букв
В поиске нашёл такую же задачу, только на Delphi Помогите решить задачу: Рассматривается непустая строка, содержащая не более 80...

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

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

Дан текст из строчных русских букв. Подсчитать количество гласных букв в тексте
Дан текст из строчных русских букв. Подсчитать количество гласных букв в тексте.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru