Массив структур: напечатать номер курса, на котором наибольший процент женщин - C (СИ)

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

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

Имеется следующая информация о каждом из n-студентов: фамилия, имя, отчество, пол, возраст, курс. Написать программу, которая вводит эту информацию и печатает номер курса, на котором наибольший процент женщин.

Решение задачи: «Массив структур: напечатать номер курса, на котором наибольший процент женщин»

textual
Листинг программы
  1. struct student {
  2.     char *surname;
  3.     char *name;
  4.     char *patronymic;
  5.     char sex;
  6.     int age;
  7.     int level;
  8. };
  9.  
  10. int main()
  11. {
  12.     int i;
  13.     int max = 0, max_1 = 0;
  14.     int *max_girl;
  15.     student arr[n];
  16.     for (i = 0; i < n; i++)
  17.         fill_node(arr[i]);
  18.  
  19.      for (i = 0; i < n; i++)
  20.         show(arr[i]);
  21.  
  22.      for (i = 0; i < n; i++)
  23.         if (max < arr[i]->level)
  24.             max = arr[i]->level;
  25.    
  26.     max_girl = (int *)malloc(sizeof(int) * max);
  27.  
  28.     for (i = 0; i < max; i++)
  29.         max_girl[i] = 0;
  30.  
  31.     for (i = 0; i < n; i++)
  32.         if (arr[i]->sex == 'w')
  33.             max_girl[arr[i]->level]++;
  34.  
  35.     for (i = 0; i < max; i++)
  36.         if (max_1 < max_girl[i])
  37.             max_1 = max_girl[i];
  38.  
  39.     printf("%d level has more girls\n", max_1);
  40.  
  41.     free(max_girl);
  42.     return 0;
  43. }
  44.  
  45. void show(student *node)
  46. {
  47.     printf("surname: %s", arr[i]->surname);
  48.     printf("name: %s", arr[i]->name);
  49.     printf("patronymic: %s", arr[i]->patronymic);
  50.     printf("sex: %c", arr[i]->sex);
  51.     printf("age: %d", arr[i]->age);
  52.     printf("level: %d", arr[i]->level);
  53. }
  54. void fill_node(student *node)
  55. {
  56.     // здесь выделить память под поля и заполнить
  57. }

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

В этом коде используется язык программирования C для работы с массивом структур. Список действий, которые происходят в коде:

  1. Объявляется структура student с полями: surname, name, patronymic, sex, age, level.
  2. В функции main() инициализируются переменные: i, max, max_1, max_girl.
  3. Создается массив структур arr с помощью оператора new.
  4. В цикле for заполняются поля структур arr.
  5. В цикле for выводятся на экран поля структур arr.
  6. В цикле for проверяется, является ли уровень текущего элемента массива больше max. Если да, то значение max обновляется.
  7. С помощью malloc выделяется память под массив int, который будет хранить количество девушек на каждом уровне.
  8. В цикле for подсчитывается количество девушек на каждом уровне.
  9. В цикле for проверяется, является ли текущее значение max_girl больше max_1. Если да, то значение max_1 обновляется.
  10. Выводится на экран сообщение о том, на каком уровне больше девушек.
  11. Вызывается функция free() для освобождения памяти, выделенной под max_girl.
  12. Функция main() возвращает 0, что означает успешное завершение работы программы. Код написан без учета возможных ошибок (например, при работе с памятью), поэтому для его работы необходимо предусмотреть соответствующие проверки.

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


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

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

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы