rendered paste body// -----------------------------------------------------------------------------------------------// Тестовая программа - Работа со структурами// // Среда разработки: Microsoft Visual C++ 2008 / 2010 (ОС Windows 7)// Даты последнего изменения: 01.02.2010// -----------------------------------------------------------------------------------------------#include <iostream>#include <fstream>#include <windows.h>#include <new>using namespace std;const int gnum = 4;const int ssize = 7;int mid(int []);struct Rec {// Структура для хранения данных об учащихся char surname[20]; char name[15]; char secondname[25]; char group[10]; int gr[gnum];};int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); Rec mass[ssize]; // Объявление массива структур int *grades; const char *inputFileName = "c:\\temp\\input.txt"; //Путь к файлу для входного потока const char *outputFileName = "c:\\temp\\output.txt"; //Путь к файлу выходного потока cout << "Добро пожаловать!\n"; //Приветствие ifstream finp(inputFileName); // Входной поток if(!finp) //Проверка открытия файла { cout << "[х] Открытие файла не удалось."; getchar(); exit(1); } else cout << "[о] Файл по адресу \"" << inputFileName << "\" успешно открыт."; for (int i = 0; i < ssize; i++) { finp.getline(mass[i].surname, 20, '\n'); //Читаем их входного потока в массив структур finp.getline(mass[i].name, 15, '\n'); finp.getline(mass[i].secondname, 25, '\n'); finp.getline(mass[i].group, 10, '\n'); for (int j = 0; j < gnum; j++) { finp >> mass[i].gr[j]; } finp.ignore(100, '\n'); } finp.close(); if (!finp.good())//Проверка закрытия файла { cout << "\n[х] Невозможно закрыть файл."; getchar(); exit(1); } else cout << "\n[о] С файлом по адресу \"" << inputFileName << "\" завершены все операции"; for (int i = 0; i < ssize; i++) { cout << endl << mass[i].surname << ' ' << mass[i].name << ' ' << mass[i].secondname << ' ' << mass[i].group; for (int j = 0; j < gnum; j++) cout << ' ' << mass[i].gr[j]; } grades = new(nothrow) int[ssize]; //Размещаем в памяти динамический массив for (int i = 0; i < ssize; i++) { grades[i] = mid(mass[i].gr); // Считаем среднюю оценку } cout << "\nСредняя оценка по учащимся: "; for (int i = 0; i < ssize; i++) { cout << grades[i] << ' '; // Выводим среднюю оценку } ofstream fout(outputFileName); //Поток на выход for (int i = 0; i < ssize; i++) { fout << mass[i].surname << ' ' << grades[i] << endl;// Пишем в файл } fout.close(); if (!fout.good())//Проверка закрытия файла { cout << "\n[х] Невозможно закрыть файл."; getchar(); exit(1); } else cout << "\n[о] С файлом по адресу \"" << outputFileName << "\" завершены все операции"; delete grades; getchar(); getchar(); return 0;}int mid(int arr[gnum]){ int g = 0; for(int i = 0; i < gnum; i++) { g += arr[i]; } g /= gnum; return g;}