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

лб 5

.docx
Скачиваний:
3
Добавлен:
07.01.2022
Размер:
156.67 Кб
Скачать

ФГБОУ ВО

Уфимский государственный авиационный технический университет

Кафедра ТК

ОТЧЕТ

по лабораторной работе № 5

по дисциплине «Программирование»

Вариант № 18

Выполнил: студент гр. ИВТ-114

Балыбердин Н. А.

Проверил: доцент каф. ТК

Федорова Н. И.

Уфа 2017

Тема работы: Файловые потоки.

Цель работы: Навыки работы с файловыми потоками в С++.

Задачи работы:

  • написание программы на языке С++ с использованием файловых потоков;

  • тестирование работоспособности программы для различных исходных данных.

Вариант № 18

Задание:

Дан массив записей, содержащий сведения о студентах: фамилия, инициалы группа, дата рождения. Упорядочить, вывести на экран список студентов и найти самого молодого студента из списка.

Текст программы:

#include <iostream>

#include <cstring>

#include <conio.h>

#include <windows.h>

#include <iomanip>

#include <locale.h>

#include <clocale>

#include <fstream>

using namespace std;

const int L = 31, M = 11, N = 100, Q = 5;

struct date

{

int d;

int m;

int y;

};

struct student

{

char name[L];

char inic[Q];

char group[M];

date dr;

};

void inputMasStudFile(student *x, int &n)

{

ifstream fin;

char file[N];

cout << "Имя входного файла: ";

cin >> file;

int nn = 0;

fin.open(file);

if (fin.fail())

{

cout << " Файл: " << file << " не открыт.";

return;

}

while (1)

{

fin >> x[n].name >> x[n].inic >> x[n].group >> x[n].dr.d >> x[n].dr.m >> x[n].dr.y;

if (fin.fail())

break;

n++;

}

cout << "Файл введен";

getch();

fin.close();

}

void outputMasStudfile(student *x, int &m)

{

ofstream fout;

int i;

char file[N];

cout << "\nИмя выходного файла: ";

cin >> file;

fout.open(file);

if (fout.fail())

{

cout << "Файл не создан.";

_getch();

return;

}

fout << endl;

fout << " ___________________________________________________________\n | Фамилия и инициалы | Группа | Дата рождения |\n |______________________________|____________|_______________|" << endl;

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

{

strcat(x[i].name, " ");

strcat(x[i].name, x[i].inic);

fout << left << " | " << setw(29) << x[i].name << "|" << setw(12) << x[i].group << "| " << right << setfill('0') << setw(2) << x[i].dr.d << "." << setw(2) << x[i].dr.m << "." << left << setw(8) << setfill(' ') << x[i].dr.y << "|\n";

}

fout << " |______________________________|____________|_______________|" << endl;

cout << "Данные записаны в файл.";

fout.close();

getch();

}

void outputMasStud(student *x, int m)

{

int i;

cout << endl;

cout << " ___________________________________________________________\n | Фамилия и инициалы | Группа | Дата рождения |\n |______________________________|____________|_______________|" << endl;

for (i = 0; i<m; i++)

{

strcat(x[i].name, " ");

strcat(x[i].name, x[i].inic);

cout << left << " | " << setw(29) << x[i].name << "|" << setw(12) << x[i].group << "| " << right << setfill('0') << setw(2) << x[i].dr.d << "." << setw(2) << x[i].dr.m << "." << left << setw(8) << setfill(' ') << x[i].dr.y << "|\n";

}

cout << " |______________________________|____________|_______________|" << endl;

getch();

}

void sortMasStud(student *x, student *y, int &m)

{

int i, g, *sort;

for (i = 0; i < m - 1; i++)

{

for (g = i + 1; g < m; g++)

{

if (x[i].dr.y<x[g].dr.y ||

x[i].dr.y == x[g].dr.y &&

x[i].dr.m<x[g].dr.m ||

x[i].dr.y == x[g].dr.y &&

x[i].dr.m == x[g].dr.m &&

x[i].dr.d<x[g].dr.d)

{

y[1] = x[i];

x[i] = x[g];

x[g] = y[1];

}

}

}

}

void main()

{

setlocale(LC_ALL, "Russian");

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

cout << "Сортировка массива студентов в порядке увеличения возраста." << endl;

student a[N], b[N], sort[N];

int i, h;

cout << endl;

cout << "Ввод исходного массива студентов:\n";

inputMasStudFile(a, h);

cout << endl << "\nИсходный массив студентов: " << endl;

outputMasStud(a, h);

sortMasStud(a, sort, h);

int f = 0;

while (2)

{

system("cls");

cout << "\nЖелаете вывести результат на экран или записать в файл?";

cout << "\n1. Вывести отсортированный массив студентов на экран";

cout << "\n2. Записать отсортированный массив студентов в файл";

cout << "\nВаш выбор: ";

cin >> f;

switch(f)

{

case 1: outputMasStud(a, h); break;

case 2: outputMasStudfile(a, h); break;

}

}

getch();

}

Схема алгоритма работы программы:

Пример работы программы:

Вывод: В ходе выполнения работы получены навыки работы с файловыми потоками в С++.

Соседние файлы в предмете Программирование