Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> бин файлы 
V
    Опции темы
afanp
Дата 10.3.2009, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



Есть задание, отсортировать данные бинарного файла. У самого идей никаких нет, хотелось бы услышать совет/рекомендации :в чем хранить данные и как сортировать?
PM MAIL   Вверх
zim22
Дата 10.3.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



данные хранить в файле
сортировать алгоритмами сортировки


--------------------
PM MAIL   Вверх
Anikmar
Дата 10.3.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата

zim22:
данные хранить в файле
сортировать алгоритмами сортировки 

 smile Не удержался.

Мой совет:
Если файл небольшой - считать его целиком в массив байт, отсортировать и записать в другой файл.
Если большой - то для начала много читать про сортировку.


PM MAIL ICQ   Вверх
afanp
Дата 10.3.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



. Каждая запись включает автора, название, год издания и количество страниц.
Создать массив структур, записать в него данные, отсортировать и в другой файл. Ничего не упустил?
PM MAIL   Вверх
zim22
Дата 10.3.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



ну и что здесь сложного?
загоните структуры в контейнер
примените функцию std::sort
запишите отсортированный контейнер в файл


--------------------
PM MAIL   Вверх
afanp
Дата 10.3.2009, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



эм, не хотел бы показатся навязчивым, но в какой именно контейнер? 
я помню делал массив структур, а можно например организовать такой же вектор ? и их уже отсортировать? или нужно использовать list или что-то еще?
PM MAIL   Вверх
zim22
Дата 10.3.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



используйте вектор.


--------------------
PM MAIL   Вверх
afanp
Дата 10.3.2009, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



Код

#include <iostream>
#include <string>
#include <vector>
using namespace std;

class any{
private:
    int d;
    string a;
public:
    any(){
        d=0;
        a=" ";}
    void getit(int var,string s1);
    void show();
};
void any::getit(int var,string s1){
    d=var;
    a=s1;
}
void any::show(){
    cout << a  << d << endl;
}

int main(){

    vector<any>ob1;
for(int i=0;i<10;i++){
    ob1[i].getit(i,"lol");
}

system("pause");
return 0;
}

не работает !
PM MAIL   Вверх
andrew_121
Дата 10.3.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



afanp, Что-то вроде этого. Поправь если что.
Код

class Item {
public:
    Item():year(0),pages(0){}
    ~Item() {}
    void clear() {
        year = pages = 0;
        autor.clear();
        name.clear();
    }
    /**/
    std::string autor;
    std::string name;
    int year;
    int pages;
};


std::fstream& operator<< (std::fstream& f, const Item& i) {
    f    << i.autor.length() << i.autor
        << i.name.length() << i.name
        << i.pages
        << i.year;
    return f;
}

std::fstream& operator>> (std::fstream& f, Item& i) {

    int length = 0;
    
    f >> length; i.autor.resize(length); f >> i.autor;
    f >> length; i.name.resize(length); f >> i.name;
    f >> i.pages;
    f >> i.year;

    return f;
}




--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
zim22
Дата 10.3.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(afanp @  10.3.2009,  16:18 Найти цитируемый пост)
   vector<any>ob1;
for(int i=0;i<10;i++){
    ob1[i].getit(i,"lol");
}

вы создаёте пустой вектор. в нём ноль элементов. а затем с помощью оператора индексирования пытаетесь обращаться к несуществующим элементам вектора.
если вы хотите записывать данные в вектор - используйте функцию push_back


--------------------
PM MAIL   Вверх
afanp
Дата 10.3.2009, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



zim22, da спасибо большое разобрался уже. Тоесть можно передавать данные только через конструктор ?
PM MAIL   Вверх
bsa
Дата 10.3.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(afanp @ 10.3.2009,  16:49)
zim22, da спасибо большое разобрался уже. Тоесть можно передавать данные только через конструктор ?

Не только. К последнему элементу вектора можно получить доступ через метод back, а там хоть что меняй... Можно предварительно создать и настроить структуру, а затем уже сделать push_back для настроенного объекта.
PM   Вверх
afanp
Дата 11.3.2009, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



bsa, ам можно поподробнее? что значит настроить стркутуру?
PM MAIL   Вверх
bsa
Дата 11.3.2009, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



afanp, это значит присвоить полям структуры требуемые значения, хотя, это работа конструктора.
PM   Вверх
afanp
Дата 12.3.2009, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



Приветы передаю еще раз всем вам. У меня вопрос теперь такого плана все о тех же бинарных файлах : 
Код

/
#include <iostream>
#include <fstream>
#include <string>
#include <ctime>
using namespace std;
ofstream fout;
ifstream fin;
struct books{
    int year;
    int pagenumber;
};


books write(){
    books kniga;
    int x=rand()%10;
    int y=rand()%100;
    kniga.pagenumber=x;
    kniga.year=y;
    return kniga;
}

int main(){
    srand(time(NULL));
    const int n=10;
    fout.open("test.txt",ios::binary);
    int i=0;
    while(i<10){
    books bk1;
    bk1=write();
    fout.write((char*)&bk1,sizeof(bk1));
    i++;}
    fout.close();
system("pause");
return 0;
}

когда я использую write то зачем там нужны * и & ?

и еще вот... когда я вывожу while(!fin.eof()) то у меня последний элемент считывается всегда 2 раза о_О

Это сообщение отредактировал(а) afanp - 12.3.2009, 20:41
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.