МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П. О. СУХОГО
Факультет автоматизированных и информационных систем
Кафедра «Информационные технологии»
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 3
по дисциплине «Основы алгоритмизации и программирования»
на тему: «СТРУКТУРЫ»
Выполнил: студент гр. ИТ-12
Жаворонков Д.В.
Принял: Лозовская Е.В.
Дата сдачи отчета: _____________________
Дата допуска к защите: _____________________
Дата защиты: _____________________
Гомель 2012
Лабораторная работа №3
СТРУКТУРЫ
Цель работы:
Изучить тип данных «структуры» типовые алгоритмы обработки структур.
Задача
ВАРИАНТ 4
Расписание трансляции художественных фильмов на месяц
Атрибуты:
- УДК кассеты
- Название фильма
- Жанр (комедия, триллер и т.д..)
- Производитель
- Год выпуска
- Дата проката
- Время проката
Основные функции:
- Удалить все записи о фильмах с заданным годом выпуска
- Для заданного фильма заменить УДК кассеты
- Вывести все сведения о фильмах заданного производителя.
Таблица соответствия переменных
Имя переменной | Имя на С | Тип | Комментарий |
K | K | int | Номер фильма |
p | P | Int | Параметр цикла |
Y | Y | int | Номер года |
T | T | Int | Параметр цикла |
J | J | int | Параметр цикла |
g | G | int | Номер удаленного фильма |
i | I | char | Параметр меню |
Vat | Vat | char | Имя автора |
film | film | char | Имя фильма |
ИДК | f.udk | Int | Идк фильма |
Имя | f.nm | Char | Имя фильма |
Жанр | f.zhnr | Char | Жанр фильма |
Автор | f.avt | Char | Автор фильма |
Год | f.age | Int | Год выпуска |
Дата | f.date | Int | Дата выхода |
Время | f.time | Int | Время выхода |
Листинг программы
|
/*выполнил Жаворонков Д.*/
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <math.h>
#include <string.h>
char bufRus[256];
char* Rus(const char*text)
{
CharToOem(text, bufRus);
return bufRus;
}
main()
{
int k=0,p,y,t,j,g;
char i='0';
char vat[20],film[20];
struct FILM
{
int udk;
char nm[50];
char zhnr[10];
char avt [20];
int age;
int date;
int time;
};
struct FILM f[10];
while(i!=7)
{
puts(Rus("ВЫПОЛНИЛ ЖАВОРОНКОВ ДМИТРИЙ"));
puts(Rus("1 добавить запись"));
puts(Rus("2 вывод записей"));
puts(Rus("3 удалить все записи данного года"));
puts(Rus("4 для фильма изменить ИДК"));
puts(Rus("5 все фильмы данного автора"));
puts(Rus("6 удалить по номеру"));
puts(Rus("7 Выход"));
i=getchar();
system("cls");
switch(i)
{
case '1':
{
k=k+1;
puts(Rus("Введите ИДК фильма"));
scanf("%d",&f[k].udk);
fflush(stdin);
puts(Rus("Введите имя фильма"));
gets(f[k].nm);
fflush(stdin);
puts(Rus("Введите жанр фильма"));
gets(f[k].zhnr);
fflush(stdin);
puts(Rus("Введите автора фильма"));
gets(f[k].avt);
fflush(stdin);
puts(Rus("Введите год выпуска фильма"));
scanf("%d",&f[k].age);
fflush(stdin);
puts(Rus("Введите дату показа фильма"));
scanf("%d",&f[k].date);
fflush(stdin);
puts(Rus("Введите время проката фильма"));
scanf("%d",&f[k].time);
system("cls");
i=getchar();
}
break;
case '2':
{
if(k==0)puts(Rus("список пуст "));
else
{
puts("===================================================================\n");
puts(Rus("| № | ИДК | Имя | Жанр | Автор | год | дата | время |\n "));
for(p=1;p<=k;p++)
{
printf(Rus("|%3d|%5d|%9s|%8s|%9s|%7d|%8d|%9d|\n"),p,f[p].udk,f[p].nm,f[p].zhnr,f[p].avt,f[p].age,f[p].date,f[p].time);
}
puts("===================================================================\n");
}
i=getchar();
}
break;
case '3':
{
if(k==0)puts(Rus("список пуст "));
else
{
puts(Rus("введите год"));
scanf("%d",&y);
for(j=0;j<=3;j++)
{
for(p=1;p<=k;p++)
{
if(f[p].age==y)
{
printf("N=%d\n",p);
for(t=p;t<k;t++)
|
{
f[t].udk=f[t+1].udk;
f[t].age=f[t+1].age;
f[t].date=f[t+1].date;
f[t].time=f[t+1].time;
strcpy(f[t].nm,f[t+1].nm);
strcpy(f[t].zhnr,f[t+1].zhnr);
strcpy(f[t].avt,f[t+1].avt);
}
k=k-1;
}
}
}
}
system("cls");
i=getchar();
}
break;
case '4':
{
if(k==0)puts(Rus("список пуст "));
else
{
fflush(stdin);
puts(Rus("введите фильм"));
gets(film);
for(p=1;p<=k;p++)
{
if(strcmp(f[p].nm,film)==0)
{
fflush(stdin);
puts(Rus("введите ИДК фильма"));
scanf("%d",&f[p].udk);
}
}
}
system("cls");
i=getchar();
}
break;
case '5':
{
if(k==0)puts(Rus("список пуст "));
else
{
fflush(stdin);
puts(Rus("введите автора"));
gets(vat);
puts(vat);
for(p=1;p<=k;p++)
{
if(strcmp(f[p].avt,vat)==0)
{
puts("===================================================================\n");
puts(Rus("| № | ИДК | Имя | Жанр | Автор | год | дата | время |\n "));
printf(Rus("|%3d|%5d|%9s|%8s|%9s|%7d|%8d|%9d|\n"),p,f[p].udk,f[p].nm,f[p].zhnr,f[p].avt,f[p].age,f[p].date,f[p].time);
puts("===================================================================\n");
}
}
}
i=getchar();
system("cls");
}
break;
case '6':
{
if(k==0)puts(Rus("список пуст "));
else
{
puts(Rus("введите номер"));
scanf("%d",&g);
if(g==k)k=k-1;
if(g<k)
{
for(t=g;t<k;t++)
{
f[t].udk=f[t+1].udk;
f[t].age=f[t+1].age;
f[t].date=f[t+1].date;
f[t].time=f[t+1].time;
strcpy(f[t].nm,f[t+1].nm);
strcpy(f[t].zhnr,f[t+1].zhnr);
strcpy(f[t].avt,f[t+1].avt);
}
k=k-1;
}
}
system("cls");
i=getchar();
}
break;
case '7':i=7;
default:puts(Rus("ошибка"));printf("%c",i);
puts("FFUUuuuu..");
}
}
fflush(stdin);return(0);
}
Обобщенная блок-схема
Детализация блока AB
Удаляет все записи указанного года
Детализация блока CD
Вывод всех фильмов данного автора.
Вывод: Я научился создавать структуры, отлаживать их, и обрабатыватьих. Я научился создавать, добавлять,удалять,изменять таблицы. Я научился организовывать диалог с пользователем в виде меню.
Я выучил новые методы программирования.