Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба5 2й семестр

.docx
Скачиваний:
4
Добавлен:
15.05.2017
Размер:
59.45 Кб
Скачать

Ст. Новичонок М.С. Гр. ІНФ-15-1

Лабораторная работа №5

Тема: «Потоковые классы язика С++»

Вариант 6

Описать структуру с именем WORKER, содержащую следующие поля:

- фамилия и инициалы работника;

- название занимаемой должности;

- год поступления на работу.

Написать программу, выполняющую следующие действия:

- ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту;

- вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;

- если таких работников нет, вывести на дисплей соответствующее сообщение.

main.cpp

#include "Wor.h"

#include <fstream>

#include <iostream>

#include<iomanip>

using namespace std;

void print(Workers *t, int time);

void main()

{Workers *t = new Workers[3];

int i = 0;

char path[100]; //путь к файлу

std::cout << "Input path: ";

std::cin >> path;

//char k[5];

std::ifstream fin;

fin.open(path); //открываем файл для чтения

if (!fin.is_open()) //проверка открылся ли файл

std::cout << "Path is not correct!\n";

else

{

while (!fin.eof()) //считываем пока не конец

{

fin >> t[i].name; //считываем в временные переменные

fin >> t[i].profession;

fin >> t[i].year;

i++;}

fin.close();

print(t, 5);}}

void print(Workers *t, int time)

{

ofstream fout("res.txt", std::ios::binary); //открываем файл для записи

bool find = false;

for (int i = 0; i < 3; i++)

if (2016- t[i].year > time)

{

cout<<setiosflags(ios::left); // то же что и cout.setf(ios::left);

cout<<setfill('.'); //то же что и cout.fill('.');

cout<<setw(15); // то же что и cout.width(15);

cout<<setiosflags(ios::fixed); //то же что и cout.setf(ios::fixed);

cout<<setiosflags(ios::scientific);// cout.setf(ios::scientific);

cout<<resetiosflags(ios::fixed);// cout.unsetf(ios::scientific);

cout<<setprecision(3);

fout.write(t[i].name.c_str(), sizeof(t[i].name));

fout.write(t[i].profession.c_str(), sizeof(t[i].profession));

fout.write((char*)&t[i].year, sizeof(t[i].year));

find = true;

cout << t[i].name << '\t' << t[i].profession << '\t' << t[i].year << std::endl;

}

else

if ( t[i].year > 2016)

{

cout <<"Wrong!!!!!!!" << '\t' << t[i].name << '\t' << t[i].profession << '\t' <<t[i].year<<" is bigger than 2016" <<endl;

char *c = "Wrong!!!!!";

fout.write((char*)c, sizeof(c));

}

if (!find)

{

char *c = "Worker is not found";

fout.write((char*)c, sizeof(c));

}

fout.close();}

Wor.h

#ifndef _Wor

#define _Wor

#include <time.h>

#include <string>

struct Workers

{

int year;

std::string name;

std::string profession;};

#endif