Сформировать файл “EXAM” по результатам экзаменационной сессии (три экзамена). Информация о студентах вводится в символьном виде в следующем порядке: фамилия **N1**N2**N3, где Ni – это оценка. Используя файл распечатать результаты сессии в виде таблицы .Предусмотреть печать шапки таблицы с названиями дисциплин в С++
Answers & Comments
Ответ:
Пример кода на C++, который создаст файл "EXAM" и распечатает результаты экзаменационной сессии в виде таблицы:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
// создаем файл "EXAM" для записи
ofstream exam_file("EXAM");
// записываем информацию о студентах
exam_file << "Иванов**4**5**3\n";
exam_file << "Петров**3**4**4\n";
exam_file << "Сидоров**5**5**5\n";
// закрываем файл
exam_file.close();
// считываем информацию из файла и выводим результаты
ifstream exam_results("EXAM");
// печать шапки таблицы с названиями дисциплин
cout << "Фамилия\tДисциплина 1\tДисциплина 2\tДисциплина 3\n";
string line;
while (getline(exam_results, line)) {
// извлекаем фамилию и оценки из строки
string surname = line.substr(0, line.find("**"));
line.erase(0, line.find("**") + 2);
int grade1 = stoi(line.substr(0, 1));
int grade2 = stoi(line.substr(1, 1));
int grade3 = stoi(line.substr(2, 1));
// выводим результаты в виде таблицы
cout << surname << "\t" << grade1 << "\t\t" << grade2 << "\t\t" << grade3 << endl;
}
// закрываем файл и завершаем программу
exam_results.close();
return 0;
}
В данном примере предполагается, что информация о студентах уже имеется и записывается в файл "EXAM". После этого, используя поток ifstream, мы считываем информацию из файла и выводим ее в виде таблицы, разделяя фамилию и оценки по табуляции. Первым шагом мы выводим шапку таблицы с названиями дисциплин. Функция substr используется для извлечения значений из строки по определенным индексам, а функция stoi используется для преобразования строки в целочисленный тип.
Объяснение:
можно лучший
Ответ:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
// Відкриваємо файл для читання
ifstream infile("EXAM.txt");
// Відкриваємо файл для запису результатів
ofstream outfile("EXAM_RESULTS.txt");
// Перевірка, чи відкрилися файли успішно
if (!infile.is_open()) {
cout << "Помилка відкриття файлу!" << endl;
return 1;
}
if (!outfile.is_open()) {
cout << "Помилка відкриття файлу!" << endl;
return 1;
}
// Шапка таблиці
outfile << "Результати екзаменів" << endl;
outfile << "-------------------------------------" << endl;
outfile << "| Прізвище | Екзамен 1 | Екзамен 2 | Екзамен 3 |" << endl;
outfile << "-------------------------------------" << endl;
// Читаємо дані з файлу і формуємо таблицю результатів
string line;
while (getline(infile, line)) {
outfile << "| ";
int start_pos = 0, end_pos = 0;
for (int i = 0; i < 3; i++) {
end_pos = start_pos + 3;
string mark = line.substr(start_pos, end_pos - start_pos);
outfile << " " << mark << " | ";
start_pos = end_pos;
}
outfile << endl;
}
outfile << "-------------------------------------" << endl;
// Закриваємо файли
infile.close();
outfile.close();
return 0;
}