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

Алфавитная соритровка структур из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Функции по обработке строк! http://www.cyberforum.ru/cpp-beginners/thread263148.html
Записать числа от 1 до 100 словами.
C++ Вывести числа от 1 до 100 словами используя строки НАдо вывести числа от 1 до 100 словами используя строки. При чём предусмотреть возможность ввода числа, и вывода его названия. Обязательна кирилица. http://www.cyberforum.ru/cpp-beginners/thread263143.html
Записать время (час: мин) словами. C++
Записать время (час: мин) словами. C++
Проверка символов и чисел C++
Определить, в каком формате записан номер мобильного телефона для номеров операторов UMC и Киевстар. (Международный, национальный, оператора, неправильный). код на Си.. Добавлено через 48 минут например дан рядок, +380985005060 проверить или первые 3 символа =+380 то вывести правильно, а 4 5 6 - 098 оператор....как это сделать в Си?
C++ Реализовать простейшую базу данных, используя пользовательские типы (структуры) http://www.cyberforum.ru/cpp-beginners/thread263117.html
Помогите написать простую программу с помощью структур
C++ visual studio , не могу получить вывод сделанного. прописал по учебнику в visual studio 10 #include <iostream> using namespace std; int main() { cout<<"Hello, world!"<<endl; return 0; } подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,686
27.03.2011, 06:58     Алфавитная соритровка структур из файла
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/////////////////////////////////////////////////////////////////////////////////////////
//Как лучше считать из файла структурированные данные,и как потом сразу 
//после считывания отсортировать по полю firma??
/////////////////////////////////////////////////////////////////////////////////////////
#include <fstream>
#include <iostream>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
/////////////////////////////////////////////////////////////////////////////////////////
struct T_spare 
{
    T_str  company;   
    T_str  name;  
    int    quantity;    
    int    price;      
    int    warranty_years;
};
/////////////////////////////////////////////////////////////////////////////////////////
bool  operator< (T_spare  spare_L, T_spare  spare_R)
{
    return spare_L.company == spare_R.company 
        ? spare_L.name     < spare_R.name
        : spare_L.company  < spare_R.company;
}
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::multiset<T_spare>  T_spares;
/////////////////////////////////////////////////////////////////////////////////////////
std::ostream& operator<<(std::ostream& os, const T_spare&  spare)
{
    os << spare.company         << std::endl
       << spare.name            << std::endl
       << spare.quantity        << std::endl
       << spare.price           << std::endl
       << spare.warranty_years  << std::endl;
 
    return os;
}
/////////////////////////////////////////////////////////////////////////////////////////
std::istream&  operator>> (std::istream&  is, T_spare&  spare)
{
    is >> spare.company
       >> spare.name
       >> spare.quantity
       >> spare.price
       >> spare.warranty_years;
 
    return  is;
}
/////////////////////////////////////////////////////////////////////////////////////////
void  fill_file(std::ofstream&  ofile)
{
    std::cout << "Введите количество вводимых запчастей: ";
    int  n = 0;
    std::cin >> n;
    for(int  i = 0; i < n; ++i)
    {
        std::cout << std::endl
                  << "Запчасть №"
                  << i + 1
                  << ":"
                  << std::endl;
 
        T_spare  spare_cur;
 
        std::cout << '\t'
                  << "фирма        : ";
        std::cin >> spare_cur.company;
 
        std::cout << '\t'
                  << "наименование : ";
        std::cin >> spare_cur.name;
 
        std::cout << '\t'
                  << "количество   : ";
        std::cin >> spare_cur.quantity;
 
        std::cout << '\t'
                  << "цена         : ";
        std::cin >> spare_cur.price;
 
        std::cout << '\t'
                  << "лет гарантии : ";
        std::cin >> spare_cur.warranty_years;
        
        ofile << spare_cur;              
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    T_str  filename;
    std::cout << "Введите имя файла: ";
    std::cin >> filename;
    std::ofstream  ofile(filename.c_str());
    fill_file(ofile);
 
    T_spares  spares;
    std::ifstream  ifile(filename.c_str());
    std::copy(std::istream_iterator<T_spare>  (ifile),
              std::istream_iterator<T_spare>  (),
              std::inserter(spares, spares.begin()));
 
    std::cout << std::endl;
    std::copy(spares.begin(), spares.end(), 
              std::ostream_iterator<T_spare>(std::cout, "\n"));
    std::cout << std::endl;
}
 
Текущее время: 03:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru