Skip to content

Структуры. Задача 2

Сегодня разберём вторую задачу по структурам. Не будем долго тянуть.

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», цикл не будет окончен.
Если остались вопросы, попробуйте поискать ответ в предыдущей статье(тут), если не нашли, спрашивайте в комментариях.

Скачать исходники

Опубликовано вC++

Комментарии

  1. Маркус Маркус

    Ошибка на 23 строке. [Error] ‘cur’ was not declared in this scope

  2. Nikitas Nikitas

    Маркус, в статье приведён не полный код. Освящены только основные моменты.
    Для решения вашей проблемы скачайте исходник и возьмите рабочий код из него.
    Напоминаю, что данный код писался под не привередливый компилятор Linux. Если вы пишите под Windows, например, в Visual Studio, то вот ссылка на обновлённый файл:
    https://yadi.sk/i/gj8_wIP63JDq9t
    Также если возникнут проблемы с кодировкой (Кириллицей) используйте функцию setlocale(), как в этой статье «Алгоритм возведения в степень»
    Удачи!

Добавить комментарий