Массив структур: напечатать номер курса, на котором наибольший процент женщин - C (СИ)
Формулировка задачи:
Имеется следующая информация о каждом из n-студентов: фамилия, имя, отчество, пол, возраст, курс. Написать программу, которая вводит эту информацию и печатает номер курса, на котором наибольший процент женщин.
Решение задачи: «Массив структур: напечатать номер курса, на котором наибольший процент женщин»
textual
Листинг программы
struct student { char *surname; char *name; char *patronymic; char sex; int age; int level; }; int main() { int i; int max = 0, max_1 = 0; int *max_girl; student arr[n]; for (i = 0; i < n; i++) fill_node(arr[i]); for (i = 0; i < n; i++) show(arr[i]); for (i = 0; i < n; i++) if (max < arr[i]->level) max = arr[i]->level; max_girl = (int *)malloc(sizeof(int) * max); for (i = 0; i < max; i++) max_girl[i] = 0; for (i = 0; i < n; i++) if (arr[i]->sex == 'w') max_girl[arr[i]->level]++; for (i = 0; i < max; i++) if (max_1 < max_girl[i]) max_1 = max_girl[i]; printf("%d level has more girls\n", max_1); free(max_girl); return 0; } void show(student *node) { printf("surname: %s", arr[i]->surname); printf("name: %s", arr[i]->name); printf("patronymic: %s", arr[i]->patronymic); printf("sex: %c", arr[i]->sex); printf("age: %d", arr[i]->age); printf("level: %d", arr[i]->level); } void fill_node(student *node) { // здесь выделить память под поля и заполнить }
Объяснение кода листинга программы
В этом коде используется язык программирования C для работы с массивом структур. Список действий, которые происходят в коде:
- Объявляется структура
student
с полями: surname, name, patronymic, sex, age, level. - В функции main() инициализируются переменные: i, max, max_1, max_girl.
- Создается массив структур
arr
с помощью оператора new. - В цикле for заполняются поля структур
arr
. - В цикле for выводятся на экран поля структур
arr
. - В цикле for проверяется, является ли уровень текущего элемента массива больше max. Если да, то значение max обновляется.
- С помощью malloc выделяется память под массив int, который будет хранить количество девушек на каждом уровне.
- В цикле for подсчитывается количество девушек на каждом уровне.
- В цикле for проверяется, является ли текущее значение max_girl больше max_1. Если да, то значение max_1 обновляется.
- Выводится на экран сообщение о том, на каком уровне больше девушек.
- Вызывается функция free() для освобождения памяти, выделенной под max_girl.
- Функция main() возвращает 0, что означает успешное завершение работы программы. Код написан без учета возможных ошибок (например, при работе с памятью), поэтому для его работы необходимо предусмотреть соответствующие проверки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д