Найти в файловой базе данных студентов, средний балл которых больше, чем заданный - C (СИ)
Формулировка задачи:
Бинаний файл.
Задали структуру "Студент", содержащий поля "Фамилия", "Средняя оценка". Создать базу данных 3 студентов и записать в бинарный файл, имя которого задается с клавиатуры. Найти в файловой базе данных студентов, средний балл которых больше, чем заданий.
Решение задачи: «Найти в файловой базе данных студентов, средний балл которых больше, чем заданный»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3
#define LEN 30
struct Student
{
char Surname[LEN]; // фамилия - строка из 30 (например) символов
float Mark;
} array[N]; // задали массив из 3 таких структур
int main(void)
{
int i;
/* зададим данные структуры с клавиатуры */
for (i = 0; i < N; i++)
{
printf("Input Surname of student %d: ", i + 1);
scanf("%s", &array[i].Surname); // считаем фамилию
printf("Input middle mark of student %d: ", i + 1);
scanf("%f", &array[i].Mark); // считаем средний балл
printf("\n");
}
/* запишем данные в бинарный файл */
FILE *out = fopen("output.bin", "wb");
fwrite(array, sizeof(struct Student), N, out);
close(out);
/* зададим средний балл и будем искать студентов, у которых средний бал больше, чем заданный */
out = fopen("output.bin", "rb");
float midMark;
scanf("%f", &midMark);
fread(array, sizeof(struct Student), N, out); // считываем N структур в массив array
for (i = 0; i < N; i++)
if (array[i].Mark > midMark) // если средняя оценка больше заданной
printf("%s\n", array[i].Surname); // печатаем фамилию
close(out);
return 0;
}