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

Сортировка структур по названию книги - C++

Восстановить пароль Регистрация
 
Megadrummer
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 20
26.05.2013, 15:15     Сортировка структур по названию книги #1
Помогите пожалуйста. Идея такая: с помощью функции void write_to_file() записать параметры книги в файл. С помощью функции sortirovka_name() нужно прочесть информацию о книге с файла и сортировать все структуры по названию книги. Это делается аналогично, как и с фамилиями только всё равно у меня не выходит помогите найти ошибку. Программа компилируется, но при вызове функции sortirovka_name() консоль закрывается.
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
85
86
#include "iostream"
#include "fstream"
#include "string"
#include "cstdlib"
#include "iomanip"
using namespace std;
 
const int costmin=50;
struct book {
            char FIO[30]; // фамилия афтора
            char name[30]; // название книги
            int data; // год публикации
            int page; // кол-во страниц
            int price; // цена книги
            };
 
void write_to_file()
{
     int a;
     struct book *shelf;
     int N;
     ofstream f;
     f.open("Library.txt", ios::binary | ios::app | ios::out); 
     cout<<"Enter amount of book"<<endl;
     cin>>N;
     shelf=new book [N*sizeof(shelf)];
 
     for (int i=0;i<N;i++){
                           cout<<endl<<"Enter Name of Writer"<<endl;
                                   cin>>shelf[i].FIO;
                                   cout<<endl<<"Enter Name of book"<<endl;
                                   cin>>shelf[i].name;
                                   cout<<endl<<"Enter the year of publication"<<endl;
                           cin>>shelf[i].data;
                                   cout<<endl<<"Amount of page"<<endl;
                                   cin>>shelf[i].page;
                                   shelf[i].price=costmin+shelf[i].page;
                                   f.write((char*)&shelf[i], sizeof(shelf[i]));
                                   }
     delete[] shelf;
     f.close();
}
 
 
void sortirovka_yaer()
{
     ifstream ff;
     ff.open("Library.txt",ios::binary);
     int N;
     struct book s[N];
     struct book p;
     while( ff.read((char*)&s, sizeof(s))){
                                           N++;
                                           }
     for(int i=0;i<N-1;i++)
     for(int j=i+1;j<N;j++)
     if(strcmp(s[i].name,s[j].name)>0){
                                       p=s[i];
                                       s[i]=s[j];
                                       s[j]=p;
                                       }
    
     ff.close();
}
 
void menu()
{   
     cout<<"1 - Write to file "<<endl;
     cout<<"1- Sort"<<endl;
int main()
{
    menu();
    char ch;
 
    do {
       cout<<"\n  Press  1,2 and q to quit: "<<endl;
       cin>>ch;
       cout<<"\n";
       switch(ch) {
                  case '1':{write_to_file(); menu(); break;};
        
                  case '2':{sortirovka_yaer(); menu(); break;}
        
                  default: cout<<"enter number from 1 to 5.\n";
                  }
       } while(ch != 'q');
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 15:15     Сортировка структур по названию книги
Посмотрите здесь:

C++ Массив структур: книги, хранящиеся в библиотеке
Написать программу удаления книги из массива структур с введенным именем автора C++
Написать программу добавления новой книги в начало массива структур. C++
C++ Работа с файлами данных (сортировка по названию пункта назначения)
C++ Написать программу удаления книги из массива структур с введенным именем автора
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
26.05.2013, 15:19     Сортировка структур по названию книги #2
Megadrummer, определи нужный предикат, и сортируй стандартной std::sort.
Megadrummer
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 20
26.05.2013, 15:32  [ТС]     Сортировка структур по названию книги #3
А мой путь не приемлем? c std::sort ни разу не работал
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
26.05.2013, 15:41     Сортировка структур по названию книги #4
Megadrummer, странная у тебя функция сортировки. Нужно выполнить сортировку перед записью в файл? Или же сортировку данных из файла?
Megadrummer
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 20
26.05.2013, 15:52  [ТС]     Сортировка структур по названию книги #5
Сортировку данных из файла, потом уже записать в файл заново, но это я уже сам сделаю.
Iron Acorn
 Аватар для Iron Acorn
12 / 12 / 1
Регистрация: 28.09.2012
Сообщений: 39
26.05.2013, 15:53     Сортировка структур по названию книги #6
Цитата Сообщение от Megadrummer Посмотреть сообщение
А мой путь не приемлем? c std::sort ни разу не работал
Всё очень просто, вот тут описание и пример.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 16:09     Сортировка структур по названию книги
Еще ссылки по теме:

Сортировка структур C++
C++ Сортировка структур
C++ Сортировка структур

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

Или воспользуйтесь поиском по форуму:
Megadrummer
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 20
26.05.2013, 16:09  [ТС]     Сортировка структур по названию книги #7
помогите разобраться что в моём способе не так.
Почитаю как разберусь со своим.
Yandex
Объявления
26.05.2013, 16:09     Сортировка структур по названию книги
Ответ Создать тему
Опции темы

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