Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornaya_Rabota_5_условие.docx
Скачиваний:
2
Добавлен:
12.07.2022
Размер:
45.43 Кб
Скачать

2. Задание № 1

Разработать консольное приложение, котороя:

-считывает из входного файла (in.txt) последовательность целых чисел;

-преобразует считанную последовательность в массив целых значений;

-сортирует по возрастанию полученный массив пузырьковым методом;

-записывает полученную отсортированную последовательность в выходной файл (out.txt).

3. Пример программы на C++ для задания № 2

Задание. Осуществить ввод и вывод данных в файл, состоящий из структур, содержащих следующие поля:

– ФИО студента;

– курс;

– группа;

– оценка по математике;

– оценка по программированию;

– оценка по физике.

Вывести на экран файл структур в виде таблицы следующего вида:

ФИО

Курс

Группа

Матем.

Прог.

Физ.

Ср. балл

Средний балл рассчитать по всем трем оценкам.

Для удобства пользователя организовать вывод на экран меню, где он может выбрать одно из трех действий:

– ввод данных;

– вывод данных;

– выход из программы.

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

#include <fstream>

#include <string>

#include <iomanip>

#include <Windows.h>

#include <iostream>

using namespace std;

//Описание структуры со сведениями о студенте

struct stud {

char fio[30];

int kurs;

char gruppa[10];

int math, prog, fiz;

};

//Функции, используемые в программе

void menu(); // Функция вывода на экран меню

int vvod(); // Функкция ввода данных в файл

int vivod(); // Функция вывода данных из файла

// на экран

void hline(); // Функция прорисовки горизонтальной

// линии

//Основная программа

int main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int num = 0; //Переменная для хранения номера

//пункта меню,

// выбранного пользователем

//Цикл обработки действий пользователя

while (num != 3)

{

menu();

cin >> num;

switch (num) {

case 1: vvod(); break;

case 2: vivod(); break;

case 3: break;

default: cout << "неверный вариант выбора" << endl;

}

}

return 0;

}

//Функция вывода на экран меню

void menu()

{

cout << "\n МЕНЮ\n";

cout << "1. Ввод данных" << endl;

cout << "2. Вывод данных" << endl;

cout << "3. Выход" << endl;

cout << "Введите номер пункта меню для дальнейшей работы" << endl;

}

//Функкция ввода данных в файл

int vvod()

{

stud st; //Структура, использующаяся как буфер

// при записи в файл

//Попытка открытия файла для записи (добавления)

// данных в файл

ofstream f("stud.dat", ios::app|ios::binary);

if (!f)

ofstream f("stud.dat", ios::out|ios::binary);

if (!f)

{

cout << "Ошибка открытия файла" << endl;

return 1;

}

int n;

cout << "Введите количество добавляемых записей = ";

cin >> n;

//Ввод данных для записи в файл

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

{

cout << "Введите ФИО студента" << endl;

while (cin.get()!='\n');

cin.getline(st.fio,30);

cout << "Введите курс" << endl;

cin >> st.kurs;

cout << "Введите группу" << endl;

while (cin.get() != '\n');

cin.getline(st.gruppa,10);

cout << "Введите оценку по математике" << endl;

cin >> st.math;

cout << "Введите оценку по программированию" << endl;

cin >> st.prog;

cout << "Введите оценку по физике" << endl;

cin >> st.fiz;

f.write((char*)&st, sizeof(st));

}

//Завершение работы с файлом

f.close();

return 0;

}

//Функция вывода данных из файла на экран

int vivod()

{

stud st; //Структура, использующаяся как буфер при записи в файл

//Открытие файла для чтения

ifstream f("stud.dat", ios::in | ios::binary);

if (!f)

{

cout << "Ошибка открытия файла" << endl;

return 1;

}

//Вывод шапки таблицы

cout << " Студенты" << endl;

hline();

cout << "| ФИО | Курс | Группа | Матем. | Прог. | Физ. | Ср.балл |" << endl;

hline();

float sr_ball; //Переменная для расчета среднего балла

//Вывод данных из файла в таблицу

while (!f.eof())

{

f.read((char*)&st, sizeof(st)); //Считывание записи из файла

if (!f.eof())

{

sr_ball = (st.fiz + st.math + st.prog) / 3.0;

cout << "| " << setw(20) << st.fio;

cout << " | " << setw(4) << st.kurs;

cout << " | " << setw(8) << st.gruppa;

cout << " | " << setw(6) << st.math;

cout << " | " << setw(5) << st.prog;

cout << " | " << setw(4) << st.fiz;

cout << " | " << setiosflags(ios::fixed) <<

setprecision(2) << setw(8) << sr_ball << " |" << endl;

}

}

//Отчеркивание нижней границы таблицы

hline();

//Завершение работы с файлом

f.close();

return 0;

}

void hline()

{

const int m = 77; //Ширина таблицы в символах

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

cout << "-";

cout << endl;

}