Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2013, 20:54   #1
Itess
Новичок
Джуниор
 
Регистрация: 02.06.2013
Сообщений: 1
По умолчанию Переписать массив структур в бинарный файл (С++)

Условие программы:Описать структуру с именем WORKER, содержащую следующие поля:
□ фамилия и инициалы работника;
□ название занимаемой должности;
□ год поступления на работу.
Написать программу, выполняющую следующие действия:
□ ввести данные в массив, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту;
□ вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;
□ если таких работников нет, вывести на дисплей соответствующее сообщение.

1)Первоначально информация хранится в текстовом файле “baza.txt” в виде строк.
Прочитать информацию из файла в массив структур и вывести его на экран.
Выполнить задания вариантов и результат вывести на экран и в текстовый файл “otchet.txt”.
2)Переписать массив структур в бинарный файл “baza.dat”.
Используя функцию позиционирования прочитать 2 по счёту запись и 3 с конца и вывести их на экран и в файл “otchet.txt” (дописать - append).
1 часть:
Код:
#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;}
тут вроде все работает, но как теперь переписать массив в бинарный файл?
Помогите пожалуйста.
Itess вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в бинарный файл структур средствами C++ MooNDeaR Общие вопросы C/C++ 21 06.03.2012 21:20
прочитать, изменить и переписать в новый файл массив. Руслан124 Паскаль, Turbo Pascal, PascalABC.NET 0 17.12.2010 00:00
Массив структур и файл(С++) WarHamster Помощь студентам 2 01.09.2010 13:22
Массив структур+файл Роман_какой-то Общие вопросы C/C++ 4 22.03.2010 20:28
Считывание и запись структур в бинарный файл TheKnyazz Общие вопросы C/C++ 7 10.11.2009 13:47