Лабораторная работа по "Основам программирования"
Автор: dima03samsonoff • Ноябрь 23, 2022 • Лабораторная работа • 6,623 Слов (27 Страниц) • 174 Просмотры
ПРИЛОЖЕНИЕ
Приложение 1 (текст программы)
#define _CRTDBG_MAP_ALLOC //Включение учета утечек памяти
#define _CRT_SECURE_NO_WARNINGS
#include <clocale>
#include <stdlib.h>
#include <crtdbg.h>
#ifdef _DEBUG
#ifndef DBG_NEW
#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
#define newDBG_NEW
#endif
#endif
#include <iostream>
#include <iomanip>
#include <cctype>
#include <string>
#include <cstring>
#include <windows.h>
#include <fstream>
#include <vector>
#include <regex> //регулярные выражения
using namespace std;
vector<int> str_to_vec(string n) {//перевод из строки в вектор
vector<int> out;//вектор который хранит вектор значений
for (int i = 0; i < n.size(); i++) {
out.push_back(n[i] - '0');//заносим в вектор наши числа
}
return out;
}
bool check_length(string n, int length) //Проверка на длину
{
if (n.length() > length || n.length() == 0)
{
cout << "Длина строки должна быть меньше " << length << " символов и больше нуля!" << endl;
return false;
}
return true;
}
string vec_to_string(vector<int> arr) {//перевод из вектора в строку
string out;//вектор который хранит результат
for (int i = 0; i < arr.size(); i++)
out += arr[i] + '0';//заносим в строку числа из вектора
return out;
}
int get_num() {//ввод целого числа с проверкой ввода
int num;
do {
cin >> num;
if (cin.fail()) {
cout << "Неккоретный ввод числа. Повторите ввод\n";
cin.clear();
cin.ignore(cin.rdbuf()->in_avail());
}
else
break;
} while (true);
return num;
}
struct Student {//структура данных
string name;//имя студента
string group;//группа студента
vector<int> marks;//массив оценок студента
Student(string Name, string Group, vector<int> Marks) {//конструктор структуры
name = Name;
group = Group;
marks = Marks;
}
Student(const Student& s) {
name = s.name;
group = s.group;
marks = s.marks;
}
int sum_marks() {//посчитать сумму всех оценок
int res = 0;
for (int i = 0; i < marks.size(); i++)//суммируем все оценки
res += marks[i];
return res;
}
bool operator==(Student* s) {//функция сравнения двух структур
if (name == s->name && group == s->group) {//сравниваем имя и группу студентов
return true;
}
return false;
}
friend ostream& operator<<(ostream& out, Student* stud) {//функция вывода данных структуры //перегрузка оператора вывода
cout << "| " << setw(13) << stud->name << " | " << setw(14) << stud->group << " | "
<< setw(14) << vec_to_string(stud->marks) << " |" << endl;
...