#include <iostream> #include <fstream> #include <string> #include <cstdlib> #include <cstdio> #include <stdio.h> #include <iomanip> using namespace std; struct StudentRecord { string last_name; int student_id; int grades[4]; }; void addRecord(StudentRecord student, ofstream& fout) { fout << student.last_name << " " << student.student_id << " "; for (int i = 0; i < 4; i++) { fout << student.grades[i] << " "; } fout << endl; } void inputStudentData(StudentRecord& student) { cout << "Введите фамилию студента: "; cin >> student.last_name; cout << "Введите номер зачетной книжки: "; cin >> student.student_id; for (int i = 0; i < 4; i++) { cout << "Оценка " << i + 1 << ": "; cin >> student.grades[i]; } } void readRecord(StudentRecord& student, ifstream& fin) { fin >> student.last_name >> student.student_id; for (int i = 0; i < 4; i++) { fin >> student.grades[i]; } } void printFailingStudents(ifstream& fin) { StudentRecord student; bool found = false; cout << "Список двоечников:" << endl; for (int k = 0; k < 10; k++) { readRecord(student, fin); bool has_failing_grade = false; for (int i = 0; i < 4; i++) { if (student.grades[i] == 2) { has_failing_grade = true; break; } } if (has_failing_grade) { cout << student.last_name << ", номер зачетной книжки: " << student.student_id << " Оценки: " << student.grades[0] << "; " << student.grades[1] << "; " << student.grades[2] << "; " << student.grades[3] << endl; found = true; } } if (!found) { cout << "Двоечников не найдено!" << endl; } } void correctFailingStudent(ifstream& fin, ofstream& fout, int student_id) { StudentRecord student; bool found = false; while (fin >> student.last_name >> student.student_id) { for (int i = 0; i < 4; i++) { fin >> student.grades[i]; } if (student.student_id == student_id) { cout << "Введите новые оценки за экзамены для студента " << student.last_name << ":" << endl; for (int i = 0; i < 4; i++) { cout << "Оценка " << i + 1 << ": "; cin >> student.grades[i]; } addRecord(student, fout); found = true; } else { addRecord(student, fout); } } if (!found) { cout << "Студент с номером зачетной книжки " << student_id << " не найден!" << endl; } } int main() { setlocale(LC_ALL, "Russian"); const string filename = "students.txt"; ofstream fout(filename); if (!fout) { cerr << "Ошибка открытия файла для записи" << endl; return 1; } while (true) { ifstream fin(filename); if (!fin) { cerr << "Ошибка открытия файла для чтения" << endl; return 1; } cout << endl << "Меню:" << endl; cout << "1. Записать данные о студентах" << endl; cout << "2. Ввывести данные о студентах" << endl; cout << "3. Вывести список двоечников" << endl; cout << "4. Изменить оценки двоечника" << endl; cout << "5. Выход" << endl; cout << "Выберите действие: "; int choice; cin >> choice; switch (choice) { case 1: { ofstream fout(filename); if (!fout) { cerr << "Ошибка открытия файла для записи" << endl; return 1; } for (int i = 0; i < 3; i++) { cout << endl << "Введите данные о студенте " << i + 1 << ":" << endl; StudentRecord student; inputStudentData(student); addRecord(student, fout); } fout.close(); cout << "Данные записаны в файл " << filename << endl; break; } case 2: { ifstream fin(filename); if (!fin) { cerr << "Ошибка открытия файла для чтения" << endl; return 1; } cout << "Содержимое файла " << filename << ":" << endl; StudentRecord student; for (int k = 0; k < 10; k++) { readRecord(student, fin); cout << student.last_name << " " << student.student_id << " "; for (int i = 0; i < 4; i++) { cout << student.grades[i] << " "; } cout << endl; } fin.close(); break; } case 3: { ifstream fin(filename); printFailingStudents(fin); break; } case 4: { int student_id; cout << "Введите номер зачетной книжки двоечника: "; cin >> student_id; fin.close(); ifstream fin("students.txt"); ofstream fout("temp.txt"); if (!fout) { cerr << "Ошибка открытия временного файла для записи" << endl; return 1; } correctFailingStudent(fin, fout, student_id); fout.close(); fin.close(); remove("students.txt"); rename("temp.txt", "students.txt"); break; } case 5: { fin.close(); cout << "Выход из программы" << endl; system("pause"); return 0; } default: { cout << "Неверный выбор" << endl; break; } } fin.close(); } return 0; } C #include <iostream> #include <fstream> #include <string> #include <cstdlib> #include <cstdio> #include <stdio.h> #include <iomanip> using namespace std; struct StudentRecord { string last_name; int student_id; int grades[4]; }; void addRecord(StudentRecord student, ofstream& fout) { fout << student.last_name << " " << student.student_id << " "; for (int i = 0; i < 4; i++) { fout << student.grades[i] << " "; } fout << endl; } void inputStudentData(StudentRecord& student) { cout << "Введите фамилию студента: "; cin >> student.last_name; cout << "Введите номер зачетной книжки: "; cin >> student.student_id; for (int i = 0; i < 4; i++) { cout << "Оценка " << i + 1 << ": "; cin >> student.grades[i]; } } void readRecord(StudentRecord& student, ifstream& fin) { fin >> student.last_name >> student.student_id; for (int i = 0; i < 4; i++) { fin >> student.grades[i]; } } void printFailingStudents(ifstream& fin) { StudentRecord student; bool found = false; cout << "Список двоечников:" << endl; for (int k = 0; k < 10; k++) { readRecord(student, fin); bool has_failing_grade = false; for (int i = 0; i < 4; i++) { if (student.grades[i] == 2) { has_failing_grade = true; break; } } if (has_failing_grade) { cout << student.last_name << ", номер зачетной книжки: " << student.student_id << " Оценки: " << student.grades[0] << "; " << student.grades[1] << "; " << student.grades[2] << "; " << student.grades[3] << endl; found = true; } } if (!found) { cout << "Двоечников не найдено!" << endl; } } void correctFailingStudent(ifstream& fin, ofstream& fout, int student_id) { StudentRecord student; bool found = false; while (fin >> student.last_name >> student.student_id) { for (int i = 0; i < 4; i++) { fin >> student.grades[i]; } if (student.student_id == student_id) { cout << "Введите новые оценки за экзамены для студента " << student.last_name << ":" << endl; for (int i = 0; i < 4; i++) { cout << "Оценка " << i + 1 << ": "; cin >> student.grades[i]; } addRecord(student, fout); found = true; } else { addRecord(student, fout); } } if (!found) { cout << "Студент с номером зачетной книжки " << student_id << " не найден!" << endl; } } int main() { setlocale(LC_ALL, "Russian"); const string filename = "students.txt"; ofstream fout(filename); if (!fout) { cerr << "Ошибка открытия файла для записи" << endl; return 1; } while (true) { ifstream fin(filename); if (!fin) { cerr << "Ошибка открытия файла для чтения" << endl; return 1; } cout << endl << "Меню:" << endl; cout << "1. Записать данные о студентах" << endl; cout << "2. Ввывести данные о студентах" << endl; cout << "3. Вывести список двоечников" << endl; cout << "4. Изменить оценки двоечника" << endl; cout << "5. Выход" << endl; cout << "Выберите действие: "; int choice; cin >> choice; switch (choice) { case 1: { ofstream fout(filename); if (!fout) { cerr << "Ошибка открытия файла для записи" << endl; return 1; } for (int i = 0; i < 3; i++) { cout << endl << "Введите данные о студенте " << i + 1 << ":" << endl; StudentRecord student; inputStudentData(student); addRecord(student, fout); } fout.close(); cout << "Данные записаны в файл " << filename << endl; break; } case 2: { ifstream fin(filename); if (!fin) { cerr << "Ошибка открытия файла для чтения" << endl; return 1; } cout << "Содержимое файла " << filename << ":" << endl; StudentRecord student; for (int k = 0; k < 10; k++) { readRecord(student, fin); cout << student.last_name << " " << student.student_id << " "; for (int i = 0; i < 4; i++) { cout << student.grades[i] << " "; } cout << endl; } fin.close(); break; } case 3: { ifstream fin(filename); printFailingStudents(fin); break; } case 4: { int student_id; cout << "Введите номер зачетной книжки двоечника: "; cin >> student_id; fin.close(); ifstream fin("students.txt"); ofstream fout("temp.txt"); if (!fout) { cerr << "Ошибка открытия временного файла для записи" << endl; return 1; } correctFailingStudent(fin, fout, student_id); fout.close(); fin.close(); remove("students.txt"); rename("temp.txt", "students.txt"); break; } case 5: { fin.close(); cout << "Выход из программы" << endl; system("pause"); return 0; } default: { cout << "Неверный выбор" << endl; break; } } fin.close(); } return 0; } В case 4 мне нужно переименовать временный файл temp.txt в основной students.txt, но основной даже не хочет удаляться.
#include <iostream> #include <fstream> #include <string> #include <cstdlib> #include <cstdio> #include <stdio.h> #include <iomanip> #include <windows.h> using namespace std; struct StudentRecord { string last_name; int student_id; int grades[4]; }; void addRecord(StudentRecord student, ofstream& fout) { fout << student.last_name << " " << student.student_id << " "; for (int i = 0; i < 4; i++) { fout << student.grades[i] << " "; } fout << endl; } void inputStudentData(StudentRecord& student) { cout << "Введите фамилию студента: "; cin >> student.last_name; cout << "Введите номер зачетной книжки: "; cin >> student.student_id; for (int i = 0; i < 4; i++) { cout << "Оценка " << i + 1 << ": "; cin >> student.grades[i]; } } void readRecord(StudentRecord& student, ifstream& fin) { fin >> student.last_name >> student.student_id; for (int i = 0; i < 4; i++) { fin >> student.grades[i]; } } void printFailingStudents(ifstream& fin) { StudentRecord student; bool found = false; cout << "Список двоечников:" << endl; for (int k = 0; k < 10; k++) { readRecord(student, fin); bool has_failing_grade = false; for (int i = 0; i < 4; i++) { if (student.grades[i] == 2) { has_failing_grade = true; break; } } if (has_failing_grade) { cout << student.last_name << ", номер зачетной книжки: " << student.student_id << " Оценки: " << student.grades[0] << "; " << student.grades[1] << "; " << student.grades[2] << "; " << student.grades[3] << endl; found = true; } } if (!found) { cout << "Двоечников не найдено!" << endl; } } void correctFailingStudent(ifstream& fin, ofstream& fout, int student_id) { StudentRecord student; bool found = false; while (fin >> student.last_name >> student.student_id) { for (int i = 0; i < 4; i++) { fin >> student.grades[i]; } if (student.student_id == student_id) { cout << "Введите новые оценки за экзамены для студента " << student.last_name << ":" << endl; for (int i = 0; i < 4; i++) { cout << "Оценка " << i + 1 << ": "; cin >> student.grades[i]; } addRecord(student, fout); found = true; } else { addRecord(student, fout); } } if (!found) { cout << "Студент с номером зачетной книжки " << student_id << " не найден!" << endl; } } int main() { setlocale(LC_ALL, "Russian"); const string filename = "students.txt"; ofstream fout(filename); if (!fout) { cerr << "Ошибка открытия файла для записи" << endl; return 1; } while (true) { ifstream fin(filename); if (!fin) { cerr << "Ошибка открытия файла для чтения" << endl; return 1; } cout << endl << "Меню:" << endl; cout << "1. Записать данные о студентах" << endl; cout << "2. Ввывести данные о студентах" << endl; cout << "3. Вывести список двоечников" << endl; cout << "4. Изменить оценки двоечника" << endl; cout << "5. Выход" << endl; cout << "Выберите действие: "; int choice; cin >> choice; switch (choice) { case 1: { ofstream fout(filename); if (!fout) { cerr << "Ошибка открытия файла для записи" << endl; return 1; } for (int i = 0; i < 3; i++) { cout << endl << "Введите данные о студенте " << i + 1 << ":" << endl; StudentRecord student; inputStudentData(student); addRecord(student, fout); } fout.close(); cout << "Данные записаны в файл " << filename << endl; break; } case 2: { ifstream fin(filename); if (!fin) { cerr << "Ошибка открытия файла для чтения" << endl; return 1; } cout << "Содержимое файла " << filename << ":" << endl; StudentRecord student; for (int k = 0; k < 10; k++) { readRecord(student, fin); cout << student.last_name << " " << student.student_id << " "; for (int i = 0; i < 4; i++) { cout << student.grades[i] << " "; } cout << endl; } fin.close(); break; } case 3: { ifstream fin(filename); printFailingStudents(fin); break; } case 4: { int student_id; cout << "Введите номер зачетной книжки двоечника: "; cin >> student_id; fin.close(); ifstream fin("students.txt"); ofstream fout("temp.txt"); if (!fout) { cerr << "Ошибка открытия временного файла для записи" << endl; return 1; } correctFailingStudent(fin, fout, student_id); fout.close(); fin.close(); DeleteFile((LPCWSTR)"students.txt"); rename("temp.txt", "students.txt"); break; } case 5: { fin.close(); cout << "Выход из программы" << endl; system("pause"); return 0; } default: { cout << "Неверный выбор" << endl; break; } } fin.close(); } return 0; } C #include <iostream> #include <fstream> #include <string> #include <cstdlib> #include <cstdio> #include <stdio.h> #include <iomanip> #include <windows.h> using namespace std; struct StudentRecord { string last_name; int student_id; int grades[4]; }; void addRecord(StudentRecord student, ofstream& fout) { fout << student.last_name << " " << student.student_id << " "; for (int i = 0; i < 4; i++) { fout << student.grades[i] << " "; } fout << endl; } void inputStudentData(StudentRecord& student) { cout << "Введите фамилию студента: "; cin >> student.last_name; cout << "Введите номер зачетной книжки: "; cin >> student.student_id; for (int i = 0; i < 4; i++) { cout << "Оценка " << i + 1 << ": "; cin >> student.grades[i]; } } void readRecord(StudentRecord& student, ifstream& fin) { fin >> student.last_name >> student.student_id; for (int i = 0; i < 4; i++) { fin >> student.grades[i]; } } void printFailingStudents(ifstream& fin) { StudentRecord student; bool found = false; cout << "Список двоечников:" << endl; for (int k = 0; k < 10; k++) { readRecord(student, fin); bool has_failing_grade = false; for (int i = 0; i < 4; i++) { if (student.grades[i] == 2) { has_failing_grade = true; break; } } if (has_failing_grade) { cout << student.last_name << ", номер зачетной книжки: " << student.student_id << " Оценки: " << student.grades[0] << "; " << student.grades[1] << "; " << student.grades[2] << "; " << student.grades[3] << endl; found = true; } } if (!found) { cout << "Двоечников не найдено!" << endl; } } void correctFailingStudent(ifstream& fin, ofstream& fout, int student_id) { StudentRecord student; bool found = false; while (fin >> student.last_name >> student.student_id) { for (int i = 0; i < 4; i++) { fin >> student.grades[i]; } if (student.student_id == student_id) { cout << "Введите новые оценки за экзамены для студента " << student.last_name << ":" << endl; for (int i = 0; i < 4; i++) { cout << "Оценка " << i + 1 << ": "; cin >> student.grades[i]; } addRecord(student, fout); found = true; } else { addRecord(student, fout); } } if (!found) { cout << "Студент с номером зачетной книжки " << student_id << " не найден!" << endl; } } int main() { setlocale(LC_ALL, "Russian"); const string filename = "students.txt"; ofstream fout(filename); if (!fout) { cerr << "Ошибка открытия файла для записи" << endl; return 1; } while (true) { ifstream fin(filename); if (!fin) { cerr << "Ошибка открытия файла для чтения" << endl; return 1; } cout << endl << "Меню:" << endl; cout << "1. Записать данные о студентах" << endl; cout << "2. Ввывести данные о студентах" << endl; cout << "3. Вывести список двоечников" << endl; cout << "4. Изменить оценки двоечника" << endl; cout << "5. Выход" << endl; cout << "Выберите действие: "; int choice; cin >> choice; switch (choice) { case 1: { ofstream fout(filename); if (!fout) { cerr << "Ошибка открытия файла для записи" << endl; return 1; } for (int i = 0; i < 3; i++) { cout << endl << "Введите данные о студенте " << i + 1 << ":" << endl; StudentRecord student; inputStudentData(student); addRecord(student, fout); } fout.close(); cout << "Данные записаны в файл " << filename << endl; break; } case 2: { ifstream fin(filename); if (!fin) { cerr << "Ошибка открытия файла для чтения" << endl; return 1; } cout << "Содержимое файла " << filename << ":" << endl; StudentRecord student; for (int k = 0; k < 10; k++) { readRecord(student, fin); cout << student.last_name << " " << student.student_id << " "; for (int i = 0; i < 4; i++) { cout << student.grades[i] << " "; } cout << endl; } fin.close(); break; } case 3: { ifstream fin(filename); printFailingStudents(fin); break; } case 4: { int student_id; cout << "Введите номер зачетной книжки двоечника: "; cin >> student_id; fin.close(); ifstream fin("students.txt"); ofstream fout("temp.txt"); if (!fout) { cerr << "Ошибка открытия временного файла для записи" << endl; return 1; } correctFailingStudent(fin, fout, student_id); fout.close(); fin.close(); DeleteFile((LPCWSTR)"students.txt"); rename("temp.txt", "students.txt"); break; } case 5: { fin.close(); cout << "Выход из программы" << endl; system("pause"); return 0; } default: { cout << "Неверный выбор" << endl; break; } } fin.close(); } return 0; }