Задан массив структур из 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); } |
Демонстрация работы программы
Поделиться в соц. сетях: