Структуры - 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; }
Объяснение кода листинга программы
- Подключаются необходимые библиотеки для работы с памятью и вводом/выводом данных
- Определяется константа M, которая задает максимальное количество символов в полях структуры AEROFLOT
- Создается структура AEROFLOT с полями kuda[M], num и type[M]
- В основной функции main() создается переменная N для хранения количества аэрофлотов
- В цикле for с помощью функции scanf() пользователь вводит данные о каждом аэрофлоте: номер рейса, тип самолета и пункт назначения
- Выделяется память под массив структур AEROFLOT с помощью функции malloc()
- Если память не удалось выделить, программа выводит сообщение об ошибке и завершается
- В цикле for осуществляется поиск аэрофлота по номеру рейса с помощью функции scanf()
- Если аэрофлот найден, выводится информация о нем
- Если аэрофлот не найден, выводится сообщение
Ничего не найдено!
- В цикле for осуществляется поиск аэрофлота по пункту назначения с помощью функции scanf()
- Если аэрофлот найден, выводится информация о нем
- Если аэрофлот не найден, выводится сообщение
Ничего не найдено!
- Функция main() возвращает 0, что означает успешное завершение программы