Реализовать динамический массив структур "Студент" - C (СИ)
Формулировка задачи:
(Необходимо разработать программу, в которой выполняется ввод списка записей определенного типа, а затем - обработка списка. Сначала в программе должен вводиться размер списка (целое число), а сам список создается в виде динамического массива структур. Ввод одной записи осуществляется в одной строке.)
Структура:
СТУДЕНТ:
- фамилия, имя, отчество (строки по 15 символов);
- курс (целое число от 1 до 5);
- средний балл (вещественное число от 1 до 10).
Вывести на экран все записи студентов заданного пользователем курса.
Решение задачи: «Реализовать динамический массив структур "Студент"»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char f[16];
char i[16];
char o[16];
int k;
double avg;
}st;
int main ()
{
int count,i,ku;
st *s;
printf("Enter nr.: ");
scanf("%d",&count);
s = (st*)malloc(count * sizeof(st));
for(i=0;i<count;i++)
{
printf("Enter stud %d :",i+1);
scanf("%s %s %s %d %lf",s[i].f,s[i].i,s[i].o,&s[i].k,&s[i].avg);
}
printf("Enter k: ");
scanf("%d",&ku);
for(i=0;i<count;i++)
{
if(s[i].k==ku)
printf("%s, %s, %s, %d, %.2lf\n",s[i].f,s[i].i,s[i].o,s[i].k,s[i].avg);
}
free(s);
return 0;
}
Объяснение кода листинга программы
Вот что происходит в этом коде:
- Включаются необходимые заголовочные файлы:
stdio.hдля работы с вводом/выводомstdlib.hдля работы с памятью
- Определяется структура
Студентс полями:f- строка на 16 символовi- строка на 16 символовo- строка на 16 символовk- целочисленное значениеavg- вещественное число
- Создается переменная типа указатель на структуру
Студент-s. - Пользователю предлагается ввести количество студентов.
- Выделяется память под динамический массив структур
Студент. - Запускается цикл, в котором пользователь вводит данные о каждом студенте.
- Создается переменная типа целочисленное значение -
ku. - Запускается цикл, в котором выводятся данные о студентах, у которых значение поля
kравноku. - Свободная память, выделенная под массив структур
Студент, освобождается. - Функция main() возвращает 0, что означает успешный конец работы программы.