Найти в файловой базе данных студентов, средний балл которых больше, чем заданный - 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;
}

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


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

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

7   голосов , оценка 4 из 5
Похожие ответы