Доброго времени суток, уважаемые читатели! В этой статье мы поговорим о структурах в C++, затронем основные моменты в их написании, и, конечно же, покажем один практический пример.
Начнем сразу с задания, на котором мы и будем изучать структуры C++:
1. Описать структуру с именем TRAIN, содержащую следующие поля:
• название пункта назначения;
• номер поезда;
• время отправления.
2. Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи должны
быть размещены в алфавитном порядке но названиям пунктов назначения;
• вывод на экран информации о поездах, отправляющихся после введенного с
клавиатуры времени;
• если таких поездов нет, выдать па дисплей соответствующее сообщение.
И сразу перейдем к коду:
#include <conio.h> #include <iostream> #include <cstdlib> using namespace std; struct Train { int number; char path[10]; int hour; int min; }; using namespace std;
После объявления библиотек, с помощью слова struct объявляется структура Train. По своей сути структура представляет собой набор данных. Она имеет поля, которые в свою очередь могут иметь разные типы данных, и даже быть массивами. Также можно сделать структуру в структуре, что довольно часто используется. Итак, мы создали структуру с 4 полями, думаю, на этом шаге все понятно.
Перейдем к main:
int main() { const int N = 8; setlocale(LC_ALL, "Russian"); Train trains[8]; for (int i = 0; i < N; i++) { cout << "Введите пункт назначения поезда " << i + 1 << endl; cin >> trains[ i ].path ; cout << "Введите номер для поезда " << i + 1 << endl; cin >> trains[ i ].number; cout << "Введите время отправления для поезда (часы) " << i + 1 << endl; cin >> trains[ i ].hour ; cout << "Введите время отправления для поезда (минуты) " << i + 1 << endl; cin >> trains[ i ].min ; }
В этой части мы создаем 8 наших структур, у каждой из них, напомню, 4 поля: пункт назначения, номер поезда, часы и минуты отправления поезда. При желании, вы можете придумать еще какие нибудь поля для своей структуры. Все эти поля в нашей программе заполняет пользователь вручную с помощью консоли. За это отвечает оператор ввода cin.
for(int i = 0; i < N; i++) { for(int j = i + 1; j < N; j++) { if(strcmp(trains[i].path, trains[j].path)>0) { Train tmp = trains[i]; trains[i] = trains[j]; trains[j] = tmp; } } } for (int i = 0; i < N; ++i) { cout << " Пункт назначения: " << trains[ i ].path << " номер: " << trains[ i ].number << " Время отправления: " << trains[ i ].hour << ":" << trains[ i ].min << endl << endl; }
После того как мы заполнили поля наших структур, по заданию нам нужно вывести их отсортированными по пути в алфавитном порядке.
Для этого используется конструкция сравнения двух структур по их путям отправления. Сделано это с помощью 2 циклов и функции сравнения строк strcmp. После сортировки уже выводим на экран консоли информацию о структурах.
Идем дальше, и на очереди у нас задание с клавиатуры времени отправления и вывод тех поездов, которые отправятся после этого времени:
int time_h; int time_min; int k = 0; cout << "Введите ваше время (часы затем минуты)" << endl; cin >> time_h >> time_min; cout << " Ваше время:" << time_h <<":" << time_min << endl << endl; for(int i = 0; i < N; i++) { if((time_h < trains[i].hour) || (time_h == trains[i].hour && time_min < trains[i].min)) { cout << " следующие поезда отправятся после вашего времени: " << trains[i].number <<" с временем "<< trains[i].hour << ":"<< trains[i].min << endl; k++; } } if(k == 0) cout << " Нет подходящих поездов" << endl; _getch(); return 0; }
Итак, сначала мы просим пользователя ввести время в часах и минутах, отдельно записываем часы и минуты в переменные. Далее сравниваем это время с временем отправления каждого поезда, и соответственно, выводим информацию о тех поездах время отправления которых позже, чем ввел пользователь. Если таких поездов не обнаружилось, то мы выводим информацию об их отсутствии. Надеюсь вы поняли)
На этом у нас все, думаю, что будет еще 2 пример по структурам, обязательно прочтите его.
Если у вас остались вопросы по теме, то оставляйте их в комментариях.
Скачать исходники
Подскажите пожалуйста. При запуске программы ругается на conio.h
no such file of directory и не запускается программа
А в какой ОС работаете? На Linux (например Ubuntu) эту строку нужно закомментировать
Спасибо! Разобрался.
Подскажите пожалуйста пункт..
Где нужно отсортировать в алфавитном порядке по их путям отправления.
Можете пожалуйста помочь и скинуть код программы отсортировки с в алфавитном порядке с помощью указателей. Заранее спасибо!