Структуры - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Может кто поможет со второй частью?А то не совсем догоняю как сделать 1. Описать структуру AEROFLOT, содержащую следующие поля: название пункта назначения рейса, номер рейса, вместимость, тип самолета. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив экземпляров структур, состоящий из пяти записей; • поиск записей, в которых пункт назначения совпадает с введенным с клавиатуры; • поиск записей, в которых вместимость самолета не менее введенной с клавиатуры. Это первая часть:
#include 
#include 
#define M 15
using namespace std;
 
struct AEROFLOT {
    char kuda[M];
    int num;
    char type[M];
};
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;
    }

Решение задачи: «Структуры»

textual
Листинг программы
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #define M 15
 
    struct AEROFLOT {
        char kuda[M];
        int num;
        char type[M];
    }*a;
 
    int main(void) {
        int i, N, var, tr = 0;
        char kuda_[M];
        system("chcp 1251");
        system("cls");
        puts("Введите количество аэрофлотов");
        scanf("%d", &N);
        a = (struct AEROFLOT*)malloc(N * sizeof(struct AEROFLOT));
        if (a == NULL) {
            puts("Не удалось выделить память!");
            return -1;
        }
        for (i = 0; i < N; i++) {
            printf("\n(%d)Введите номер рейса: ", i);
            scanf("%d", &a[i].num);
            printf("\n(%d)Введите тип самолёта: ", i);
            scanf("%s", &a[i].type);
            printf("\n(%d)Введите пункт назначения : ", i);
            scanf("%s", &a[i].kuda);
        }
        puts("Введите номер рейса, который Вас интересует");
        scanf("%d", &var);
        for (i = 0; i < N; i++) {
            if (a[i].num == var) {
                printf("Информация:\nКуда:%s\nНомер рейса:%d\nТип самолёта:%s", a[i].kuda, a[i].num, a[i].type);
                tr = 1;
                break;
            }
        }
        if(tr == 0) {
            puts("\nНичего не найдено!");
        }
        tr = 0;
        puts("\nВведите пункт назначения рейса, который Вас интересует");
        scanf("%s", &kuda_);
        for (i = 0; i < N;i++) {
            if (strcmp(a[i].kuda,kuda_) == 0) {
                printf("Информация:\nКуда:%s\nНомер рейса:%d\nТип самолёта:%s", a[i].kuda, a[i].num, a[i].type);
                tr = 1;
                break;
            }
        }
        if (tr == 0) {
            puts("\nНичего не найдено!");
        }
        return 0;
    }

Объяснение кода листинга программы

  1. Подключаются необходимые библиотеки для работы с памятью и вводом/выводом данных
  2. Определяется константа M, которая задает максимальное количество символов в полях структуры AEROFLOT
  3. Создается структура AEROFLOT с полями kuda[M], num и type[M]
  4. В основной функции main() создается переменная N для хранения количества аэрофлотов
  5. В цикле for с помощью функции scanf() пользователь вводит данные о каждом аэрофлоте: номер рейса, тип самолета и пункт назначения
  6. Выделяется память под массив структур AEROFLOT с помощью функции malloc()
  7. Если память не удалось выделить, программа выводит сообщение об ошибке и завершается
  8. В цикле for осуществляется поиск аэрофлота по номеру рейса с помощью функции scanf()
  9. Если аэрофлот найден, выводится информация о нем
  10. Если аэрофлот не найден, выводится сообщение Ничего не найдено!
  11. В цикле for осуществляется поиск аэрофлота по пункту назначения с помощью функции scanf()
  12. Если аэрофлот найден, выводится информация о нем
  13. Если аэрофлот не найден, выводится сообщение Ничего не найдено!
  14. Функция main() возвращает 0, что означает успешное завершение программы

Оцени полезность:

8   голосов , оценка 3.75 из 5