Массив структур: напечатать номер курса, на котором наибольший процент женщин - 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, что означает успешное завершение работы программы. Код написан без учета возможных ошибок (например, при работе с памятью), поэтому для его работы необходимо предусмотреть соответствующие проверки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д