Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2015, 00:13   #1
annussaa
 
Регистрация: 31.03.2015
Сообщений: 5
По умолчанию (C++) чтение из бинарного файла

Здравствуйте. Имеются наброски программы, которая должна по введённой пользователем таблице сортировать данные.
например, ввод:
0 3
33 2
55 0
11 4
22 1

вывод:
11
22
33
55

с выводом все с порядке. вопрос в том, как в такой же последовательности считать эти же записанные данные из бинарного файла (записывать в него в измененном порядке нельзя...)

вот код:

Код:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;

int main(){
    vector<string>vardi; //вектор информации (слова либо числа)
    vector<int>vertibas; //вектор значений, по сути, указателей на место в векторе информации
    string strbuffer = "";
    int intbuffer;
    vardi.push_back("0");
    int limit = 0;

    do{
        getline(cin,strbuffer); // ввод информации, пока не будет введена пустая строка
        if(strbuffer.size() > 0){
            vardi.push_back(strbuffer);
        }
        limit++;
    }while(strbuffer != "" && limit != 100);
    
    while(vertibas.size() != vardi.size()){ //ввод "указателей"
        cin >> intbuffer;
        vertibas.push_back(intbuffer);
    }
    cout << endl;
    cout << "Sorting by values: " << endl;
    int p = vertibas[0];
    while(p){
        cout << vardi[p] << endl;
        p = vertibas[p];
    }
    cout << endl;

    fstream tab("tab.bin", ios::out | ios::binary);
    string xx;
    char x[21];
    x[20] = '\0';
    for (int i = 0; i < vardi.size(); i++){
        xx = vardi[i];
        for (int j = 0; j < 20; j++){
            x[j] = xx[j];
        }
        tab.write((char*)&x, 20);
        tab.write((char*)&vertibas[i], 4);
    }
    tab.close();

    cout << "Sorted file output: " << endl;
    // ...
}

программа должна быть аналогична следующей:
Код:
#include<iostream>
#include<fstream>
using namespace std;
int main() {
    int arr[5][2]={0,3,33,2,55,0,11,4,22,1};
    for (int i = 0; i < 5; i++){
        for (int j = 0; j < 2; j++){
            cout << arr[i][j] << "\t";
        }
        cout << endl;
    }
    cout << endl;
    ofstream fout ("data.txt",ios::binary);
    fout.write((char*)arr,40);
    fout.close();
    int p = arr[0][1];
    while (p) {
        cout<<arr[p][0] << "\t";
        p = arr[p][1];
        cout << p << endl;
    };
    cout<<endl;
    ifstream fin ("data.txt",ios::binary); // то место, которое нужно воспроизвести в моей программе
    fin.seekg(4);
    fin.read((char*)&p,4);
    while (p) {
        cout << fin.tellg() << endl;
        fin.seekg(p*8);
        fin.read((char*)&p,4);
        cout<<p<<endl;
        fin.read((char*)&p,4);
    };
}

Последний раз редактировалось annussaa; 03.05.2015 в 00:14. Причина: дополнения
annussaa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение бинарного файла code358 Общие вопросы Delphi 7 01.12.2013 21:49
Чтение из бинарного файла lioc C# (си шарп) 10 20.02.2012 21:12
чтение бинарного файла Snake22 Общие вопросы Delphi 1 23.01.2012 07:44
чтение из бинарного файла Kukurudza Общие вопросы C/C++ 6 08.09.2011 19:09
Чтение из бинарного файла. kir_rik Помощь студентам 2 04.06.2010 00:31