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

Бинарный режим открытия файла; Битовые вхождения в файл - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогиите, пожалуйста, сделать болк-схему http://www.cyberforum.ru/cpp-beginners/thread891607.html
#include <iostream> #include <cstdlib> #include <ctime> /* Prototipi */ int** createMatrix(int, int); void fillMatrix(int**, int, int); void printMatrix(int **, int, int); int getIndexOfMinElement(int **, int, int); void reverseFirstWithMin(int **, int, int);
C++ Перенести первые буквы слова в конец Задача: Дано слово, перенести первые k его букв в конец.(использовать оператор цикла) Вот что-то написал, но работает не правильно в зависимости от количества букв. Помогите пожалуйста исправить.Заранее спасибо. Программа: #include<iostream.h> #include<string.h> void main() { char a,b; http://www.cyberforum.ru/cpp-beginners/thread891606.html
C++ Сформировать двоичный файл из элементов, заданной в варианте структуры. Структура "Стадион"
Люди добрые помогите пожалуйста написать программу на С++! Сформировать двоичный файл из элементов, заданной в варианте структуры, распечатать его содержимое, выполнить удаление и добавление элементов в соответствии со своим вариантом, используя для поиска удаляемых или добавляемых элементов функцию. Формирование, печать, добавление и удаление элементов оформить в виде функций. Предусмотреть...
C++ Что такое юнит-тест
В задании требуется наличие юнит-тестов к программе. Что это? Как выглядит? Как работает?
C++ Подправить программу http://www.cyberforum.ru/cpp-beginners/thread891569.html
помогите, пожалуйста. программа работает только когда вводятся числа по условию от 3 до 9. когда вводишь больше 9, то программа считает, хотя не должна, а меньше 3-ничего не происходит. #include "stdafx.h" #include <iostream> #include <cmath> using namespace std; int main()
C++ Даны действительные числа X1,.,X10, Y1,.,Y10 Даны действительные числа X1,...,X10, Y1,...,Y10 . Получить cумму 10 i=1 XiYi . Как упростить решение,если исходные данные будут иметь следующий порядок: X1Y1,..., X10Y10 ? Помогите нада срочно) подробнее

Показать сообщение отдельно
Smiler_
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 4

Бинарный режим открытия файла; Битовые вхождения в файл - C++

05.06.2013, 07:59. Просмотров 864. Ответов 6
Метки (Все метки)

Доброго времени суток! Нужна помощь, не могу разобраться как с заданием, так и с написанием программы.

Задание такое: Написать программу подсчитывающую количество вхождений одинаковых битовых последовательностей в файл.

Как я понял задание: Открываем файл в бинарном режиме, считываем данные из файла(в виде байтов), далее необходимо байты разбить на биты(применяя битовую маску), посчитать кол-во одинаковых битовых последовательностей...(Так мне объяснили)

Что у меня вышло:
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
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
using namespace std;
int main()
{
setlocale(0, "rus");
string d,e,f,g;
int i, j, k=0,length;
char b[15]="Hello world!!!";
char rd[15];
unsigned char mask=0x1;
FILE* fp = fopen("my_file.bin","wb+");
if(fp != NULL)
{
fwrite( b, sizeof(char), 14, fp );
fseek(fp,0L,SEEK_END);
length = ftell(fp);
fseek(fp,0L,SEEK_SET);
    for (i=1; i<=length ;i++)
    {
fread(rd,sizeof(char), 1,fp);
fseek(fp,i,SEEK_SET);
for (j=1;j<14;j++)
{
d=rd[i]*mask;
e.append(d);
rd[i]>>1;
}
    }
    for (i=1; i<=(e.length()/8);i++)
    {
        f=e.substr(0,8*i);
        g=e.substr(8*i, e.length());
        length--;
        for (j=1; j<length+1;j++)
        {
                if(g.substr(8*j, f.length()) == f)
                k++;
        }
    }
cout << "Число одинаковых битовых вхождений:"<<k<<endl;
}
else
{
cout << "Файл не открыт\n";}
if(fclose(fp))
{
    cout << "Файл не закрыт\n";
}
system("pause");
return 0;
}
И соответственно вопрос...где тут, что не так) И что считывает функция fread...байт в виде 0 и 1 ? или просто символ?
Не отрицаю, что код корявый)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru