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