Задан массив структур из 6 записей. Каждая запись состоит из фамилии студента и номера его группы. Сформировать и распечатать массив из фамилий студентов заданной группы, начинающихся на заданную букву. Фамилия и номер группы вводятся из консоли.
Решение задачи на языке Си
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64  | 
						#include <stdio.h> #include <string.h>  #include <malloc.h>  // структура, описывающая студента. содержит его фамилию и название группы struct Student {     char lastName[30];     char group[10]; }; // функция формирует строковый массив фамилий студентов, содержащихся в students, которые учатся в группе group и их фамилия начинается на букву c void makeMassAndPrint(Student students[], int N, char group[10], char c) {     // посчитаем количество студентов, которое нужно будет вывести. это будет число k     int k = 0;     for (int i = 0; i < N; i++)     {         // если группа i-го студента равна group и первая буква его фамилии равна c, то k++         if ((strcmp(students[i].group, group) == 0) && (students[i].lastName[0] == c))             k++;     }     // создадим массив под k фамилий     char** lastNames = (char**)malloc(k * sizeof(char*));     k = 0;     // занесем в массив lastNames все подходящие фамилии     for (int i = 0; i < N; i++)     {         if ((strcmp(students[i].group, group) == 0) && (students[i].lastName[0] == c))             lastNames[k++] = students[i].lastName;     }     // выведем их в консоль     for (int i = 0; i < k; i++)         printf("%s\n", lastNames[i]);     // освободим память из под массива lastNames     free(lastNames); } int main() {     // объявим массив структур и инициализируем его данными     Student students[6] = {         "Abdulov", "PM-15",         "Viktorov", "PM-15",         "Grushin", "PM-15",         "Ershov", "PM-15",         "Nosov", "PM-15",         "Nikolaev", "PM-15" };     // сюда сохраним название группы из консоли     char group[10];     // читаем название группы из консоли     gets_s(group);     // читаем из консоли первую букву фамилии     char c = getchar();     // вызываем функцию, решающую задачу     makeMassAndPrint(students, 6, group, c); }  | 
					
Демонстрация работы программы
Поделиться в соц. сетях:
