• Предмет: Информатика
  • Автор: pol421339
  • Вопрос задан 5 месяцев назад

Оформить с использованием меню с вызовом соответствующих функций. В задачах, которые предусматривают обработку списка записей (студенты, читатели, автомобили и т.п.), предусмотреть ввод первоначальной информации из файла.
Ввести структуру СТУДЕНТ С полями ФИО, ЧИСЛО, МЕСЯЦ, ГОД РОЖДЕНИЯ. Написать и протестировать функции:
а. добавления нового студента;
b. вывода на экран списка студентов;
с. поиска студентов по году рождения
На языке Си. ​

Ответы

Ответ дал: листиккк
0

Ответ:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

// Структура, представляющая студента

struct student {

   char name[50];

   int day, month, year;

};

// Функция для добавления нового студента

void add_student(struct student *s) {

   printf("Введите имя студента: ");

   scanf("%s", s->name);

   printf("Введите дату рождения студента (число месяца и год через пробел): ");

   scanf("%d %d %d", &s->day, &s->month, &s->year);

}

// Функция для вывода на экран списка студентов

void display_students(struct student *s, int n) {

   printf("Список студентов:\n");

   

   for (int i = 0; i < n; i++) {

       printf("%s - %d.%d.%d\n", s[i].name, s[i].day, s[i].month, s[i].year);

   }

}

// Функция для поиска студентов по году рождения

void search_students(struct student *s, int n, int year) {

   printf("Студенты, родившиеся в %d году:\n", year);

   

   for (int i = 0; i < n; i++) {

       if (s[i].year == year) {

           printf("%s\n", s[i].name);

       }

   }

}

// Функция для ввода первоначальной информации о студентах из файла

void load_students(struct student *s, int *n) {

   FILE *fptr;

   fptr = fopen("students.txt", "r");

   

   if (fptr == NULL) {

       printf("Ошибка при открытии файла!\n");

       exit(1);

   }

   

   fscanf(fptr, "%d", n);

   

   for (int i = 0; i < *n; i++) {

       fscanf(fptr, "%s %d %d %d", s[i].name, &s[i].day, &s[i].month, &s[i].year);

   }

   

   fclose(fptr);

}

// Главная функция

int main() {

   int choice, year, n = 0;

   struct student s[100];

   load_students(s, &n);

   

   while (1) {

       printf("\nВыберите действие:\n");

       printf("1. Добавить нового студента.\n");

       printf("2. Вывести список студентов.\n");

       printf("3. Найти студентов по году рождения.\n");

       printf("4. Выйти из программы.\n");

       printf("Ваш выбор: ");

       scanf("%d", &choice);

       

       switch (choice) {

           case 1:

               add_student(&s[n]);

               n++;

               break;

               

           case 2:

               display_students(s, n);

               break;

               

           case 3:

               printf("Введите год рождения: ");

               scanf("%d", &year);

               search_students(s, n, year);

               break;

               

           case 4:

               exit(0);

               break;

               

           default:

               printf("Ошибка! Введите число от 1 до 4.\n");

               break;

       }

   }

   

   return 0;

}

Объяснение:

Вас заинтересует