Sharipov_IVT-114_Laba_5
.docxФГБОУ ВО
Уфимский государственный авиационный технический университет
Кафедра ТК
ОТЧЕТ
по лабораторной работе № 5
по дисциплине «Программирование»
Вариант №19
Выполнил: студент гр. ИВТ-114
Шарипов И.Р.
Проверил: доцент каф. ТК
Федорова Н.И.
Уфа 2017
Тема работы: Структуры. Массивы структур.
Цель работы: Навыки работы со структурами, структурными данными и массивами структур в С++
Задачи работы:
написание программы на языке С++ с использованием структурных данных и массивов структур.
тестирование работоспособности программы для различных исходных данных.
Вариант № 19
Задание: Дан массив записей, содержащий сведения о студентах группы: Фамилия и инициалы студента; дата рождения. Найти и вывести на экран и в выходной файл самого старшего студента, родившегося в k-ый год.
Текст программы:
#include <iostream> #include <cstring> #include <conio.h> #include <windows.h> #include <iomanip> #include <fstream> using namespace std; const int L=31,M=11; struct date { int d, m, y; }; struct student { char name[L]; char group[M] ; date dr; }; struct month { int a[12]; }; void outputMasStud (student *x, int n) { cout«" _____________________________________________________________\n | Фамилия и инициалы | Группа | Дата рождения |\n |______________________________|____________|_______________|"«endl; for (int i=0;i<n;i++) { cout«left«" | "«setw(29)« x[i].name«"|"«setw(12)«x[i].group«"| "«setfill('0')«right«setw(2)« [i].dr.d«"."«setw(2)«x[i].dr.m«"."«left«setw(8)«setfill(' ')«x[i].dr.y«"|"«endl; }
cout«" |______________________________|____________|_______________|\n"; } void outputMasStudFile (student *x, int n) { char file[L]; ofstream fout; cout«"\nВведите имя выходного файла для Массива студентов: "; cin»file; strcat(file,".txt"); fout.open(file);
if (fout.fail()) { cout«" \n Файл "«file«" не может быть открыт\nНажмите любую клавишу, чтобы выйти из программы "; getch(); system ("pause"); } else cout«"Файл вывода был создан успешно\n\n"; fout«"Исходный массив студентов\n"; fout«" _____________________________________________________________\n | Фамилия и инициалы | Группа | Дата рождения |\n |______________________________|____________|_______________|"«endl; for (int i=0;i<n;i++) { fout«left«" | "«setw(29)« x[i].name«"|"«setw(12)«x[i].group«"| "«setfill('0')«right«setw(2)« x[i].dr.d«"."«setw(2)«x[i].dr.m«"."«left«setw(8)«setfill(' ')«x[i].dr.y«"|"«endl; } fout«" |______________________________|____________|_______________|\n"; fout.close(); } void inputMasStudFile(student *x, int n, month &z) { char inic[5]; ifstream fin; cout«"\nВведите имя входного файла: "; char filename[L]; cin»filename; strcat(filename,".txt"); fin.open(filename); if (fin.fail()) { cout«"\n_______________________________________________\nОшибка\n Файл "«filename«" не может быть открыт\nНажмите любую клавишу, чтобы выйти из программы\n_______________________________________________\n"; getch(); system ("exit"); } else cout«"Файл ввода успешно открыт\n"; for (int i=0;i<n;i++) { fin»x[i].name; fin»inic; strcat(x[i].name," "); strcat(x[i].name,inic); fin»x[i].group; fin»x[i].dr.d»x[i].dr.m»x[i].dr.y; switch (x[i].dr.m) { case 1:z.a[0]++;break; case 2:z.a[1]++;break; case 3:z.a[2]++;break; case 4:z.a[3]++;break; case 5:z.a[4]++;break; case 6:z.a[5]++;break;
case 7:z.a[6]++; break; case 8:z.a[7]++;break; case 9:z.a[8]++;break; case 10:z.a[9]++;break; case 11:z.a[10]++;break; case 12:z.a[11]++;break; } } fin.close(); } void outputMonth (month x) { cout«"Количество студентов, родившихся в каждом месяце года"«endl; cout«" ____________________\n | Месяц | Кол-во |\n |_________|________|\n | Январь | "«x.a[0]«" |\n | Февраль | "«x.a[1]«" |\n | Март | "«x.a[2]«" |\n | Апрель | "«x.a[3]«" |\n | Май | "«x.a[4]«" |\n | Июнь | "«x.a[5]«" |\n | Июль | "«x.a[6]«" |\n | Август | "; cout«x.a[7]«" |\n | Сентябрь| "«x.a[8]«" |\n | Октябрь | "«x.a[9]«" |\n | Ноябрь | "«x.a[10]«" |\n | Декабрь | "«x.a[11]«" |\n"; cout«" |_________|________|\n"; } void outputMonthFile (month x) { char file[L]; ofstream fout; cout«"\nВведите имя выходного файла Количества студентов, родившихся в каждом месяце года: "; cin»file; strcat(file,".txt"); fout.open(file); if (fout.fail()) { cout«"\nОшибка\n Файл "«file«" не может быть открыт\nНажмите любую клавишу, чтобы выйти из программы\n"; getch(); system pause"); } else cout«"Файл вывода был создан успешно\n\n"; fout«"Количество студентов, родившихся в каждом месяце года"«endl; fout«" ____________________\n | Месяц | Кол-во |\n |_________|________|\n | Январь | "«x.a[0]«" |\n | Февраль | "«x.a[1]«" |\n | Март | "«x.a[2]«" |\n | Апрель | "«x.a[3]«" |\n | Май | "«x.a[4]«" |\n | Июнь | "«x.a[5]«" |\n | Июль | "«x.a[6]«" |\n | Август | "; fout«x.a[7]«" |\n | Сентябрь| "«x.a[8]«" |\n | Октябрь | "«x.a[9]«" |\n | Ноябрь | "«x.a[10]«" |\n | Декабрь | "«x.a[11]«" |\n"; fout«" |_________|________|\n"; } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); const int N=100; setlocale (LC_ALL,"Russian"); int m; student a[N];
month b; for (int i=0;i<12;i++) b.a[i]=0; cout«"Поиск количества студентов, родившихся в каждом месяце года\n\nВведите количество студентов m\nm = "; cin»m; inputMasStudFile(a,m,b); outputMasStud(a,m); outputMasStudFile(a,m); outputMonth(b); outputMonthFile(b); cout«"Вывод завершен"; getch ( ); return 0; }
Схема алгоритма работы программы:
Тестовый пример:
Вывод: В ходе выполнения работы получены навыки работы со структурами, структурными данными и массивами структур в С++.