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

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

Восстановить пароль Регистрация
 
KLANBAKLAJAN
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 6
24.03.2011, 11:12     Алфавитная соритровка структур из файла #1
Всем доброе утро.
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct zapchasti
{
char firma[30];   
char tovar[30];  
int kol;    
int cena;  
int garantia; 
 
};
zapchasti a[20];
int max=0; //количество записей
char name[20]; //имя файла

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 void sortirovka()
 {    system("cls");
     cout<<"Введите имя файла:   ";
     cin>>name;
     system("cls");
     if ((file=fopen(name,"rt"))==NULL)
     {
     cout<<"Ошибка открытия файла"<<endl;
     getch();
     }
     else
     {system("cls");
     while (!feof(file))    
     ........
     ........
Как лучше считать из файла структурированные данные,и как потом сразу после считывания отсортировать по полю firma??

Добавлено через 15 минут
и еще вопрос: есть ли в С++ функции похожие на gotoxy??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2011, 11:12     Алфавитная соритровка структур из файла
Посмотрите здесь:

C++ Соритровка слиянием
C++ Пирамидальная соритровка
Считывание из файла в массив структур C++
Заполнение массива структур из файла C++
C++ Чтение структур из файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
27.03.2011, 03:55     Алфавитная соритровка структур из файла #2
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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
void gotoxy(int x,int y)
{
  HANDLE hConsole;
  COORD cursorLoc;
  cout.flush();
  cursorLoc.X = x;
  cursorLoc.Y = y;
  hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleCursorPosition(hConsole, cursorLoc);
}
 
int main()
{
    
    for(int i=5; i<15; i++)
    {   gotoxy(10,i);
        cout<<"**";
    }
    for(int i=10; i<40; i++)
    {   gotoxy(i,15);
        cout<<"*";
        gotoxy(i,16);
        cout<<"*";
    }
 
    cin.get();
}
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,693
27.03.2011, 06:58     Алфавитная соритровка структур из файла #3
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;
}
KLANBAKLAJAN
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 6
28.03.2011, 22:54  [ТС]     Алфавитная соритровка структур из файла #4
спс за помощь.
все сделал )
Yandex
Объявления
28.03.2011, 22:54     Алфавитная соритровка структур из файла
Ответ Создать тему
Опции темы

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