Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 3 семестр |1| Вариант №18
- #include "pch.h"
- #include <iostream>
- #include <iomanip>
- #include <string>
- #include <Windows.h>
- #include <cstdlib>
- #include <fstream>
- using namespace std;
- const int N = 100, L = 31, M = 11;
- struct Date {
- int d;
- int m;
- int y;
- };
- struct student {
- char group[10];
- char name[20];
- Date dr;
- };
- void inputMasStudFile(student z[], int &k) {
- int i; char iniz[5], file[L] = ""; k = 0;
- ifstream fin;
- cout << "Имя файла данных ";
- cin >> file;
- fin.open(file);
- if (fin.fail()) {
- cout << file << " не открыт для чтения \n";
- system("PAUSE"); return;
- }
- while (1) {
- fin >> z[k].name >> iniz >> z[k].group >> z[k].dr.d >> z[k].dr.m >> z[k].dr.y;
- if (fin.fail()) break;
- strcat_s(z[k].name, " ");
- strcat_s(z[k].name, iniz);
- k++;
- }
- fin.close();
- cout << "Данные введены из файла\n";
- system("PAUSE");
- }
- void outputMasStud(student z[], int &k) {
- int i;
- cout << " _________________________________________________________________________\n";
- cout << " | | | | Дата рождения |\n";
- cout << " | № | Фамилия и инициалы | Группа |____________________|\n";
- cout << " | | | | день | мес. | год |\n";
- cout << " |_______________________________________________________________________|\n";
- for (i = 0; i < k; i++)
- cout << " | " << setw(2) << i + 1 << " | " << setw(30) << z[i].name << " | " << setw(10) << z[i].group << " | "
- << setw(3) << z[i].dr.d << " | " << setw(3) << z[i].dr.m << " | " << setw(4) << z[i].dr.y << " | \n";
- cout << "_________________________________________________________________________\n";
- system("PAUSE");
- }
- void outputMasStudFile(student z[], int &k) {
- int i; char file[L];
- ofstream fout;
- cout << "Имя выходного файла ";
- cin >> file;
- fout.open(file);
- if (fout.fail()) {
- cout << file << " не открыт для записи \n"; return;
- }
- fout << " _________________________________________________________________________\n";
- fout << " | | | | Дата рождения |\n";
- fout << " | № | Фамилия и инициалы | Группа |____________________|\n";
- fout << " | | | | день | мес. | год |\n";
- fout << " |_______________________________________________________________________|\n";
- for (i = 0; i < k; i++)
- fout << " | " << setw(2) << i + 1 << " | " << setw(30) << z[i].name << " | " << setw(10) << z[i].group << " | "
- << setw(4) << z[i].dr.d << " | " << setw(3) << z[i].dr.m << " | " << setw(4) << z[i].dr.y << " | \n";
- fout << "__________________________________________________________________________\n";
- fout.close();
- cout << "Данные записаны в файл\n";
- system("PAUSE");
- }
- void addStudent(student z[], int &k) {
- student t;
- char iniz[5];
- if (k == N) {
- cout << "Места нет\n";
- system("PAUSE");
- return;
- }
- else {
- cout << "Введите фамилию студента: "; cin >> z[k].name;
- cout << "инициалы: "; cin >> iniz;
- strcat_s(z[k].name, " ");
- strcat_s(z[k].name, iniz);
- cout << "группу: "; cin >> z[k].group;
- cout << "день рождения: "; cin >> z[k].dr.d;
- cout << "месяц: "; cin >> z[k].dr.m;
- cout << "год: "; cin >> z[k].dr.y;
- k++;
- } cout << "Запись добавлена\n";
- system("PAUSE");
- }
- void deleteStudent(student z[], int &k) {
- int i, j;
- char ch;
- outputMasStud(z, k);
- cout << "Номер строки: "; cin >> j;
- j--;
- if (j < 0 || j >= k) {
- cout << "Нет такой строки\n";
- system("PAUSE"); return;
- }
- else cout << j + 1 << "-я строка: " << z[j].name << ' '
- << z[j].group << ' ' << z[j].dr.d
- << ' ' << z[j].dr.m << ' ' << z[j].dr.y << endl;
- cout << "Удалить (y/n) ? "; cin >> ch;
- if (ch == 'n') return;
- if (ch != 'y') {
- cout << "Не понятно \n";
- system("PAUSE"); return;
- }
- for (i = j + 1; i < k; i++) {
- z[i - 1] = z[i];
- } k--;
- cout << "Запись удалена\n";
- system("PAUSE");
- }
- void search(student z[], int k, student u[], int &l)
- {
- l = 0;
- int i, j;
- cout << "Введите день k = "; cin >> j;
- if (j < 1 || j > 31) {
- cout << "День введен неверно\n";
- system("PAUSE"); return;
- }
- for (i = 0; i < k; i++)
- if (z[i].dr.d == j) {
- u[l] = z[i];
- l++;
- }
- if (l == 0) {
- cout << "Рожденных " << j << "-ого числа в списке нет\n";
- system("PAUSE"); return;
- }
- student t = u[0];
- for (i = 1; i < l; i++) {
- if (u[i].dr.m < t.dr.m) t = u[i];
- }
- cout << "Самый молодой студент, родившийся " << j << "-ого числа: \n";
- cout << t.name << ' ' << t.group << ' '
- << t.dr.d << '.' << t.dr.m << '.' << t.dr.y << "\n";
- system("PAUSE");
- }
- void sortDay(student z[], int k) {
- int fl, i;
- student t;
- do {
- fl = 0; k--;
- for (i = 0; i < k; i++)
- if (z[i].dr.d > z[i + 1].dr.d) {
- t = z[i];
- z[i] = z[i + 1];
- z[i + 1] = t;
- fl = 1;
- }
- } while (fl);
- }
- void sortDate(student z[], int k) {
- int fl, i, j;
- student t;
- for (i = k - 1; i > 0; i--)
- for (j = 0; j < i; j++) {
- if (z[j].dr.y > z[j + 1].dr.y) {
- t = z[j];
- z[j] = z[j + 1];
- z[j + 1] = t;
- }
- else if (z[j].dr.y == z[j + 1].dr.y) {
- if (z[j].dr.m > z[j + 1].dr.m) {
- t = z[j];
- z[j] = z[j + 1];
- z[j + 1] = t;
- }
- }
- else if (z[j].dr.m == z[j + 1].dr.m) {
- if (z[j].dr.d > z[j + 1].dr.d) {
- t = z[j];
- z[j] = z[j + 1];
- z[j + 1] = t;
- }
- }
- }
- }
- void sortName(student z[], int k) {
- int fl, i;
- student t;
- do {
- fl = 0; k--;
- for (i = 0; i < k; i++) {
- if (strcmp(z[i].name, z[i + 1].name) > 0) {
- t = z[i];
- z[i] = z[i + 1];
- z[i + 1] = t;
- fl = 1;
- }
- }
- } while (fl);
- }
- void main() {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- int n, m, l, i, j;
- student a[N], b[N];
- while (1) {
- system("cls");
- cout << "1. Ввод данных из файла\n";
- cout << "2. Вывод исходных данных на экран\n";
- cout << "3. Добавить студента\n";
- cout << "4. Удалить студента\n";
- cout << "5. Найти всех студентов родившихся k-ого числа\n";
- cout << "6. Сортировка исходного массива структур по дате рождения в порядке убывания возраста\n";
- cout << "7. Сортировка исходного массива структур по дню рождения в порядке возрастания\n";
- cout << "8. Сортировка выходного массива структур по фамилии и инициалам студента в алфавитном порядке\n";
- cout << "9. Вывод выходного массива структур на экран\n";
- cout << "10. Вывод выходного массива структур в файл\n";
- cout << "11. Вывод исходных данных в файл\n";
- cout << "12. Выход\n";
- cout << "Ваш выбор (1-12): "; cin >> j;
- switch (j) {
- case 1: inputMasStudFile(a, n); break;
- case 2: outputMasStud(a, n); break;
- case 3: addStudent(a, n); break;
- case 4: deleteStudent(a, n); break;
- case 5: search(a, n, b, l); break;
- case 6: sortDate(a, n); break;
- case 7: sortDay(a, n); break;
- case 8: sortName(b, l); break;
- case 9: outputMasStud(b, l); break;
- case 10: outputMasStudFile(b, l); break;
- case 11: outputMasStudFile(a, n); break;
- case 12: cout << "Конец\n"; return; break;
- default: cout << "Нет такого варианта\n"; system("PAUSE");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement