Выяснить, имеется ли пассажир, багаж которого превышает багаж каждого из остальных пассажиров - C (СИ)

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

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

Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сведения о багаже каждого пассажира представляют собой запись Фамилия инициалы, вес, количество вещей. Выяснить, имеется ли пассажир, багаж которого превышает багаж каждого из остальных пассажиров и по числу вещей, и по весу. помогите с программкой.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
 
#define FAMILY 80
#define BUFSIZE 100
 
#define FILENAME "data.txt"
 
struct phone
{
    char family[FAMILY];
    char io[5]; /* 2 буквы, 2 точки, 1 null-символ*/
    int number;
    float mass;
};
 
int main()
{
    int n = 0; /* число записей в файле данных */
    int i,max1=0;
    float max2=0;
    struct phone * m; /* массив структур */
    char family[FAMILY], init[5];
    char tmp[BUFSIZE];
    FILE *in; /* указатель на файл данных */
 
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
 
    in = fopen(FILENAME, "r"); /* открываем файл на чтение */
    if (in != NULL)
    {
        do{
            fgets(tmp, BUFSIZE, in);
            n++;
        }while (!feof( in ));
 
        printf("Считано %d строк\n", n);
        m = (struct phone*)calloc(n, sizeof(struct phone));
        if (m == NULL)
        {
            printf("Ошибка выделения памяти\n");
            fclose( in ); /* закрытие файла */
        }
        else
        {
            fseek(in, 0, SEEK_SET); /* переместиться в начало файла */
            for(i=0; i<n ;i++)
                fscanf(in, "%s%s%d%f", m[i].family, m[i].io, &m[i].number, &m[i].mass);
 
            printf("Список багажа:\n");
            for(i=0; i<n ;i++)
                printf("%d.\t%s %s\n", i+1, m[i].family, m[i].io);
 
            for(i=0; i<n ;i++)
               {
               if (m[i].number>max1)
               max1=(m[i].number);
               if (m[i].mass>max2)
               max2=(m[i].mass);
               }
 
            printf("max: %d %.2f\n", max1, max2);
            fclose( in ); /* закрытие файла */
            free( m ); /* освободить динамическую память */
        }
    }
    else
        printf("Файл %s не найден\n", FILENAME);
    return 0;
}
получилось что-то такое как проверку сделать один это и тот же человек или нет?

Решение задачи: «Выяснить, имеется ли пассажир, багаж которого превышает багаж каждого из остальных пассажиров»

textual
Листинг программы
#include <stdio.h>
 
#define MAX_PASSENGERS 2
 
typedef struct Passenger {
    char* name;
    double weight;
    int things;
} passenger;
 
passenger passengers[MAX_PASSENGERS];
 
int find_bad_passenger(double max_weight, int max_things)
{
    for( int i = 0; i < MAX_PASSENGERS; ++i ) {
        if( passengers[i].weight > max_weight || passengers[i].things > max_things ) return i;
    }
    return -1;
}

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

В данном коде на языке C реализована функция find_bad_passenger, которая выполняет следующие действия:

  1. Функция получает на вход три аргумента:
    • double max_weight - максимальный вес багажа,
    • int max_things - максимальное количество вещей,
    • passenger passengers[MAX_PASSENGERS] - массив структур, содержащих информацию о пассажирах.
  2. Функция начинает перебор всех пассажиров в массиве, начиная с первого.
  3. Для каждого пассажира функция проверяет, превышает ли его вес или количество вещей заданные максимальные значения.
  4. Если вес или количество вещей какого-либо пассажира превышает заданные максимальные значения, функция возвращает индекс этого пассажира в массиве.
  5. Если ни у одного пассажира не было найдено превышение максимальных значений, функция возвращает -1. Таким образом, функция find_bad_passenger позволяет найти индекс пассажира, багаж которого превышает багаж каждого из остальных пассажиров.

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


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

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

14   голосов , оценка 4 из 5
Похожие ответы