Организовать выбор людей, суммарный вес багажа которых превышает 20 кг. - C (СИ)
Формулировка задачи:
Пассажиры. Записать в файл следующие данные о пассажирах: фамилия, количество вещей, суммарный вес багажа. Организовать выбор людей, суммарный вес багажа которых превышает 20 кг.
Прошу решить только в СИ.
Решение задачи: «Организовать выбор людей, суммарный вес багажа которых превышает 20 кг.»
textual
Листинг программы
#include <stdio.h>
struct Passenger {
char surname[100];
int NumberOfItems;
int weight;
void setSurname(char str[])
{
for (int i = 0; i < 100; i++) {
surname[i] = str[i];
}
}
};
int main()
{
// freopen("output.txt", "w", stdout);
FILE* pFile = fopen("output.txt", "w");
int n;
printf("Enter number of passengers: ");
scanf("%d", &n);
Passenger* a = new Passenger[n];
// Ввод данных
for (int i = 0; i < n; i++) {
char str[100];
printf("Enter Surname of Passanger %d: ", i+1);
scanf("%s", str);
a[i].setSurname(str);
printf("Enter Number of Items of Passanger %d: ", i + 1);
scanf("%d", &a[i].NumberOfItems);
printf("Enter weight of Passanger %d: ", i + 1);
scanf("%d", &a[i].weight);
}
// Выводим все данные в файл:
for (int i = 0; i < n; i++) {
fprintf(pFile, "Surname: %s\tNumber of Items: %d\t Weight: %d \n", a[i].surname, a[i].NumberOfItems, a[i].weight);
}
// Отсеиваем тех у кого вес больше 20 кг:
fprintf(pFile, "\n\n\nPeople with weight more than 20 kg:\n");
for (int i = 0; i < n; i++) {
if (a[i].weight > 20) {
fprintf(pFile, "Surname: %s\tNumber of Items: %d\t Weight: %d \n", a[i].surname, a[i].NumberOfItems, a[i].weight);
}
}
fclose(pFile);
return 0;
}
Объяснение кода листинга программы
- Включаем заголовочный файл
, который содержит функции ввода-вывода. - Создаём структуру Passenger, которая содержит поля для фамилии, количества предметов и веса багажа.
- В функции main() считываем количество пассажиров и используем функцию new для выделения памяти под массив структур Passenger.
- С помощью цикла for считываем данные про каждого пассажира**: фамилию, количество предметов и вес багажа.
- Сохраняем данные в файл output.txt, используя функцию fprintf.
- Отсеиваем пассажиров с багажом тяжелее 20 кг, используя цикл for и условный оператор if.
- Выводим данные о пассажирах с багажом тяжелее 20 кг в файл output.txt с помощью функции fprintf.
- Закрываем файл output.txt с помощью функции fclose.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.