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 |
#include <iostream> #include <windows.h> using namespace std; struct Student //Структура Студент { char Name[35]; //Имя студента char Family[35]; //Фамилия студента char School[100]; //Учебное заведение студента int Date[3],Postup[3]; //Дата поступления в учебное заведение void Show(); //Функция будет отображать данные студента void Input(); //Функция ввода данных в структуру }; void Student::Input() //Функцию объявленную внутри структуры можно использовать вне структуры таким вот образом { cout << "\n\n"; cout << "Фамилия\t\t"; cin.getline(Family,35); //Считали фамилию cout << "Имя \t\t"; cin.getline(Name,35); //Считали имя cout<<"Дата Рождения\t"; cin >> Date[0]; //Дата внутри структуры является массивом, поэтому обращение с индексом cin.ignore(); cin >> Date[1]; cin.ignore(); cin >> Date[2]; cin.ignore(); cout << "Школа\t\t"; cin.getline(School,100); cout << "Поступление\t"; cin >> Postup[0]; cin.ignore(); cin >> Postup[1]; cin.ignore(); cin >> Postup[2]; cin.ignore(); cout << "\n\n"; cout << "======================\n"; } void Student::Show() //Функция показывает данные структуры на экране { cout << Name << "\t" << Family << "\tРодился " << Date[0] << "." << Date[1] << "." << Date[2] << "\n"; cout << "Поступил в учебное заведение\t" << School << "\t" << Postup[0] << "." << Postup[1] << "." << Postup[2] << "\n\n"; } int main() { setlocale(LC_ALL,""); SetConsoleCP(1251); SetConsoleOutputCP(1251); const int N = 3; //Количество элементов в структуре Student Student[N]; //Структура студентов из N элементов. (Справа объект, слева тип) for (int i=0; i<N; i++) Student[i].Input(); //С помощью цикла заполняем структуру, вызывая метод структуры. for (int i=0; i<N; i++) Student[i].Show(); //С помощью цикла показываем заполненную структуру на экране, вызывая метод структуры. cin.get(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//В строковую переменную попадает нажатый Enter и происходит глюк int i,y; char p[255]; cout << "input integer i: "; cin >> i; cout << "input string p: "; cin.getline(p,255); cout << "input integer y: "; cin >> y; cout << "y = " << y << '\n'; |
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 |
#include <iostream> #include <windows.h> using namespace std; struct Student //Структура Студент { char Name[35]; //Имя студента char Family[35]; //Фамилия студента char School[100]; //Учебное заведение студента struct DateBorn{ //Внутри структуры можно делать и структуры int number_year; //число года рождения int number_month; //число месяца рождения int number_day; //число дня рождения } DateBorn; //Объект структуры: ДеньРождения int Postup[3]; //Дата поступления в учебное заведение void Show(); //Функция будет отображать данные студента void Input(); //Функция ввода данных в структуру void Born_Beetween_Years(const int year1, const int year2); //Функциональность: поиск рождённого между двумя годами }; void Student::Input() //Функцию объявленную внутри структуры можно использовать вне структуры таким вот образом { cout << "\n\n"; cout << "Фамилия\t\t"; cin.getline(Family,35); //Считали фамилию cout << "Имя \t\t"; cin.getline(Name,35); //Считали имя cout<<"Дата Рождения\t"; cin >> DateBorn.number_day; //Дата внутри структуры является структурой, поэтому работаем с объектом структуры cin.ignore(); cin >> DateBorn.number_month; cin.ignore(); cin >> DateBorn.number_year; cin.ignore(); cout << "Школа\t\t"; cin.getline(School,100); cout << "Поступление\t"; cin >> Postup[0]; cin.ignore(); cin >> Postup[1]; cin.ignore(); cin >> Postup[2]; cin.ignore(); cout << "\n\n"; cout << "======================\n"; } void Student::Show() //Функция показывает данные структуры на экране { cout << Name << "\t" << Family << "\tРодился " << DateBorn.number_day << "." << DateBorn.number_month << "." << DateBorn.number_year << "\n"; cout << "Поступил в учебное заведение\t" << School << "\t" << Postup[0] << "." << Postup[1] << "." << Postup[2] << "\n\n"; } void Student::Born_Beetween_Years(int year1, int year2){ if (DateBorn.number_year >= year1 && DateBorn.number_year < year2) Show(); } int main() { setlocale(LC_ALL,""); SetConsoleCP(1251); SetConsoleOutputCP(1251); const int N = 3; //Количество элементов в структуре Student Student[N]; //Структура студентов из N элементов. (Справа объект, слева тип) for (int i=0; i<N; i++) Student[i].Input(); //С помощью цикла заполняем структуру, вызывая метод структуры. for (int i=0; i<N; i++) Student[i].Born_Beetween_Years(1999,2000); //С помощью цикла показываем заполненную структуру на экране, вызывая метод структуры. cin.get(); } |
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 |
//КОД ПРОВЕРЕН В VISUAL STUDIO 2017, СОРТИРОВКА ПО ДАТАМ РОЖДЕНИЯ #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <windows.h> #include <cstring> using namespace std; struct Student //Структура Студент { char Name[35]; //Имя студента char Family[35]; //Фамилия студента char School[100]; //Учебное заведение студента struct TDateBorn { int number_year; int number_month; int number_day; } DateBorn; int Postup[3]; //Дата поступления в учебное заведение void Show(); //Функция будет отображать данные студента void input(); //Функция ввода данных в структуру void Born_Beetween_Years(const int year1, const int year2); //Функциональность: поиск рождённого между двумя годами }; //============== ФУНКЦИЯ ДЛЯ СОРТИРОВКИ ДАТ bool less_value(Student::TDateBorn& LeftDay, Student::TDateBorn& RightDay) { if (LeftDay.number_year == RightDay.number_year) // год { if (LeftDay.number_month == RightDay.number_month) // месяц { return LeftDay.number_day < RightDay.number_day; // день } return LeftDay.number_month < RightDay.number_month; // месяц } else { return LeftDay.number_year < RightDay.number_year; // год } } //============= void Student::input() //Функцию объявленную внутри структуры можно использовать вне структуры таким вот образом { cout << "\n\n"; cout << "Фамилия\t\t"; cin.getline(Family, 35); //Считали фамилию cout << "Имя \t\t"; cin.getline(Name, 35); //Считали имя cout << "Дата Рождения (dd, mm, yyyy)\t"; cin >> DateBorn.number_day; //Дата внутри структуры является структурой, поэтому работаем с объектом структуры cin.ignore(); cin >> DateBorn.number_month; cin.ignore(); cin >> DateBorn.number_year; cin.ignore(); cout << "Школа\t\t"; cin.getline(School, 100); cout << "Поступление\t"; cin >> Postup[0]; cin.ignore(); cin >> Postup[1]; cin.ignore(); cin >> Postup[2]; cin.ignore(); cout << "\n\n"; cout << "======================\n"; } void Student::Show() //Функция показывает данные структуры на экране { cout << Name << ' ' << Family << "\nРодился " << DateBorn.number_day << "." << DateBorn.number_month << "." << DateBorn.number_year << "\n"; cout << "Поступил в учебное заведение\t" << School << "\t" << Postup[0] << "." << Postup[1] << "." << Postup[2] << "\n\n"; } void Student::Born_Beetween_Years(int year1, int year2) { if (DateBorn.number_year >= year1 && DateBorn.number_year < year2) Show(); } int main() { setlocale(LC_ALL, ""); SetConsoleCP(1251); SetConsoleOutputCP(1251); const int N = 15; //Количество элементов в структуре Student Student[N]; //Структура студентов из N элементов. (Справа объект, слева тип) for (int i = 0; i < N; i++) Student[i].input(); //Вводим данные for (int i = 0; i<N; i++) Student[i].Show(); //Выводим данные на экран cout << "\n===================\n"; //Простое отделение /*ПУЗЫРЬКОВАЯ СОРТИРОВКА ДАТ*/ for (int i = 1; i<N; i++) { for (int j = 0; j<N - 1; j++) { if (less_value(Student[i].DateBorn, Student[j].DateBorn)) swap(Student[i], Student[j]); //Задействуем вспомогательную нашу функцию } } /*Выводим на экран сортированный массив студентов*/ cout << "Sort list of Students:\n"; for (int i = 0; i<N; i++) { Student[i].Show(); } cin.get(); //Задержка } |
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 |
//КОД ПРОВЕРЕН В VISUAL STUDIO 2017, СОРТИРОВКА ПО ФАМИЛИЯМ #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <windows.h> #include <cstring> using namespace std; struct Student //Структура Студент { char Name[35]; //Имя студента char Family[35]; //Фамилия студента char School[100]; //Учебное заведение студента struct TDateBorn { int number_year; int number_month; int number_day; } DateBorn; int Postup[3]; //Дата поступления в учебное заведение void Show(); //Функция будет отображать данные студента void input(); //Функция ввода данных в структуру void Born_Beetween_Years(const int year1, const int year2); //Функциональность: поиск рождённого между двумя годами }; //============== ФУНКЦИЯ ДЛЯ СОРТИРОВКИ ДАТ bool less_value(Student::TDateBorn& LeftDay, Student::TDateBorn& RightDay) { if (LeftDay.number_year == RightDay.number_year) // год { if (LeftDay.number_month == RightDay.number_month) // месяц { return LeftDay.number_day < RightDay.number_day; // день } return LeftDay.number_month < RightDay.number_month; // месяц } else { return LeftDay.number_year < RightDay.number_year; // год } } //============= void Student::input() //Функцию объявленную внутри структуры можно использовать вне структуры таким вот образом { cout << "\n\n"; cout << "Фамилия\t\t"; cin.getline(Family, 35); //Считали фамилию cout << "Имя \t\t"; cin.getline(Name, 35); //Считали имя cout << "Дата Рождения (dd, mm, yyyy)\t"; cin >> DateBorn.number_day; //Дата внутри структуры является структурой, поэтому работаем с объектом структуры cin.ignore(); cin >> DateBorn.number_month; cin.ignore(); cin >> DateBorn.number_year; cin.ignore(); cout << "Школа\t\t"; cin.getline(School, 100); cout << "Поступление\t"; cin >> Postup[0]; cin.ignore(); cin >> Postup[1]; cin.ignore(); cin >> Postup[2]; cin.ignore(); cout << "\n\n"; cout << "======================\n"; } void Student::Show() //Функция показывает данные структуры на экране { cout << Name << ' ' << Family << "\nРодился " << DateBorn.number_day << "." << DateBorn.number_month << "." << DateBorn.number_year << "\n"; cout << "Поступил в учебное заведение\t" << School << "\t" << Postup[0] << "." << Postup[1] << "." << Postup[2] << "\n\n"; } void Student::Born_Beetween_Years(int year1, int year2) { if (DateBorn.number_year >= year1 && DateBorn.number_year < year2) Show(); } int main() { setlocale(LC_ALL, ""); SetConsoleCP(1251); SetConsoleOutputCP(1251); const int N = 15; //Количество элементов в структуре Student Student[N]; //Структура студентов из N элементов. (Справа объект, слева тип) for (int i = 0; i < N; i++) Student[i].input(); //Вводим данные for (int i = 0; i<N; i++) Student[i].Show(); //Выводим данные на экран cout << "\n===================\n"; //Простое отделение /*ПУЗЫРЬКОВАЯ СОРТИРОВКА ПО ФАМИЛИЯМ*/ for (int i = 1; i<N; i++) { for (int j = 0; j<N - 1; j++) { if (strcmp(Student[i].Family, Student[j].Family) < 0) swap(Student[i], Student[j]); } } /*Выводим на экран сортированный массив студентов*/ cout << "Sort list of Students:\n"; for (int i = 0; i<N; i++) { Student[i].Show(); } cin.get(); //Задержка } |
В функции void Student::Show() //Функция показывает данные структуры на экране опечатка.В 61 строке вместо Date[0],Date[1],Date[2] должно быть Postup[0],Postup[1],Postup[2].
И если можно вопрос.Как отсортировать по Family ? ❓
Burn вроде как сжигать переводится, получается концлагерь 😆