Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
itess
1

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

02.06.2013, 14:18. Показов 724. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Условие программы:Описать структуру с именем 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;}
тут все работает, но как теперь переписать массив в бинарный файл?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2013, 14:18
Ответы с готовыми решениями:

Записать массив структур в бинарный файл
Собственно программа, которая записывает\считывает масс структур в бинарный файл... проблема...

Сконвертировать текстовый файл в бинарный, переписать только положительные числа в другой бинарный файл
Бинарные файлы!! Помогите пожалуйста. Дано бинарный файл ( данные сначала в текстовом, конвертирую...

Заполнить массив структур сканеров и записать его в бинарный файл
Здравствуйте! Новый день - новая проблема. Не могу справиться с заданием семинара, помогите...

Массив структур, записан в бинарный файл. Найти максимальный элемент
Массив структур, записан в бинарный файл. Каждая структура состоит из элементов: производитель,...

0
02.06.2013, 14:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2013, 14:18
Помогаю со студенческими работами здесь

Есть файл с данными . Как переписать эти данные в массив структур?
Допустим есть файл 1.txt с данными: 123 789 456 733 Нужно из файла переписать данные в...

Бинарный файл структур
Не могу привести код в рабочее состояние.. Есть два бинарных файла, нужно найти данные с первого и...

Бинарный файл структур
// lab_3.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot;...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru