отчет 5
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет «Кибербезопасности»
Кафедра «Информационная безопасность компьютерных систем»
Направление подготовки: |
10.05.02 - Информационная безопасность телекоммуникационных систем |
Кафедра: |
ИБКС |
ЛАБОРАТОРНАЯ РАБОТА № 5
по дисциплине:
Технология программирование |
на тему:
Работа со структурами |
Вариант № 17
|
|
Выполнил студент группы |
|
|
|
|
|
||
|
|
Фамилия И. О. |
||
|
|
Руководитель |
Ассистент кафедры ПИиВТ |
|
оценка |
|
|
уч. степень, уч. звание |
|
27.09.2024 |
|
Дятлов Д.А. |
||
дата, подпись |
|
Фамилия И. О. |
||
Цель работы: необходимо сформировать массив структур. Структуры вводятся с клавиатуры. В ряде вариантов заданий с клавиатуры вводится не вся структура, а только ее отдельные поля. Необходимо выполнить обработку сформированного массива структур и результаты обработки вывести на экран дисплея. В программе следует в максимальной степени использовать функции. Например, функции должны использоваться для ввода структур, обработки сформированного массива структур и вывода результатов обработки
Постановка задачи
Массив структур, содержащих сведения о фильмах. Каждая структура должна содержать следующие поля: режиссер, название, страна, жанр, год создания. Вывести на экран сведения о фильмах определенного жанра, созданных в некоторой стране.
Ход работы
Разработка алгоритма
1. Изучение справочного материала по работе с языком программирования Си
2. Создание нового проекта
3. Написание кода приложения
4. Тестирование
Листинга и работы программы.
Листинг программы
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>
struct movie {
char director[50];
char title[50];
char country[20];
char genre[50];
int year_of_creation;
};
void input_movie(struct movie* m) {
printf("Enter director: ");
fgets(m->director, sizeof(m->director), stdin);
m->director[strcspn(m->director, "\n")] = '\0';
printf("Enter title: ");
fgets(m->title, sizeof(m->title), stdin);
m->title[strcspn(m->title, "\n")] = '\0';
printf("Enter country: ");
fgets(m->country, sizeof(m->country), stdin);
m->country[strcspn(m->country, "\n")] = '\0';
printf("Enter genre: ");
fgets(m->genre, sizeof(m->genre), stdin);
m->genre[strcspn(m->genre, "\n")] = '\0';
printf("Enter year of creation: ");
scanf_s("%d", &m->year_of_creation);
getchar();
}
void fix(struct movie* film, int NUM_MOVIES) {
char genre_filter[50];
char country_filter[20];
printf("Enter genre: ");
fgets(genre_filter, sizeof(genre_filter), stdin);
genre_filter[strcspn(genre_filter, "\n")] = '\0';
printf("Enter country: ");
fgets(country_filter, sizeof(country_filter), stdin);
country_filter[strcspn(country_filter, "\n")] = '\0';
short found = 0;
for (short i = 0; i < NUM_MOVIES; i++) {
if (strcmp(film[i].genre, genre_filter) == 0 && strcmp(film[i].country, country_filter) == 0) {
printf("Director: %s\n", film[i].director);
printf("Title: %s\n", film[i].title);
printf("Year: %d\n", film[i].year_of_creation);
printf("-------------------------------\n");
found = 1;
}
}
if (found == 0) {
printf("\nNo movies found for this genre/country.\n");
}
}
int main() {
int NUM_MOVIES;
printf("Enter number of movies: ");
scanf_s("%d", &NUM_MOVIES);
getchar();
struct movie* film = (struct movie*)malloc(NUM_MOVIES * sizeof(struct movie));
if (film == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
for (int i = 0; i < NUM_MOVIES; i++) {
printf("\nEnter details for movie #%d\n", i + 1);
input_movie(&film[i]);
}
char k;
printf("Continue? (1 - Yes, other - No): ");
scanf_s(" %c", &k, 1);
getchar();
while (k == '1') {
fix(film, NUM_MOVIES);
printf("Continue? (1 - Yes, other - No): ");
scanf_s(" %c", &k, 1);
getchar();
}
free(film);
return 0;
}
Вывод программы
Вывод: В данной работе были получены практические навыки, а именно:
Научился использовать структуры для считывания данных от пользователя и вывода результатов на экран.
