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

Переписать массив структур в бинарный файл - C++

Восстановить пароль Регистрация
 
itess
Сообщений: n/a
02.06.2013, 14:18     Переписать массив структур в бинарный файл #1
Условие программы:Описать структуру с именем WORKER, содержащую следующие поля:
□ фамилия и инициалы работника;
□ название занимаемой должности;
□ год поступления на работу.
Написать программу, выполняющую следующие действия:
□ ввести данные в массив, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту;
□ вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;
□ если таких работников нет, вывести на дисплей соответствующее сообщение.

1)Первоначально информация хранится в текстовом файле “baza.txt” в виде строк.
Прочитать информацию из файла в массив структур и вывести его на экран.
Выполнить задания вариантов и результат вывести на экран и в текстовый файл “otchet.txt”.
2)Переписать массив структур в бинарный файл “baza.dat”.
Используя функцию позиционирования прочитать 2 по счёту запись и 3 с конца и вывести их на экран и в файл “otchet.txt” (дописать - append).

1 часть:
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
#include <iostream> 
#include <fstream> 
#include <string>  
#include <cstring>
using namespace std; 
 
struct Worker // структура 
{  
    char FIO[20]; 
    string doljnost; 
    int year; 
};  
 
 
 
int main() 
{   ofstream output("otchet.txt");
    
    printf("\n pamjat = %7d\n",sizeof(Worker));
 
    const int size = 10;  // количесто работников
    Worker wok[size];   // массив работников
    int N; 
    int flag = 0;      // счётчик по стажу
 
    int n = 0; 
    int i, j, k;
    ifstream infile; 
    infile.open("baza.txt"); // открываем файл
 
    while(!infile.eof())   // считываем в массив до конца файла
    { 
        infile >> wok[n].FIO >> wok[n].doljnost >> wok[n].year; 
        n++; 
    } 
 
    for (i = 0; i < size; i++) 
        for ( j = i + 1; j < size; j++)  // сортируем по фамилиям
        { 
            if(strcmp(wok[i].FIO, wok[j].FIO) > 0) 
            {   
                Worker temp;
                strcpy(temp.FIO, wok[i].FIO);
                temp.doljnost = wok[i].doljnost; 
                temp.year = wok[i].year;  
 
                strcpy(wok[i].FIO, wok[j].FIO); 
                wok[i].doljnost = wok[j].doljnost; 
                wok[i].year = wok[j].year; 
 
                strcpy(wok[j].FIO, temp.FIO); 
                wok[j].doljnost = temp.doljnost; 
                wok[j].year = temp.year; 
            }
 
            } 
 
       for (  i = 0; i < size; i++) // выводим отсортированный список
        { 
        cout << wok[i].FIO << endl; 
        cout << wok[i].doljnost << " " << wok[i].year << endl;
        output << wok[i].FIO << endl; 
        output << wok[i].doljnost << " " << wok[i].year << endl;
        output << endl << endl;  
        }  
        cout<<"\nVsego "<<10<<" zapisei "<<"\n";
 
        cout << endl << endl;  
        cout << "Inter a year " << endl; 
        cin >> N;
        cout<<"\nRabotniki so stajem bolshe "<<N<<" let: "<<"\n"; 
 
        for ( i = 0; i < size; i++) 
            if( N < 2013 - wok[i].year) // сравниваем стаж от 2013
            { 
                cout << wok[i].FIO << " " << wok[i].doljnost << " " << wok[i].year << endl;
                output << wok[i].FIO << " " << wok[i].doljnost << " " << wok[i].year << endl;
                output.close(); 
                flag++; // если есть выполнение условия увеличиваем счётчик
            } 
 
            if(flag == 0)  // если счётчик равен 0
                cout << "there is no such workers " << endl; // таких работников нет
                output << "there is no such workers " << endl;
                output.close();
 
                system("pause");
                return 0;}
тут все работает, но как теперь переписать массив в бинарный файл?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2013, 14:18     Переписать массив структур в бинарный файл
Посмотрите здесь:

Считывание и запись структур в бинарный файл C++
C++ Записать массив структур в бинарный файл
Запись/чтение массива структур в бинарный файл C++
Бинарный файл структур C++
Масив структур + бинарный файл C++
C++ Бинарный файл структур
C++ Есть файл с данными . Как переписать эти данные в массив структур?
C++ Запись массива структур в бинарный файл

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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