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

Обработка файлов. Определить, как часто появляется той или иной байт - C++

Восстановить пароль Регистрация
 
tim289
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
26.02.2014, 01:15     Обработка файлов. Определить, как часто появляется той или иной байт #1
Ребята облазил весь инет и от безнадежности пишу вам. задача такова открываем файл ios::binari для двоичного ввода и вывода и нужно определить как часто появляется той или иной байт. но проблема в том что я после открытия даже не знаю как его обработать побайтово! через write/read не понимаю как. как вообще распределить побайтово а не побитово?

Добавлено через 2 часа 30 минут
если не понятно условие повторюсь) есть картинка(jpeg ) ее надо считать побайтово/побитово и распределить по частоте всетречающихся байтов!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2014, 01:15     Обработка файлов. Определить, как часто появляется той или иной байт
Посмотрите здесь:

Как узнать, сколько памяти занимает тот или иной элемент программы? C++
C++ Как в С++ или MFC получить список файлов ?
C++ Как программно сжать директорию или несколько файлов?
Дано строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). ​​Определить количество слов, которые заканчиваются одной и той C++
Обработка файлов. Определить среднее число знаков препинания, используемых в строке C++
C++ функция изменяет старший байт числа на заданное значение не изменяя младший байт
Реализовать меню, которое позволит запускать тот или иной код C++
C++ Как определить, сколько байт занимает массив?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.02.2014, 03:02     Обработка файлов. Определить, как часто появляется той или иной байт #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Как-то так:
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
ifstream fin("4.jpg", ios::binary);
    if (!fin)
        cout << "Error!" << endl;
    else
    {
        unsigned int arr[256] = {0};
        unsigned char ch;
        while (fin.read((char*)&ch, 1))
        {
            if (fin.eof()) break;
            ++(arr[ch]); // увеличиваем значение по индексу, равному значению байта
        }
        fin.close();
        
        for (int i = 0; i < 256; i += 16) // индекс массива равен значению байта, 
                                          // значение по этому индексу равно количеству таких байтов в файле
        {
            for (int j = i; j < i + 16 && j < 256; ++j)
                cout << arr[j] << ' ';
            cout << endl;
        }
        
        int sze = 0;
        for (int i = 0; i < 256; ++i)
            sze += arr[i];
        
        cout << endl << "size = " << sze << endl; // размер файла в байтах
    }
tim289
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
26.02.2014, 10:58  [ТС]     Обработка файлов. Определить, как часто появляется той или иной байт #3
все классно я даже разобрался но ОН НЕ РАБОТАЕТ!..когда я использую картинку .jpeg тогда выводит только нули.
а при doc формате выводит что байт принадлежащий по таблице аскии букве "я" встречается 1500 раз когда его в док формате всего 40...(

Добавлено через 25 минут
alsav22, на самом деле он даже не открывает jpeg . просто пишет ерор)

Добавлено через 27 минут
спасибо огромное, alsav22! я нашел ошибку у себя)
Yandex
Объявления
26.02.2014, 10:58     Обработка файлов. Определить, как часто появляется той или иной байт
Ответ Создать тему
Опции темы

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