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

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

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

Бинарный поиск в бинарном файле - C++

26.12.2013, 14:28. Просмотров 619. Ответов 2
Метки нет (Все метки)

Здравствуйте, помогите решить проблему. Написал программу для нахождения числа бинарным поиском и перебором в бинарном файле. Программа, вроде, работает. То есть выводит в конце то, что надо, но когда пытаюсь открыть созданный бинарный файл через TextEdit (ОС MacOS 10.9) выдает то, что на скриншоте.
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
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <locale>
#include <fstream>
using namespace std;
ofstream bin("/Users/GlebShipilov/Desktop/бинарный файл.bin",ios::binary);
ifstream dat("/Users/GlebShipilov/Desktop/бинарный файл.bin",ios::binary);
void perebor(int pm, int pa[1000],int px)
{
    int k=0,i;
    for(i=0;i<pm;i++)
    {
        if (pa[i]!=px)
            k++;
        else
            cout<<"Кол-во шагов перебором: "<<k<<endl;
    }
    
}
void binar(int n, int parray[1000], int y)
{
    int s;
    int l=0;
    int a=0;
    int b=n;
    {
        while(parray[s]!=y)
        {
            s=(a+b)/2;
            if(y==parray[s])
            {
                l++;
            }
            else if (y<parray[s])
            {
                b=s;
                l++;
            }
            else if (y>parray[s])
            {
                a=s;
                l++;
            }
        }
    }
    cout<<"Кол-во шагов бинарным поиском "<<l;
}
class poisk
{
protected:
    int array[1000],i,m,j,x;
public:
    void getData()
    {
        cout<<"Введите кол-во элементов"<<endl;
        cin>>m;
        for (i=0;i<m;i++)
        {
            array[i]=rand()%1001;
        }
        for (i=0;i<m;i++)
            for(j=0;j<m-i-1;j++)
                if(array[j]>array[j+1])
                    swap(array[j],array[j+1]);
    }
    void showData()
    {
        for(i=0;i<m;i++)
            cout<<array[i]<<" ";
        cout<<endl<<"Введите число, которое хотите найти "<<endl;
        cin>>x;
        perebor(m, array, x);
        binar(m, array, x);
    }
};
int main()
{
    setlocale(LC_ALL, "");
    poisk search;
    search.getData();
    bin.write((char*)(&search), sizeof(search));
    dat.read((char*)(&search), sizeof(search));
    search.showData();
    return 0;
}
Миниатюры
Бинарный поиск в бинарном файле  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2013, 14:28     Бинарный поиск в бинарном файле
Посмотрите здесь:

C++ Бинарный поиск в текстовом файле
БД в бинарном файле C++
Сортировка в бинарном файле C++
Поиск заданной последовательности символов в бинарном файле C++
C++ Структура в бинарном файле
C++ Поиск по структуре в бинарном файле
Поиск числа в файле, открытым в бинарном режиме C++
Поиск в бинарном файле с использованием файловых потоков C++
C++ Поиск в бинарном файле
C++ Структура в бинарном файле
C++ Поиск в бинарном файле
C++ Запись в бинарный файл в бинарном режиме: будут ли числа записаны в двоичной системе счисления?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
26.12.2013, 15:25     Бинарный поиск в бинарном файле #2
Ну как-бы записывать то надо char а не int. В этом вся проблема.

Когда ты пишешь
C++
1
std::ostream << int
выведется значение равное int + '0'

А в твоем случае int - 32 бита, а char - 8-16 где как. Текстовый редактор читает по 8-16 бит, т.е. 1 int он разузнает как 2 char.
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.12.2013, 15:40     Бинарный поиск в бинарном файле #3
Цитата Сообщение от DrG Посмотреть сообщение
но когда пытаюсь открыть созданный бинарный файл через TextEdit (ОС MacOS 10.9) выдает то, что на скриншоте.
А вы что ожидали увидеть? Текстовые радакторы - для текстовых файлов.
Yandex
Объявления
26.12.2013, 15:40     Бинарный поиск в бинарном файле
Ответ Создать тему
Опции темы

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