Структура: Пассажир - C (СИ)

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

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

Не могу разобраться в структурах . Помогите сделать программу. Нужно создать структуру "пассажир". в которой будут поля: -Фамилия пассажира -количество вещей багажа -вес багажа -номер рейса Написать программу, которая отдельными функциями делает действие: -введение с клавиатуры данных в массив, состоящий из N переменных типа "пассажир" -упорядочение записей по убыванию номера рейса -выведение на экран информацию о пассажире,который имеет вес багажа больше 30 кг.

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

textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
 
#include <stdio.h>
#include <stdlib.h>
 
#define N 10
 
typedef struct passenger
{
    char family[255];
    int  caunt;
    double weight;
    int flight;
}pas;
 
int addpas(pas *a, int k)
{
    printf("Введите фамилию: ");
    scanf("%s", a[k].family);
    ////gets(a[k].family);
    printf("Количество вещей: ");
    scanf("%d", &a[k].caunt);
    printf("Вес багажа: ");
    scanf("%lf", &a[k].weight);
    printf("Номер рейса: ");
    scanf("%d", &a[k].flight);
 
    return k + 1;
}
 
void arrswap(pas *a, pas *b)
{
    pas c;
 
    c.caunt = a->caunt;
    strcpy(c.family, a->family);
    c.flight = a->flight;
    c.weight = a->weight;
 
    a->caunt = b->caunt;
    strcpy(a->family, b->family);
    a->flight = b->flight;
    a->weight = b->weight;
 
    b->caunt = c.caunt;
    strcpy(b->family, c.family);
    b->flight = c.flight;
    b->weight = c.weight;
 
    return;
}
 
void sortpas(pas *a, int k)
{
    int max;
    for (int i = 0; i < k-1; i++) 
    {
        max = i;
        for (int j = i + 1; j < k; j++)
            if (a[j].flight > a[max].flight) max = j;
        arrswap(&a[i], &a[max]);
    }
    printf("Пассажиры отсортированы по убыванию номера рейса\n");
    getch();
    return;
}
 
 
void print_pas(pas a)
{
    printf("\n");
    printf("Фамилия: %s\n", a.family);
    printf("Количество вещей: %d\n", a.caunt);
    printf("Вес вещей: %.2lf\n", a.weight);
    printf("Номер рейса: %d\n", a.flight);
}
 
void print_all(pas *a, int k)
{
    for (int i = 0;i < k;i++)
        print_pas(a[i]);
    getch();
}
 
void pas30(pas *a, int k)
{
 
    for (int i = 0;i < k;i++)
        if (a[i].weight>30.0)
            print_pas(a[i]);
    getch();
    return;
}
 
pas arr[N];
 
int main()
{
    int n,k=0;
 
    system("chcp 1251>NUL");
    while (1)
    {
        system("cls");
        printf("  1-Добавить пассажира\n");
        printf("  2-Сортировать по убыванию номера рейса\n");
        printf("  3-Вес > 30 кг.\n");
        printf("  4-Распечатать список пассажиров\n");
        printf("  0-Выход\n");
        printf("Введите действие: ");
 
        if (scanf("%d", &n) == 1)
        {
            printf("\n");
            switch (n)
            {
            case 1: k = addpas(arr, k); break;
            case 2: sortpas(arr, k); break;
            case 3: pas30(arr, k); break;
            case 4: print_all(arr, k); break;
            case 0: return 0; break;
            }
        }
        scanf("%*[^\n]");
    }
        return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

11   голосов , оценка 4.273 из 5