Сегодня разберём вторую задачу по структурам. Не будем долго тянуть.
1. Описать структуру с именем AEROFLOT, содержащую следующие поля:
• название пункта назначения рейса;
• помер рейса;
• тип самолета.
2. Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из семи элементов типа AEROFLOT; записи
должны быть размещены в алфавитном порядке по названиям пунктов назначения;
• вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры;
• если таких рейсов нет, выдать на дисплей соответствующее сообщение
Начнём с описания структуры:
#include <iostream> #include <cstring> #define M 15 using namespace std; struct AEROFLOT { char kuda[M]; int num; char type[M]; };
Строение кода такое же как и в предыдущей статье о структурах. Только в нашем случае структура AEROFLOT, которая содержит 3 поля: название пункта, номер рейса и тип самолёта. Далее:
int main(){ static int N = 3; AEROFLOT fly[N]; int i; for (i = 0; i < N; i++){ cout << "\nВведите номер рейса: "; cin >> fly[i].num; cout << "\nВведите тип самолёта "; cin >> fly[i].type; cout << "\nВведите пункт назначения "; cin >> fly[i].kuda; }
Предварительно объявим количество структур (3) и заполним их соответствующими данными с помощью команды cin.
for(i=0;i<N-1;i++) for(int j=i+1;j<N;j++) if(strcmp(fly[i].kuda ,fly[j].kuda)>0) { strcpy(cur,fly[i].kuda ); strcpy(fly[i].kuda ,fly[j].kuda ); strcpy(fly[j].kuda ,cur); }
Тут реализован способ сортировки строчных элементов по алфавиту. Такой же способ использовался в предыдущей статье. Повторять не будем.
cout << "\n ________________________________________________________\n"; for (i = 0; i < N ; i++){ cout << fly[i].kuda << " " << fly[i].num << " " << fly[i].type <<endl; } cout << "\n ________________________________________________________\n";
Вывод 3-ёх отсортированных структур.
char temp[M]; int count; while (strcmp(temp, "exit")){ cout << "\nВведите желаемый тип самолёта: "; cin >> temp; count = 0; for (i = 0; i < N; i++){ if (strcmp(fly[i].type , temp) == 0 ) { cout << endl << fly[i].kuda << " "<< fly[i].num<< endl; count++; } } if (count == 0) cout << endl << " Нет таких рейсов\n"; }
И, наконец, цикл, который просит ввести тип самолёта, и затем выводит всю информацию о нём. Пока не будет введено слово «exit», цикл не будет окончен.
Если остались вопросы, попробуйте поискать ответ в предыдущей статье(тут), если не нашли, спрашивайте в комментариях.
Скачать исходники
Ошибка на 23 строке. [Error] ‘cur’ was not declared in this scope
Маркус, в статье приведён не полный код. Освящены только основные моменты.
Для решения вашей проблемы скачайте исходник и возьмите рабочий код из него.
Напоминаю, что данный код писался под не привередливый компилятор Linux. Если вы пишите под Windows, например, в Visual Studio, то вот ссылка на обновлённый файл:
https://yadi.sk/i/gj8_wIP63JDq9t
Также если возникнут проблемы с кодировкой (Кириллицей) используйте функцию setlocale(), как в этой статье «Алгоритм возведения в степень»
Удачи!