Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include "windows.h"
- using namespace std;
- struct STUDENT
- {
- string name; // Фамилия
- int yearOfBirth; // Год рождения
- double academicPerformance; // Успеваемость (средняя оценка)
- };
- STUDENT * students = NULL; // Указатель на динамический массив структур
- int size = 0; // Размер динамического массива
- int read()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- cout << "Сколько студентов записать? "; // Запрашиваем число записей
- int n = 0;
- string input;
- cin.ignore(32767, '\n'); // Игнорируем последний символ конца строки, если он есть (для корректной работы getline)
- getline(cin, input);
- try
- {
- n = stoi(input);
- }
- catch (const invalid_argument & e) // Введённое значение не может быть конвертировано в int или не является числом
- {
- cerr << "Ошибка: " << e.what() << endl;
- return 1;
- }
- catch (const out_of_range & e) // Переполнение - введённое число больше диапазона допустимых значений
- {
- cerr << "Ошибка: " << e.what() << endl;
- return 1;
- }
- if (n <= 0) // Число записей введено некорректно
- {
- cerr << "Нельзя записать " << n << " студентов! Количество должно быть больше или равно нулю!" << endl;
- return 1;
- }
- clear(); // Очищаем старые данные
- size = n; // Выделяем память под новые
- students = new STUDENT[size];
- for (int i = 0; i < size; ++i) // Осуществляем запись
- {
- cout << "Студент № " << i + 1 << ": " << endl;
- cin.ignore(32767, '\n');
- cout << "Фамилия: "; getline(cin, students[i].name);
- cout << "Год рождения: "; cin >> students[i].yearOfBirth;
- cout << "Успеваемость: "; cin >> students[i].academicPerformance;
- }
- cout << "Данные записаны!" << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement