Скачиваний:
0
Добавлен:
18.09.2026
Размер:
172 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,

СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Факультет «Кибербезопасности»

Кафедра «Информационная безопасность компьютерных систем»

Направление подготовки:

10.05.02 - Информационная безопасность телекоммуникационных систем

Кафедра:

ИБКС

ЛАБОРАТОРНАЯ РАБОТА № 5

по дисциплине:

Технология программирование

на тему:

Работа со структурами

Вариант № 17

Выполнил студент группы

Фамилия И. О.

Руководитель

Ассистент кафедры ПИиВТ

оценка

уч. степень, уч. звание

27.09.2024

Дятлов Д.А.

дата, подпись

Фамилия И. О.

Цель работы: необходимо сформировать массив структур. Структуры вводятся с клавиатуры. В ряде вариантов заданий с клавиатуры вводится не вся структура, а только ее отдельные поля. Необходимо выполнить обработку сформированного массива структур и результаты обработки вывести на экран дисплея. В программе следует в максимальной степени использовать функции. Например, функции должны использоваться для ввода структур, обработки сформированного массива структур и вывода результатов обработки

Постановка задачи

Массив структур, содержащих сведения о фильмах. Каждая структура должна содержать следующие поля: режиссер, название, страна, жанр, год создания. Вывести на экран сведения о фильмах определенного жанра, созданных в некоторой стране.

Ход работы

  1. Разработка алгоритма

1. Изучение справочного материала по работе с языком программирования Си

2. Создание нового проекта

3. Написание кода приложения

4. Тестирование

  1. Листинга и работы программы.

Листинг программы

#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;

}

Вывод программы

Вывод: В данной работе были получены практические навыки, а именно:

 Научился использовать структуры для считывания данных от пользователя и вывода результатов на экран.

Соседние файлы в предмете Технологии и методы программирования