Лабораторная работа по информатике. 10 лаба. Структуры в С
Скачать 474.23 Kb.
|
МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра ФРТ ОТЧЕТ по лабораторной работе № 10 по дисциплине «Информатика» Тема: Структуры в С++ Студент гр. 1106: Иванчин А.В Преподаватель: Чиркунова А. А. Санкт-Петербург 2022 Цель работы Приобретение практических навыков в составлении программ со структурами. Теоретические сведения 1 ПОНЯТИЕ СТРУКТУРЫ Структура в языке C++ представляет собой пользовательский тип данных. Нередко структуры применительно к С++ также называют классами. Для определения структуры применяется ключевое слово struct, а сам формат определения выглядит следующим образом: struct имя_структуры { компоненты_структуры }; Имя_структуры представляет произвольный идентификатор, к которому применяются те же правила, что и при наименовании переменных. После имени структуры в фигурных скобках помещаются компоненты_структуры, которые представляют набор описаний объектов и функций, которые составляют структуру. Все структуры должны быть описаны до использования. Все идентификаторы полей в структуре должны быть различными. 2 ИНИЦИАЛИЗАЦИЯ СТРУКТУРЫ Структура может быть инициализирована путем присвоения ее переменным значения с помощью синтаксиса инициализации. Если в списке инициализаторов не будет одного или нескольких элементов, то им присвоятся значения по умолчанию (как правило 0). Для того чтобы по умолчанию были заданы конкретные значения, их нужно прописать: 3 ДОСТУП К ЧЛЕНАМ СТРУКТУР Для того чтобы получить доступ к отдельным элементам-полям, используется оператор выбора члена (точка). 4 ИСПОЛЬЗОВАНИЕ СТРУКТУР В ФУНКЦИЯХ Структуры можно передавать в функции, а также функции могут возвращать структуры. 5 ВЛОЖЕННЫЕ СТРУКТУРЫ Поле некоторого пользовательского типа может иметь тип, который также является пользовательским. Другими словами, можно создавать вложенные структуры. Коды модулей С++ Упражнение 1. #include using namespace std; struct droby { double ch; double z; }; double multiply( double per , double vtor ) { double um; cout << "результат умножения: " ; um = per * vtor ; cout << um << endl; return ( per , vtor ); } double division( double per , double vtor ) { double del; cout << "результат деление: " ; del = per / vtor ; cout << del << endl; return ( per , vtor ); } double addition( double per , double vtor ) { double slo; cout << "результат сложения: " ; slo = per + vtor ; cout << slo << endl; return ( per , vtor ); } double subtraction( double per , double vtor ) { double raz; cout << "результат вычитания: " ; raz = per - vtor ; cout << raz << endl; return ( per , vtor ); } void main() { droby pervay; droby vtoray; setlocale( LC_ALL , "ru" ); cout << "\tВведите числитель первой дроби:" << endl; cin >> pervay.ch; cout << "\tВведите знаменатель первой дроби:" << endl; cin >> pervay.z; if (pervay.z == 0) { cout << "Знаменатель равен 0" << endl; } cout << "\tВведите числитель второй дроби:" << endl; cin >> vtoray.ch; cout << "\tВведите знаменатель второй дроби:" << endl; cin >> vtoray.z; if (vtoray.z == 0) { cout << "Знаменатель равен 0" << endl; } double per, vtor; per = pervay.ch / pervay.z; // первая дробь vtor = vtoray.ch / vtoray.z; // вторая дробь multiply(per, vtor); division(per, vtor); addition(per, vtor); subtraction(per, vtor); } Упражнение 2. #include #include #include using namespace std; struct student { string name; int group; double ses[4]; }; struct dan { struct student stud1[5]; dan bd; int const N = 5; int MEAN( vector < double >& mean_st ) // Функция, которая вычисляет средний балл { double p=0, mean, mean_all=0; for ( int i = 0; i < N; i++) { for ( int l = 0; l < 4; l++) { p = p + bd.stud1[i].ses[l]; } mean = p / 4; mean_st .push_back(mean); mean_all = mean_st [ i ] + mean_all; cout << "Среднее оценка студента N " << i+1 << endl; cout << mean_st [ i ]<< endl; p = p * 0; } mean_all = mean_all / N; cout << "Средний балл по всем студентам" << endl; cout << mean_all << endl; return (0); } int PrintVedomost() //Функция, которая выводит студентов { for ( int i = 0; i < N; i++) { cout << bd.stud1[i].name; cout << " " ; cout << bd.stud1[i].group; cout << " " ; for ( int j = 0; j < 4; j++) { cout << bd.stud1[i].ses[j]; cout << " " ; } cout << endl; } return (0); } int PrintVedomost4( vector < double >& mean_st ) // Функция, которая ищет студентов с баллом больше 4.00 { cout << "Студенты у которых балл выше 4.00:" << endl; for ( int i = 0; i < N; i++) { if ( mean_st [ i ] > 4.0) { cout << bd.stud1[i].name; cout << bd.stud1[i].group << endl; } } return (0); } int main() { system( "color F0" ); setlocale( LC_ALL , "ru" ); vector < double > mean_st; cout << "Введите данные для студентов " << endl; for ( int i = 0; i < N; i++) { cout << "Введите имя студента " << i+1 << endl; cin >> bd.stud1[i].name; cout << "Введите его номер группы " << endl; cin >> bd.stud1[i].group; cout << "Введите его оценки " << endl; for ( int j = 0; j < 4; j++) { cin >> bd.stud1[i].ses[j]; cout << " " ; } cout << endl; } cout << "\t\t\t\t" << bd.stud1[0].ses[0] << endl; cout << "\t\t\t\t\n\n\n\n" ; PrintVedomost(); cout << "\t\t\t\t\n\n\n\n" ; MEAN(mean_st); PrintVedomost4(mean_st); system( "pause" ); } Упражнение 3. #include #include #include using namespace std; struct room { int nomer, S, N; // S площадь квартиры, N - число комнат }; struct infa { string family; int number_floor; struct room heh; }; struct infa1 { struct infa pap[5]; }; infa1 bd; int const L = 5; int main() { system( "color F0" ); setlocale( LC_ALL , "ru" ); vector < int >mean_st; int mean; for ( int i = 0; i < L; i++) { cout << "Дайте информацию о квартире " << i + 1 << ":" << endl; cout << "Введите фамилию владельца: " << endl; cin >> bd.pap[i].family; cout << "Номер квартиры: " << endl; cin >> bd.pap[i].heh.nomer; cout << "Площадь: " << endl; cin >> bd.pap[i].heh.S; mean = bd.pap[i].heh.S; mean_st.push_back(mean); cout << "Число комнат: " << endl; cin >> bd.pap[i].heh.N; cout << "Этаж: " << endl; cin >> bd.pap[i].number_floor; } int max = mean_st.at(0); int min = mean_st.at(0); for ( int i = 1; i < L; i++) { if (max < mean_st.at(i)) { max = mean_st.at(i); } } for ( int i = 1; i < L; i++) { if (min > mean_st.at(i)) { min = mean_st.at(i); } } for ( int j =0; j < L; j++) { if ( bd.pap[j].heh.S=max) { cout << "Данные о квартире с самой большой площадью" << endl; cout << "Фамилия владельца: " << bd.pap[j].family << endl; cout << "Номер квартиры: " << bd.pap[j].heh.nomer << endl; cout << "Площадь: " << bd.pap[j].heh.S << endl; cout << "Число комнат: " << bd.pap[j].heh.N << endl; cout << "Этаж: " << bd.pap[j].number_floor << endl; } } for ( int i = 0; i < L; i++) { if (bd.pap[i].heh.S=min) { cout << "Данные о квартире с самой маленькой площадью" << endl; cout << "Фамилия владельца: " << bd.pap[i].family << endl; cout << "Номер квартиры: " << bd.pap[i].heh.nomer << endl; cout << "Площадь: " << bd.pap[i].heh.S << endl; cout << "Число комнат: " << bd.pap[i].heh.N << endl; cout << "Этаж: " << bd.pap[i].number_floor << endl; } } } Скриншоты работы программ: Упражнение 1 Упражнение 3 Выводы по проделанной работе Приобретены практические навыки в составлении программ со структурами. |