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

Задача про файлы и "вагоны" битов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ утечка памяти http://www.cyberforum.ru/cpp-beginners/thread1010410.html
доброго времени суток Уважаемые форумчане, помогите пожалуйста разобраться с утечками памяти есть массив с геометрическими фигурами. IGeometryObject* objects; do { type = GetEnteredObjectType(); switch (type) { case 1:
C++ найти сумму наименьших значений столбцов массива С++ Здравствуйте. Помогите пожалуйста решить задание "найти сумму наименьших значений столбцов массива" http://www.cyberforum.ru/cpp-beginners/thread1010406.html
C++ разобраться с очередью
не работает operator+ и оператор-- // ConsoleApplication85.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <cstdio> #include <iostream> #include <conio.h> #include <locale>
Наследование и связный список C++
Пытаюсь сделать связный список, используя наследование при этом. Есть класс Person - имя, и указатель на следующий элемент, операция копирования(чтобы не юзабельна была) и функция добавления в список - все под private, дабы не использовалось во вред. Под public - статическая переменная под голову списка(list_begin), конструктор, вирт деструктор, виртуальная функция и вспомогательные. Далее 3...
C++ Не могу найти ошибку в массиве http://www.cyberforum.ru/cpp-beginners/thread1010365.html
Добрый вечер. Никак не могу найти ошибку. Спасибо за помощь # include <iostream> # include <math.h> # include <conio.h> # include <stdio.h> using namespace std; int main() { setlocale(LC_ALL,"RUS");
C++ Строки и работа с файлами Дан текст в файле input.txt. Проверяет чтобы после каждой точки предложение начиналось с большой буквы.Корректный текст записывает в файл output.txt.Корректно преобразует только первую строку.Но если в файле input.txt написать слово или предложение с новой строки,происходит ошибка .Задача состоит в том,чтобы происходило считывание из файла с новой строки.Помогите,пожалуйста! #... подробнее

Показать сообщение отдельно
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
18.11.2013, 00:59     Задача про файлы и "вагоны" битов
Да не совсем)) Если файл бинарный, то там не будет 05 иначе череда "010101" это всеголишь набор байт, а не бит.

А по вашем словам это имено смесь, что не имеет особого смысла. Вот Вам вариант где 2 ячейки это 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
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
73
74
75
#include <cmath>
#include <ctime>
#include <vector>
#include <climits>
#include <cstdlib>
#include <fstream>
#include <iostream>
 
typedef unsigned char       uint8_t;
 
typedef short int           int16_t;
typedef unsigned short int  uint16_t; 
 
typedef int                 int32_t;
typedef unsigned int        uint32_t;
 
int main()
{
    std::string file_name("data.txt");
 
    std::ofstream out(file_name.c_str(), std::ios_base::out | std::ios_base::binary);
    if (!out.is_open())
    {
        std::cout << "Can not open out file " << file_name << std::endl;
        return 1;
    }
 
    srand(time(0));
    uint8_t len = rand() % UCHAR_MAX;
    for (uint8_t i = 0; i < len; ++i)
    {
        uint16_t size = rand() % USHRT_MAX;
 
        std::vector<uint8_t> data(size, 0);
        for (uint16_t j = 0; j < size; ++j)
        {
            data[j] = rand() % UCHAR_MAX;
        }
    
        out.write(reinterpret_cast<const char*>(&size), sizeof(uint16_t));
        out.write(reinterpret_cast<const char*>(&data[0]), size * sizeof(uint8_t));
        out.flush();
    }
    out.close();
 
    std::ifstream in(file_name.c_str(), std::ios_base::in | std::ios_base::binary);
    if (!in.is_open())
    {
        std::cout << "Can not open in file " << file_name << std::endl;
        return 2;
    }
    
    in.seekg (0, in.end);
    uint32_t length = in.tellg();
    in.seekg (0, in.beg);
 
    std::cout << "length left : " << length << std::endl;
 
    std::vector<uint8_t> ram_cpy;
    for ( ; length; )
    {
        uint16_t size = 0;        
        in.read(reinterpret_cast<char*>(&size), sizeof(uint16_t));
 
        int cur_index = ram_cpy.size();
        ram_cpy.resize(cur_index + size);
        in.read(reinterpret_cast<char*>(&ram_cpy[cur_index]), size * sizeof(uint8_t));
 
        length -= sizeof(uint16_t) + size;
 
        std::cout << "length left : " << length << std::endl;
    }
 
    return 0;
}
Немгоно попохже сделаю "коректный вариант".

Добавлено через 1 час 53 минуты
У меня немного не стыковка. Обясню в чем.

Если файл бинарный, то 2 ячейки это 2 бита и запись выглядит так (| -условный разделитель):
00|01|1|10|00|11|000

Есди 2 ячейки это 2 символа, то запись выглядит так:
05|1ac45|01|a

но 1ac45 - это не 5 бит, тогда запись должна выглядеть как-то так(где (1) - это условное представление 5 бит в байте).
05|(1)|01|(1)

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