Содержание
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Цель лабораторной работы
Разработка программ на языке С++ с использованием структур.
Задание №1
Варианты заданий
№ | Условие |
1 | Определить комбинированный (структурный) тип для представления анкеты ребенка, состоящей из его имени, пола и роста. Ввести информацию по $20$ детям. Вывести средний рост мальчиков. |
2 | Составить программу, выводящую на экран ведомость начисленной заработной платы (Ф.И.О., должность, год и дата рождения, заработная плата). Найти среднюю зарплату. И вывести фамилии с зарплатой выше средней. |
3 | Определить комбинированный (структурный) тип для представления информации по горным вершинам, состоящей из названия вершины и ее высоты. Ввести информацию по $20$ вершинам. Вывести среднее значение высот всех $20$ вершин. Далее вывести названия всех вершин ниже среднего. |
4 | Составить программу, выводящую на экран ведомость начисленной заработной платы (Ф.И.О., должность, года и дата рождения, заработная плата). Вывести фамилию сотрудника с самой маленькой зарплатой. |
5 | Составить программу, выводящую на экран ведомость начисленной заработной платы (Ф.И.О., должность, года и дата рождения, заработная плата). Вывести фамилию сотрудника с самой большой зарплатой. |
6 | Определить комбинированный (структурный) тип для представления анкеты ребенка, состоящей из его имени, пола и роста. Ввести информацию по 20 детям. Вывести имя самой высокой девочки. |
7 | Определить комбинированный (структурный) тип для представления информации по горным вершинам, состоящей из названия вершины и ее высоты. Ввести информацию по $50$ вершинам. Вывести название самой низкой вершины из всех $50$. |
8 | Определить комбинированный (структурный) тип для представления анкеты ребенка, состоящей из его имени, пола и роста. Ввести информацию по 20 детям. Вывести средний рост девочек. |
9 | Определить комбинированный (структурный) тип для представления информации по горным вершинам, состоящей из названия вершины и ее высоты. Ввести информацию по $20$ вершинам. Вывести среднее значение высот всех $20$ вершин. Далее вывести названия всех вершин выше среднего. |
10 | Определить комбинированный (структурный) тип для представления анкеты ребенка, состоящей из его имени, пола и роста. Ввести информацию по $20$ детям. Вывести средний рост всех детей. |
11 | Определить комбинированный (структурный) тип для представления информации по горным вершинам, состоящей из названия вершины и ее высоты. Ввести информацию по $10$ вершинам. Вывести название самой высокой вершины из всех $10$. |
12 | Определить комбинированный (структурный) тип для представления анкеты ребенка, состоящей из его имени, пола и роста. Ввести информацию по $20$ детям. Вывести средний рост девочек. Далее вывести имена всех девочек выше среднего. |
13 | Определить комбинированный (структурный) тип для представления информации по горным вершинам, состоящей из названия вершины и ее высоты. Ввести информацию по $20$ вершинам. Вывести среднее значение высот всех $20$. |
14 | Определить комбинированный (структурный) тип для представления анкеты ребенка, состоящей из его имени, пола и роста. Ввести информацию по $20$ детям. Вывести имя самого высокого мальчика. Вывести средний рост мальчиков. Далее вывести имена всех мальчиков ниже среднего. |
15 | Составить программу, выводящую на экран ведомость начисленной заработной платы (Ф.И.О., должность, год и дата рождения, заработная плата). Вывести все фамилии, начинающиеся на букву $<A>$ и их зарплату. |
16 | Составить программу, выводящую на экран ведомость начисленной заработной платы (Ф.И.О., должность, год и дата рождения, заработная плата). Вывести дату рождения сотрудника с самой маленькой зарплатой. |
Образец выполнения (вариант №10)
Условие задачи
Определить комбинированный (структурный) тип для представления анкеты ребенка, состоящей из его имени, пола и роста. Ввести информацию по $20$ детям. Вывести средний рост всех детей.
Реализация задачи на языке С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | #include <iostream> // для консольного ввода-вывода #include <string> // для переменных типа данных string #include <Windows.h> // для кодировок (поддержка кирилицы) #include <iomanip> // для форматированного вывода // подключаем стандартное пространство имен using namespace std; // определяем структуру "Ребенок" typedef struct TChild { string name; // имя ребенка char sex; // пол ребенка (М - мужской; Ж - женский) int height; // рост ребенка } Child; // вывод информации обо всех детях на экран в табличном формате void Print_children( Child* children, const int children_count ) { cout << endl << "Информация о детях(" << children_count << " чел.) имеет вид:" << endl; SetConsoleCP( 866 ); cout << "--------------------------------------------------------" << endl; cout << " № Имя Пол Рост, мм" << endl; cout << "--------------------------------------------------------" << endl; for( int i = 0; i < children_count; i++ ) { cout << setw(6) << ( i + 1 ) << "\t"; cout << setw(17) << children[ i ].name << "\t"; cout << setw(4) << children[ i ].sex << "\t"; cout << setw(12) << children[ i ].height << endl; } cout << "--------------------------------------------------------" << endl; } // получение среднего роста всех детей double Get_average_height( Child* children, const int children_count ) { // отвечает за среднее значение возраста всех детей double average = 0; // перебираем всех детей for( int i = 0; i < children_count; i++ ) average += children[ i ].height; // добавляем возраст текущего ребенка к результату // чтобы получить среднее значение, надо сумму разделить на количество return ( average / ( children_count * 1.0 ) ); } // главная функция программы (точка входа) int main ( void ) { // русификация всех диалогов программы setlocale( LC_ALL, "Russian" ); // отвечает за количество детей const size_t CHILDREN_COUNT = 20; // хранит информацию о 20 детях Child children[ CHILDREN_COUNT ]; // запрашиваем от пользователя ввод информации о 20 детях cout << "Вам предстоит ввести информацию о " << CHILDREN_COUNT << " детях." << endl; for( int i = 0; i < CHILDREN_COUNT; i++ ) { fflush( stdin ); cout << "\t Ввод информации о ребенке № " << ( i + 1 ) << endl; cout << "\t\t - введите имя: "; SetConsoleCP( 1251 ); getline( cin, children[ i ].name ); SetConsoleCP( 866 ); cout << "\t\t - введите пол (М - мужской, Ж - женский): "; SetConsoleCP( 1251 ); cin >> children[ i ].sex; SetConsoleCP( 866 ); cout << "\t\t - введите рост (натуральное число), мм: "; cin >> children[ i ].height; cout << endl; } // выводим информацию о детях на экран в красивом табличном формате Print_children( children, CHILDREN_COUNT ); // выводим средний рост всех детей cout << "Средний возраст всех детей: " << setprecision(3) << fixed << Get_average_height( children, CHILDREN_COUNT ) << endl << endl; // задержка работы программы, чтобы у пользователя была возможность просмотреть результат fflush( stdin ); system("pause"); // завершение выполнение программы и передача управления в ОС (код 0 - все прошло успешно!) return 0; } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Задание №2
Варианты заданий
№ | Условие |
1 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести координаты центра окружности, чей радиус самый большой. |
2 | Определить комбинированный (структурный) тип для представления анкеты жителя, состоящей из его фамилии, названия города, где он проживает, и городского адреса. Адрес состоит из полей: «улица», «дом», «квартира». Ввести информацию по $100$ жителям. Вывести фамилии двух любых жителей, которые «По Иронии Судьбы» живут в разных городах, но по одинаковому адресу. |
3 | Определить комбинированный (структурный) тип для представления анкеты студента, состоящей из его фамилии, дня рождения и пола. «День рождения» состоит из полей: «число», «месяц», «год». Ввести информацию по $25$ студентам из группы. Вывести фамилию самого старшего мальчика из группы. |
4 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести координаты центра окружности, чей радиус самый маленький. |
5 | Определить комбинированный (структурный) тип для представления анкеты жителя, состоящей из его фамилии, названия города, где он проживает, и городского адреса. Адрес состоит из полей: «улица», «дом», «квартира». Ввести информацию по $100$ жителям. Вывести фамилии жителей, которые живут в одном городе с первым жителем из списка. |
6 | Определить комбинированный (структурный) тип для представления анкеты студента, состоящей из его фамилии, дня рождения и пола. «День рождения» состоит из полей: «число», «месяц», «год». Ввести информацию по $25$ студентам из группы. Вывести все фамилии девочек, родившихся в декабре. |
7 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести радиус окружности, чей центр самый удаленный от начала координат. |
8 | Определить комбинированный (структурный) тип для представления анкеты жителя, состоящей из его фамилии, названия города, где он проживает, и городского адреса. Адрес состоит из полей: «улица», «дом», «квартира». Ввести информацию по $100$ жителям. Вывести фамилии жителей, которые живут в Ростове-на-Дону на улице Ленина. |
9 | Определить комбинированный (структурный) тип для представления анкеты студента, состоящей из его фамилии, дня рождения и пола. «День рождения» состоит из полей: «число», «месяц», «год». Ввести информацию по $25$ студентам из группы. Вывести все фамилии мальчиков, родившихся в мае 1986 года. |
10 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести величину среднего радиуса всех окружностей. Далее вывести координаты центра окружностей чей радиус выше среднего. |
11 | Определить комбинированный (структурный) тип для представления анкеты жителя, состоящей из его фамилии, названия города, где он проживает, и городского адреса. Адрес состоит из полей: «улица», «дом», «квартира». Ввести информацию по $100$ жителям. Вывести фамилии жителей, которые живут в Воронеже на улице Лизюкова. |
12 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести радиус окружности, чей центр самый удаленный от оси $OY$ (оси ординат). |
13 | Определить комбинированный (структурный) тип для представления студенческой ведомости состоящей из $2$х полей: Ф.И.О. и оценка. В свою очередь поле оценка состоит из $4$ элементов: оценка за математику, оценка за физику, оценка за информатику и средний балл. Составить программу, позволяющую вводить студенческую ведомость (без среднего балла). Далее найти для каждого студента средний балл. Вывести фамилии отличников по математике. |
14 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести радиус окружности, чей центр расположен ближе всего к оси $OY$ (оси ординат). |
15 | Определить комбинированный (структурный) тип для представления анкеты студента, состоящей из его фамилии, дня рождения и пола. «День рождения» состоит из полей: «число», «месяц», «год». Ввести информацию по $25$ студентам из группы. Вывести все фамилии девочек, родившихся в марте 1991 года. |
16 | Определить комбинированный (структурный) тип для представления информации о кости домино, состоящей из левой половинки и правой половинки. Поля «левая» и «правая» половинки хранят информацию о количестве точек на половинках. Описать массив из $28$ элементов (кости домино). Заполнить массив случайными числами или ввести с клавиатуры. Определить, правильно ли выставлены кости в данном массиве (равна ли правая цифра очередной кости левой цифре следующей кости). |
Образец выполнения (вариант №7)
Условие задачи
Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести радиус окружности, чей центр самый удаленный от начала координат.
Реализация задачи на языке С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | #include <iostream> // для консольного ввода-вывода #include <iomanip> // для форматированного вывода // подключаем стандартное пространство имен using namespace std; // определяем структуру "Центр окружности" typedef struct TCenter { int x; // координата абсциссы центра int y; // координата ординаты центра } Center; // определяем структуру "Окружность" typedef struct TCircle { int r; // радиус окружности Center center; // координаты центра окружности } Circle; // вывод информации обо всех окружностях на экран в табличном формате void Print_circles( const Circle* const circles, const int circles_count ) { cout << endl << "Информация об окружностях (" << circles_count << " шт.) имеет вид:" << endl; cout << "-----------------------------------------------" << endl; cout << " № Радиус Центр " << endl; cout << "-----------------------------------------------" << endl; for( int i = 0; i < circles_count; i++ ) { cout << setw(6) << ( i + 1 ); cout << setw(19) << circles[ i ].r; cout << setw(12) << "{" << circles[ i ].center.x << "; " << circles[ i ].center.y << "}"; cout << endl; } cout << "-----------------------------------------------" << endl; } // вспомогательная функция, находящая расстояние от центра заданной окружности до начала координат // по факту рассчитываем расстояние между 2мя точками на плоскости double Get_distance( const Center center ) { return ( sqrt( pow( center.x, 2.0 ) + pow ( center.y, 2.0 ) ) ); } // находим индекс окружности, чей центр самый удаленный от начала координат int Get_index_circle ( const Circle* const circles, const int circles_count ) { // изначально предполагаем, что самая 1ая окружность имеет самый удаленный центр от начала координат int index_circle = 0; // просматриваем все окружности // если центр текущей окружности удаленнее, чем центр окружности с индексом index_circle // запоминаем индекс новой окружности (с самым удаленным центром) for ( int i = 1; i < circles_count; i++ ) if ( Get_distance ( circles[ i ].center ) > Get_distance ( circles[ index_circle ].center ) ) index_circle = i; // в качестве ответа возвращаем индекс окружности, чей центр самый удаленный от начала координат return index_circle; } // главная функция программы (точка входа) int main ( void ) { // русификация всех диалогов программы setlocale( LC_ALL, "Russian" ); // отвечает за количество окружностей const size_t CIRCLES_COUNT = 10; // хранит информацию о CIRCLES_COUNT окружностях Circle circles[ CIRCLES_COUNT ]; // запрашиваем от пользователя ввод информации о CIRCLES_COUNT окружностях cout << "Вам предстоит ввести информацию о " << CIRCLES_COUNT << " окружностях." << endl; for( int i = 0; i < CIRCLES_COUNT; i++ ) { fflush( stdin ); cout << "\t Ввод информации об окружносте № " << ( i + 1 ) << endl; cout << "\t\t - введите радиус: "; cin >> circles[ i ].r; cout << "\t\t - введите координаты центра (2 целых числа через пробел): "; cin >> circles[ i ].center.x >> circles[ i ].center.y; cout << endl; } // выводим информацию об окружностях на экран в красивом табличном формате Print_circles( circles, CIRCLES_COUNT ); // получаем индекс окружности, чей центр самый удаленный от начала координат int index_circle = Get_index_circle( circles, CIRCLES_COUNT ); // выводим на экран номер окружности и радиус cout << endl << "Окружность №" << ( index_circle + 1 ) << " с радиусом = " << circles[ index_circle ].r << " максимально удалена от начала координат." << endl; // задержка работы программы, чтобы у пользователя была возможность просмотреть результат fflush( stdin ); system("pause"); // завершение выполнение программы и передача управления в ОС (код 0 - все прошло успешно!) return 0; } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Задание №3
Варианты заданий
№ | Условие |
1 | Определить комбинированный (структурный) тип для представления анкеты жителя, состоящей из его фамилии, названия города, где он проживает, и городского адреса. Адрес состоит из полей: «улица», «дом», «квартира». Ввести информацию по $10$ жителям. Переписать из исходного массива в другой массив, информацию только о тех жителях, которые живут в Москве. |
2 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Переписать из исходного массива в другой массив, информацию только о тех окружностях, центр которых лежит в $1$-ой четверти |
3 | Определить комбинированный (структурный) тип для представления анкеты студента, состоящей из его фамилии, дня рождения и пола. «День рождения» состоит из полей: «число», «месяц», «год». Ввести информацию по $25$ студентам из группы. Переписать из исходного массива в другой массив, информацию только о тех студентах, которые родились в указанном году (указанный год вводит пользователь с клавиатуры). |
4 | Определить комбинированный (структурный) тип для представления анкеты жителя, состоящей из его фамилии, названия города, где он проживает, и городского адреса. Адрес состоит из полей: «улица», «дом», «квартира». Ввести информацию по $10$ жителям. Переписать из исходного массива в другой массив, информацию только о тех жителях, фамилия которых начинается на указанную букву (указанную букву вводит пользователь с клавиатуры). |
5 | Определить комбинированный (структурный) тип для представления студенческой ведомости состоящей из $2$х полей: Ф.И.О. и оценка. В свою очередь поле оценка состоит из $4$ элементов: оценка за математику, оценка за физику, оценка за информатику и средний балл. Составить программу, позволяющую вводить студенческую ведомость (без среднего балла). Переписать из исходного массива в другой массив, информацию только о студентах-незадолжниках (у которых нет ни одной двойки). |
6 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Переписать из исходного массива в другой массив, информацию только о тех окружностях, радиус которых больше $1$. |
7 | Определить комбинированный (структурный) тип для представления анкеты студента, состоящей из его фамилии, дня рождения и пола. «День рождения» состоит из полей: «число», «месяц», «год». Ввести информацию по $25$ студентам из группы. Переписать из исходного массива в другой массив, информацию только о тех студентах, фамилия которых начинается на указанную букву (указанную букву вводит пользователь с клавиатуры). |
8 | Определить комбинированный (структурный) тип для представления анкеты жителя, состоящей из его фамилии, названия города, где он проживает, и городского адреса. Адрес состоит из полей: «улица», «дом», «квартира». Ввести информацию по $100$ жителям. Переписать из исходного массива в другой массив, информацию только о тех жителях, которые живут в Ростове-на-Дону на улице Ленина. |
9 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Переписать из исходного массива в другой массив, информацию только о тех окружностях, центр которых лежит в $3$-ой четверти. |
10 | Определить комбинированный (структурный) тип для представления анкеты студента, состоящей из его фамилии, дня рождения и пола. «День рождения» состоит из полей: «число», «месяц», «год». Ввести информацию по $25$ студентам из группы. Переписать из исходного массива в другой массив, информацию только о тех студентах, которые родились в мае $1986$ года и являются мальчиками. |
11 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести величину среднего радиуса всех окружностей. Переписать из исходного массива в другой массив, информацию только о тех окружностях, радиус которых меньше $1$. |
12 | Определить комбинированный (структурный) тип для представления анкеты жителя, состоящей из его фамилии, названия города, где он проживает, и городского адреса. Адрес состоит из полей: «улица», «дом», «квартира». Ввести информацию по $100$ жителям. Переписать из исходного массива в другой массив, информацию только о тех жителях, которые живут в Воронеже на улице Лизюкова. |
13 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Переписать из исходного массива в другой массив, информацию только о тех окружностях, центр которых лежит выше оси $OX$. |
14 | Определить комбинированный (структурный) тип для представления анкеты студента, состоящей из его фамилии, дня рождения и пола. «День рождения» состоит из полей: «число», «месяц», «год». Ввести информацию по $25$ студентам из группы. Переписать из исходного массива в другой массив, информацию только о тех студентах, которые родились в марте $1991$ года и являются девочками. |
15 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Переписать из исходного массива в другой массив, информацию только о тех окружностях, центр которых лежит ниже оси $OX$. |
Образец выполнения (вариант №2)
Условие задачи
Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Переписать из исходного массива в другой массив, информацию только о тех окружностях, центр которых лежит в $1$-ой четверти
Реализация задачи на языке С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | #include <iostream> // для консольного ввода-вывода #include <iomanip> // для форматированного вывода #include <string> // для работы с типом данных string // подключаем стандартное пространство имен using namespace std; // определяем структуру "Центр окружности" typedef struct TCenter { int x; // координата абсциссы центра int y; // координата ординаты центра } Center; // определяем структуру "Окружность" typedef struct TCircle { int r; // радиус окружности Center center; // координаты центра окружности } Circle; // вывод информации о заданных окружностях на экран в табличном формате void Print_circles( const Circle* const circles, const int circles_count, const string message ) { cout << endl << message << circles_count << " шт.) имеет вид:" << endl; cout << "-----------------------------------------------" << endl; cout << " № Радиус Центр " << endl; cout << "-----------------------------------------------" << endl; for( int i = 0; i < circles_count; i++ ) { cout << setw(6) << ( i + 1 ); cout << setw(19) << circles[ i ].r; cout << setw(12) << "{" << circles[ i ].center.x << "; " << circles[ i ].center.y << "}"; cout << endl; } cout << "-----------------------------------------------" << endl; } // получение количества окружностей, чей центр лежит в 1ой четверти int Get_circles_count_from_1_quarter ( const Circle* const circles, const int circles_count ) { int count = 0; for ( int i = 0; i < circles_count; i++ ) // проверка, что центр лежит в 1ой четверти if ( ( circles[ i ].center.x > 0 ) && ( circles[ i ].center.y > 0 ) ) count++; return count; } // формирование массива из окружностей, чей центр лежит в 1ой четверти Circle* Get_circles_from_1_quarter ( const Circle* const circles, const int circles_count, const int circles_from_1_count ) { Circle* circles_from_1 = new Circle[ circles_from_1_count ]; int index = 0; for ( int i = 0; i < circles_count; i++ ) // проверка, что центр лежит в 1ой четверти if ( ( circles[ i ].center.x > 0 ) && ( circles[ i ].center.y > 0 ) ) { circles_from_1[ index ] = circles[ i ]; index++; } return circles_from_1; } // главная функция программы (точка входа) int main ( void ) { // русификация всех диалогов программы setlocale( LC_ALL, "Russian" ); // отвечает за количество окружностей const size_t CIRCLES_COUNT = 10; // хранит информацию о CIRCLES_COUNT окружностях Circle circles[ CIRCLES_COUNT ]; // запрашиваем от пользователя ввод информации о CIRCLES_COUNT окружностях cout << "Вам предстоит ввести информацию о " << CIRCLES_COUNT << " окружностях." << endl; for( int i = 0; i < CIRCLES_COUNT; i++ ) { fflush( stdin ); cout << "\t Ввод информации об окружносте № " << ( i + 1 ) << endl; cout << "\t\t - введите радиус: "; cin >> circles[ i ].r; cout << "\t\t - введите координаты центра (2 целых числа через пробел): "; cin >> circles[ i ].center.x >> circles[ i ].center.y; cout << endl; } // выводим информацию об окружностях на экран в красивом табличном формате Print_circles( circles, CIRCLES_COUNT, "Информация обо всех окружностях (" ); // узнаем количество окружностей, чей центр лежит в 1ой четверти int circles_count_from_1 = Get_circles_count_from_1_quarter( circles, CIRCLES_COUNT ); if ( circles_count_from_1 == 0 ) cout << "Среди заданных окружностей нет ни одной, чей центр лежит в 1-ой четверти." << endl; else { // формируем новый массив окружностей, чей центр лежит в 1ой четверти Circle* circles_from_1 = Get_circles_from_1_quarter( circles, CIRCLES_COUNT, circles_count_from_1 ); // выводим на экран информацию о полученных окружностях Print_circles( circles_from_1, circles_count_from_1, "Информация об окружностях, чей центр лежит в 1-ой четверти (" ); // удаляем из памяти информацию об окружностях, чей центр лежит в 1ой четверти delete []circles_from_1; } // задержка работы программы, чтобы у пользователя была возможность просмотреть результат cout << endl; fflush( stdin ); system("pause"); // завершение выполнение программы и передача управления в ОС (код 0 - все прошло успешно!) return 0; } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Задание №4
Варианты заданий
💡 В коде программы рационально переставлять все поля структуры разом.
№ | Условие |
1 | Определить структурный тип, описывающий гостиничный номер (название гостиницы, номер, комфортность (люкс, полулюкс, стандарт, эконом), количество человек, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех гостиничных номерах, название гостиницы которых начинается с сочетания букв «City». Затем новый массив отсортировать по номеру. |
2 | Определить структрый тип, описывающий расписание полетов самолетов (пункт назначения, время отправления, время прибытия, время полета, стоимость билета). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех рейсах, пункт назначения которых содержит по $2$ буквы $<a>$. Затем новый массив отсортировать по пункту назначения по алфавиту. |
3 | Определить структурный тип, описывающий гостиничный номер (название гостиницы, номер, комфортность (люкс, полулюкс, стандарт, эконом), количество человек, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех гостиничных номерах, в названии гостиницы которых есть по $2$ буквы $<a>$. Затем новый массив отсортировать по названию гостиницы по алфавиту. |
4 | Определить структурный тип, описывающий музыкальные CD-диски (название альбома, исполнитель, стиль, год выпуска, длительность, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех CD-дисках, название альбома которых начинается на сочетание букв ($3 — 4$) введенных пользователем. Затем новый массив отсортировать по стилю алфавита. |
5 | Определить структурный тип, описывающий книги домашней библиотеки (автор, название книги, издательство, год издания, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех книгах, в названии которых есть по $3$ буквы $<o>$. Затем вывести информацию, отсортированную по названию издательства по алфавиту. |
6 | Определить структурный тип, описывающий книги домашней библиотеки (автор, название книги, издательство, год издания, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех книгах, в названии издательства которых есть $1$ буква $<к>$. Затем новый массив отсортировать по названию книги по алфавиту. |
7 | Определить структурный тип, описывающий гостиничный номер (название гостиницы, номер, комфортность (люкс, полулюкс, стандарт, эконом), количество человек, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех гостиничных номерах, название гостиницы которых начинается на букву $<Р>$. Затем новый массив отсортировать по возрастанию стоимости. |
8 | Определить структурный тип, описывающий книги домашней библиотеки (автор, название книги, издательство, год издания, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех книгах, название которых начинается на «Фент». Затем новый массив отсортировать по стоимости. |
9 | Определить структурный тип, описывающий гостиничный номер (название гостиницы, номер, комфортность (люкс, полулюкс, стандарт, эконом), количество человек, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех гостиничных номерах, название гостиницы которых оканчивается на сочетание букв «plaza». Затем новый массив отсортировать по возрастанию стоимости. |
10 | Определить структурный тип, описывающий музыкальные CD-диски (название альбома, исполнитель, стиль, год выпуска, длительность, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех CD-дисках, название стиля которых начинается на сочетание букв ($3 — 4$) введенных пользователем. Затем новый массив отсортировать по исполнителю по алфавиту. |
11 | Определить структурный тип, описывающий гостиничный номер (название гостиницы, номер, комфортность (люкс, полулюкс, стандарт, эконом), количество человек, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех гостиничных номерах, название гостиницы которых оканчивается на сочетание букв «hostel». Затем новый массив отсортировать по комфортности по алфавиту. |
12 | Определить структурный тип, описывающий книги домашней библиотеки (автор, название книги, издательство, год издания, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех книгах, название издательства которых начинается на «Ф». Затем новый массив отсортировать по названию книги по алфавиту. |
13 | Определить структурный тип, описывающий музыкальные CD-диски (название альбома, исполнитель, стиль, год выпуска, длительность, стоимость). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех CD-дисках, исполнитель которых начинается на букву $<Б>$. Затем новый массив отсортировать по стоимости. |
14 | Определить структурный тип, описывающий студенческую ведомость (Ф.И.О., оценки за три экзамена, средний балл). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех студентах, фамилии которых оканчиваются на «ова». Затем новый массив отсортировать по среднему баллу. |
15 | Определить структрый тип, описывающий расписание полетов самолетов (пункт назначения, время отправления, время прибытия, время полета, стоимость билета). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех рейсах, пункт назначения которых оканчивается сочетанием «град». Затем новый массив отсортировать по времени полета. |
Образец выполнения (вариант №14)
Условие задачи
Определить структурный тип, описывающий студенческую ведомость (Ф.И.О., оценки за три экзамена, средний балл). Заполнить структурный массив $10$-ю записями. Переписать из исходного массива в другой массив, информацию только о тех студентах, фамилии которых оканчиваются на «ова». Затем новый массив отсортировать по среднему баллу.
Реализация задачи на языке С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | #include <iostream> // для консольного ввода вывода #include <string> // для работы с типом данных string #include <iomanip> // для форматированного вывода данных на экран // подключаем стандартное пространство имен using namespace std; const int MARKS_COUNT = 3; // количество оценок за экзамены у каждого студента // описание сущности "Студенческая ведомость" typedef struct TStatement { string name; // имя студента string surname; // фамилия студента string father_name; // отчество студента int marks[MARKS_COUNT]; // оценки студента по 3-ем экзаменам double average_ball; // средний балл } Statement; // ввод информации о студенческих ведомостях void Input_statements_from_keyboard( Statement statements[], const int STATEMENTS_COUNT ) { cout << "Вам предстоит ввести информацию о " << STATEMENTS_COUNT << " студенческих ведомостях." << endl << endl; for( int i = 0; i < STATEMENTS_COUNT; i++ ) { cout << "\tВвод информации о студенческой ведомости №" << ( i + 1 ) << endl; cout << "\t\t - введите имя студента: "; cin >> statements[ i ].name; fflush( stdin ); cout << "\t\t - введите фамилию студента: "; cin >> statements[ i ].surname; fflush( stdin ); cout << "\t\t - введите отчество студента: "; cin >> statements[ i ].father_name; fflush( stdin ); cout << "\t\t - введите через пробел 3 оценки за экзамены (числа от 1 до 5): "; cin >> statements[ i ].marks[ 0 ] >> statements[ i ].marks[ 1 ] >> statements[ i ].marks[ 2 ]; fflush( stdin ); // после ввода оценок сразу рассчитаем средний балл statements[ i ].average_ball = 0; for ( int imark = 0; imark < MARKS_COUNT; imark++ ) statements[ i ].average_ball += statements[ i ].marks[ imark ]; statements[ i ].average_ball /= ( MARKS_COUNT * 1.0 ); cout << endl; } } // вывод информации о студенческих ведомостях на экран void Print_statements( Statement statements[], const int STATEMENTS_COUNT, const string message ) { cout << endl << message << STATEMENTS_COUNT << " шт.) имеет вид:" << endl; cout << "----------------------------------------------------------------------------------------" << endl; cout << " № ФИО студента Оценки за экзамены Средний балл " << endl; cout << "----------------------------------------------------------------------------------------" << endl; for( int i = 0; i < STATEMENTS_COUNT; i++ ) { cout << setw( 6 ) << ( i + 1 ); cout << setw( 20 ) << statements[ i ].surname << " " << statements[ i ].name[0] << "." << statements[ i ].father_name[0] << "."; cout << setw( 24 ); for ( int imark = 0; imark < MARKS_COUNT; imark++ ) { cout << statements[ i ].marks[ imark ]; if ( imark < ( MARKS_COUNT - 1 ) ) cout << ", "; } cout << setw( 22 ) << setprecision( 3 ) << fixed << statements[ i ].average_ball; cout << endl; } cout << "----------------------------------------------------------------------------------------" << endl; } // определяем кол-во студентов, чьи фамилии заканчиваются на "ova" int Get_statements_ova_count( Statement statements[], const int STATEMENTS_COUNT ) { const string end_search = "ova"; int count = 0; for ( int i = 0; i < STATEMENTS_COUNT; i++ ) if ( ( statements[ i ].surname.length() >= end_search.length() ) && ( statements[ i ].surname.substr( statements[ i ].surname.length() - end_search.length() ) == end_search ) ) count++; return count; } // получаем все ведомости о студентах, чьи фамилии заканчиваются на "ova" Statement* Get_ova_statements( Statement statements[], const int STATEMENTS_COUNT, const int ova_count ) { const string end_search = "ova"; Statement* ova_statements = new Statement[ ova_count ]; int index = 0; for ( int i = 0; i < STATEMENTS_COUNT; i++ ) if ( ( statements[ i ].surname.length() >= end_search.length() ) && ( statements[ i ].surname.substr( statements[ i ].surname.length() - end_search.length() ) == end_search ) ) { ova_statements[ index ] = statements[ i ]; index++; } return ova_statements; } // сортировка ведомостей по среднему баллу по возрастанию void Selection_sort( Statement ova_statements[], const int ova_count ) { Statement swap; int min_index; for ( int i = 0; i < ( ova_count - 1 ); i++ ) { min_index = i; for ( int j = ( i + 1 ); j < ova_count; j++ ) if ( ova_statements[ j ].average_ball < ova_statements[ min_index ].average_ball ) min_index = j; if ( i != min_index ) { swap = ova_statements[ i ]; ova_statements[ i ] = ova_statements[ min_index ]; ova_statements[ min_index ] = swap; } } } // главная функция программы (точка входа) int main( void ) { // количество студенческих ведомостей const int STATEMENTS_COUNT = 10; // массив, содержащий информацию о студенческих ведомостях Statement statements[ STATEMENTS_COUNT ]; // вводим информацию о студенческих ведомостях с клавиатуры setlocale( LC_ALL, "Russian" ); Input_statements_from_keyboard( statements, STATEMENTS_COUNT ); // выводим информацию обо всех студенческих ведомостях на экран Print_statements( statements, STATEMENTS_COUNT, "Информация обо всех студенческих ведомостях (" ); // считаем количество студентов, чьи фамилии заканчиваются на "ova" int ova_count = Get_statements_ova_count( statements, STATEMENTS_COUNT ); if ( ova_count > 0 ) { // получаем массив ведомостей студентов, чьи фамилии заканчиваются на "ova" Statement* ova_statements = Get_ova_statements( statements, STATEMENTS_COUNT, ova_count ); // выводим информацию о студентах, чьи фамилии заканчиваются на "ova" Print_statements( ova_statements, ova_count, "Информация о студентах, чьи фамилии оканчиваются на \"ova\" (" ); // сортируем ведомости по среднему баллу по возрастанию (методом выбора) Selection_sort( ova_statements, ova_count ); // выводим информацию о студентах, чьи фамилии заканчиваются на "ova", отсортированных по среднему баллу по возрастанию Print_statements( ova_statements, ova_count, "Информация о студентах (отсортированных по среднему баллу), чьи фамилии оканчиваются на \"ova\" (" ); // незабываем удалить память из-под динамического массива о ведомостях delete[] ova_statements; } else cout << endl << "В данных студенческих ведомостях нет ни одного студента, чья фамилия оканчивается на \"ova\""; // задержка работы программы, чтобы у пользователя была возможность просмотреть результат cout << endl << endl; fflush( stdin ); system( "pause" ); // завершение выполнение программы и передача управления в ОС (код 0 - все прошло успешно!) return 0; } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Задание №5
Варианты заданий
№ | Условие |
1 | Определить комбинированный (структурный) тип для представления информации по горным вершинам, состоящей из названия вершины и ее высоты. Ввести информацию по $20$ вершинам. Вывести среднее значение высот всех $20$ вершин. Затем вывести информацию, отсортированную по возрастанию высоты вершины. |
2 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести радиус самой большой окружности. Затем вывести информацию, отсортированную по возрастанию радиуса окружности. |
3 | Определить комбинированный (структурный) тип для представления информации по горным вершинам, состоящей из названия вершины и ее высоты. Ввести информацию по $10$ вершинам. Вывести название самой высокой вершины из всех $10$. Затем вывести информацию, отсортированную по возрастанию высоты вершины. |
4 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести радиус окружности, чей центр расположен ближе всего к оси $OX$ (оси абсцисс). Затем вывести информацию, отсортированную по возрастанию радиуса окружности. |
5 | Определить комбинированный (структурный) тип для представления информации по горным вершинам, состоящей из названия вершины и ее высоты. Ввести информацию по $50$ вершинам. Вывести название самой низкой вершины из всех $50$. Затем вывести информацию, отсортированную по возрастанию высоты вершины. |
6 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести сумму радиусов всех окружностей. Затем вывести информацию, отсортированную по возрастанию радиуса окружности. |
7 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести радиус окружности, чей центр самый удаленный от оси $OY$ (оси ординат). Затем вывести информацию, отсортированную по возрастанию радиуса окружности. |
8 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести радиус окружности, чей центр расположен ближе всего к оси $OY$ (оси ординат). Затем вывести информацию, отсортированную по возрастанию радиуса окружности. |
9 | Определить комбинированный (структурный) тип для представления анкеты ребенка, состоящей из его имени, пола и роста. Ввести информацию по $20$ детям. Вывести средний рост девочек. Затем вывести информацию, отсортированную по имени по алфавиту. |
10 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести радиус самой маленькой окружности. Затем вывести информацию, отсортированную по возрастанию радиуса окружности. |
11 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести радиус окружности, чей центр самый удаленный от начала координат. Затем вывести информацию, отсортированную по возрастанию радиуса окружности. |
12 | Определить комбинированный (структурный) тип для представления анкеты ребенка, состоящей из его имени, пола и роста. Ввести информацию по $20$ детям. Вывести имя самого высокого мальчика. Затем вывести информацию, отсортированную по имени по алфавиту. |
13 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести величину среднего радиуса всех окружностей. Затем вывести информацию, отсортированную по возрастанию радиуса окружности. |
14 | Определить комбинированный (структурный) тип, описывающий окружность и состоящий из двух полей: «радиус» и «центр». Поле «центр» в свою очередь состоит еще из двух полей: «координата Х» и «координата Y». Ввести информацию по $10$ окружностям. Вывести радиус окружности, чей центр самый удаленный от оси $OX$ (оси абсцисс). Затем вывести информацию, отсортированную по возрастанию радиуса окружности. |
Образец выполнения (вариант №12)
Условие задачи
Определить комбинированный (структурный) тип для представления анкеты ребенка, состоящей из его имени, пола и роста. Ввести информацию по $20$ детям. Вывести имя самого высокого мальчика. Затем вывести информацию, отсортированную по имени по алфавиту.
Реализация задачи на языке С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | #include <iostream> // для консольного ввода-вывода #include <string> // для строковых данных (имя ребенка) #include <vector> // для коллекции vector #include <iomanip> // для форматированного вывода данных на экран #include <algorithm> // для встроенного алгоритма сортировки // подключаем стандартное пространство имен using namespace std; // определяем структуру "Ребенок" с именем Child typedef struct TChild { string name; // имя ребенка char sex; // пол ребенка (м - мужской; ж - женский) int height; // рост ребенка в мм. } Child; // количество детей в базе данных const int CHILDREN_COUNT = 20; // ввод информации о детях с клавиатуры vector < Child > Input_children_from_keyboard( void ) { vector < Child > children; cout << "Вам предстоит ввести информацию о " << CHILDREN_COUNT << " детях." << endl; for( int i = 0; i < CHILDREN_COUNT; i++ ) { Child add_child; cout << endl << "Ввод информации о ребенке №" << ( i + 1 ) << endl; cout << "\t - введите имя: "; cin >> add_child.name; fflush( stdin ); cout << "\t - введите пол (m - мужской; z - женский): "; cin >> add_child.sex; fflush( stdin ); cout << "\t - введите рост, мм (натуральное число): "; cin >> add_child.height; fflush( stdin ); children.push_back( add_child ); } return children; } // вывод на экран информации обо всех детях в табличном виде void Print_children( const vector < Child > children, const string message ) { cout << endl << endl << message << endl; cout << "-------------------------------------------------------" << endl; cout << " № Имя Пол Рост, мм " << endl; cout << "-------------------------------------------------------" << endl; for ( int i = 0; i < children.size(); i++ ) { cout << setw( 3 ) << ( i + 1 ) << setw( 15 ) << children[ i ].name << setw( 12 ) << ( children[ i ].sex == 'm' ? 'м' : 'ж') << setw( 19 ) << children[ i ].height << endl; } cout << "-------------------------------------------------------" << endl; } // поиск номера самого высокого мальчика int Get_highest_boy( const vector < Child > children ) { // изначально устанавливаем недопустимый номер искомого мальчика int number_boy = 0; // перебираем в цикле всех детей for ( int i = 0; i < children.size(); i++ ) { // если текущий ребенок мужского пола, то if ( children[ i ].sex == 'm' ) { // встречен самый первый мальчик, поэтому if ( number_boy == 0 ) // запоминаем его порядковый номер number_boy = i + 1; else // встречен не самый перевый мальчик, поэтому сравниваем рост if ( ( number_boy != 0 ) && ( children[ i ].height > children[ number_boy - 1 ].height ) ) // запоминаем порядковый номер самого высокого мальчика из проверенных детей number_boy = i + 1; } } // в качестве ответа возвращаем порядковый номер самого высокого мальчика // вернется 0, если все дети - девочки (нет мальчиков) return number_boy; } // функция-компаратор для сортировки по имени по алфавиту bool Child_name_cmp( Child &child1, Child &child2 ) { return ( child1.name < child2.name ? true : false ); } // главная функция программы (точка входа) int main( void ) { // русификация диалогов в программе setlocale( LC_ALL, "" ); // вводим информацию о детях с клавиатуры и выводим на экран vector < Child > children = Input_children_from_keyboard(); Print_children( children, "Первоначальная информация обо всех детях имеет вид:" ); // находим порядковый номер самого высокого мальчика int number_highest_boy = Get_highest_boy( children ); if ( number_highest_boy == 0 ) cout << endl << "Среди анкет детей нет ни одного мальчика." << endl; else cout << endl << "Имя самого высокого мальчика (рост " << children[ number_highest_boy - 1 ].height << " мм): " << children[ number_highest_boy - 1 ].name << endl; // сортируем детей по имени по алфавиту и выводим на экран sort( children.begin(), children.end(), Child_name_cmp ); Print_children( children, "Информация обо всех детях отсортированная по имени (по алфавиту) имеет вид:" ); // задержка программы, чтобы у пользователя была возможность просмотреть результат cout << endl; system( "pause" ); // завершение работы программы return 0; } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Пока лишь 1 комментарий