Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практикум по языкам программирования. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
71
list *head; //указатель на начало списка
// Функция создания элемента списка
list * first(stud d) //d – информация о студенте
{list *t=new list;
t->next=0; t->info=d;
return t;
}
//Создание упорядоченного списка
void insert(list **s, stud x)
{
list *t=*s;
list *p=0;
list *r;
while(t!=0&&strcmp(t->info.fio,x.fio)<0)
{p=t;
t=t->next;
}
r=first(x);
r->next= t;
if(p==0)
*s=r;
else
p->next=r;
}
//Поиск элемента по ключу
list *find(list *s, stud x)
{list *t=s;
while(t)
{if(t->info.nom==x.nom) break;
t=t->next;
72
}
return t;
}
//Удаление элемента
void remove(list **s, stud x)
{list *t=*s;
list *u=find(t,x);
if (u!=0&&u!=*s)
{while(t->next!=u)
{t=t->next;}
t->next=u->next;
delete u; }
else if(u==*s)
{*s=(*s)->next; delete u; }
}
// Функция вывод списка на экран
void display(list *s)
{list *t=s;
while(t)
{
printf("%d %s %s %5.2f\n", t->info.nom,
t->info.fio, t->info.grup, t->info.ball);
t=t->next;
}
}
int main()
{stud a;
printf("vvedi svedenija o 5 studentax");
for(int i=1; i<=5; i++)
{
73
scanf("%d",&a.nom);
scanf("%s",a.fio);
scanf("%s",a.grup);
scanf("%f",&a.ball);
insert(&head,a);
}
display(head);
printf("Введите номер студента для удаления:");
scanf("%d",&a.nom);
remove(&head,a);
display(head);
return 0;
}
74
Задание к лабораторной работе
В соответствии с вариантом задания разработать программу создания и
обработки динамической структуры данных.
Таблица 9. Варианты заданий
Вариант
Условие задачи
1.
Составить программу, которая создает динамическую
информацию о наличии автобусов в автобусном парке. Сведения о каждом автобусе содержат:
номер автобуса; фамилию и инициалы водителя; номер маршрута.
Программа должна обеспечивать:
начальное формирование данных о всех автобусах в парке
в виде списка;
вводится номер автобуса для выезда из парка, и
программа удаляет данные из списка автобусов, находящихся в парке, и записывает эти данные в список
автобусов, находящихся на маршруте;
при въезде автобуса в парк вводится номер автобуса, и
программа удаляет его данные из списка автобусов, находящихся на маршруте, и записывает эти данные в
список автобусов, находящихся в парке;
по запросу выдаются сведения об автобусах, находящихся
в парке, или об автобусах, находящихся на маршруте.
75
2
Составить программу, которая содержит текущую информацию
о книгах в библиотеке. Сведения о книгах содержат:
• номер УДК;
• фамилию и инициалы автора;
• название;
• год издания;
• количество экземпляров данной книги в
библиотеке.
Программа должна обеспечивать:
o начальное формирование данных о всех книгах в
библиотеке в виде списка, упорядоченного по
годам издания;
o добавление данных о книгах, вновь поступающих в
библиотеку;
o удаление данных о списываемых книгах; o поиск книги по названию.
3
Составить программу, которая содержит текущую информацию
о заявках на авиабилеты. Каждая заявка содержит:
пункт назначения; номер рейса; фамилию и инициалы пассажира; желаемую дату вылета.
Программа должна обеспечивать:
хранение всех заявок в виде списка; добавление заявок в список; удаление заявок; вывод заявок по заданному номеру рейса и дате вылета; вывод всех заявок.
76
4.
Составить программу, которая содержит текущую информацию
о студентах. Каждая заявка содержит:
Номер зачетки; фамилию и инициалы; группа; балл в контрольный срок.
Программа должна обеспечивать:
хранение информацию о студентах в виде списка; добавление нового студента в список; удаление всех студентов, имеющих балл меньше 1; вывод списка студентов на экран.
5
На междугородной телефонной станции картотека абонентов
содержит сведения в следующем виде:
• номер телефона;
• ФИО владельца;
• паспортные данные (номер).
Составить программу, которая:
• обеспечивает начальное формирование картотеки в виде
линейного списка, упорядоченного по алфавиту;
• производит вывод всей картотеки;
• вводит номер телефона и выдает имя владельца;
Программа должна обеспечивать контроль ошибки при вводе
номера телефона (если такого нет в картотеке).
77
6
Составить программу, которая содержит текущую информацию
о книгах в библиотеке: Сведения о книгах содержат:
номер УДК; фамилию и инициалы автора; название; год издания; количество экземпляров данной книги в библиотеке.
Программа должна обеспечивать:
начальное формирование данных о всех книгах в
библиотеке в виде списка;
при взятии каждой книги вводится номер УДК, и
программа уменьшает значение количества книг на единицу или выдает сообщение о том, что требуемой книги в библиотеке нет, или требуемая книга находится
на руках;
при возвращении каждой книги вводится номер УДК, и
программа увеличивает значение количества книг на
единицу.
7
Составить программу, которая содержит динамическую
информацию о наличии такси в таксопарке. Сведения о каждом такси содержат:
номер такси; фамилию и инициалы водителя; признак того, где находится такси — на маршруте или в
парке.
Программа должна обеспечивать:
начальное формирование данных о всех такси в виде двух
списков;
при выезде каждого такси из парка программа ставит его
в конец списка «такси на маршруте»;
при въезде каждого такси в парк программа
устанавливает его в конец списка «такси в парке»;
по запросу выдаются сведения о такси, находящихся в
парке, или о такси, находящихся на маршруте.
78
8
Гаражная стоянка имеет одну стояночную полосу, причем въезд
и выезд находятся в одном конце полосы. Если владелец
автомашины приходит забрать свой автомобиль, который не является ближайшим к выходу, то все автомашины, загораживающие проезд, удаляются, машина данного владельца выводится со стоянки, а другие машины
возвращаются на стоянку в исходном порядке.
Написать программу, которая моделирует процесс прибытия и
отъезда машин (стек).
Прибытие или отъезд автомашины задается командной строкой,
которая содержит:
признак прибытия или отъезда; номер машины.
Программа должна выводить сообщение при прибытии или выезде любой машины.
При выезде автомашины со стоянки сообщение должно содержать число раз, которое машина удалялась со стоянки для
обеспечения выезда других автомобилей.
9
Составить программу, моделирующую заполнение магнитного
диска.
Общий объем памяти на диске 360 Кбайт. Файлы имеют
произвольную длину от18 байт до 32 Кбайт.
В процессе работы файлы либо записываются на диск, либо
удаляются с него. В начале работы файлы записываются подряд друг за другом.
После удаления файла на диске образуется свободный участок памяти, и вновь записываемый файл либо размещается на свободном участке, либо, если файл не вмещается в свободный
участок, размещается после последнего записанного файла.
В случае, когда файл превосходит длину самого большого свободного участка, выдается аварийное сообщение. Требование на запись или удаление файла задается с клавиатуры. В командной строке вводится имя файла и его
длину в байтах. Программа должна выдавать по запросу сведения о занятых и свободных участках памяти на диске.
Программа должна создать список занятых и свободных
участков памяти на диске.
79
10
В файловой системе каталог файлов организован как
линейный список. Для каждого файла в каталоге содержатся следующие сведения:
имя файла; дата создания; количество обращений к файлу.
Составить программу, которая обеспечивает:
начальное формирование списка файлов в каталоге; вывод каталога файлов; удаление файлов, дата создания которых меньше
заданной;
выборку файла с наибольшим количеством обращений.
Программа должна обеспечивать диалог с помощью меню.
11
Предметный указатель организован как линейный список. Каждая компонента указателя содержит:
• слово;
• номера страниц, на которых это слово встречается
(количество номеров страниц, относящихся к одному
слову, от одного до десяти).
• Составить программу, которая обеспечивает:
• начальное формирование предметного указателя;
• вывод предметного указателя; вывод номеров страниц для заданного слова.
Программа должна обеспечивать диалог с помощью меню.
80
12
Автоматизированная информационная система в деканате содержит сведения о контрольных баллах групп. Для каждой
группы указывается:
. номер группы; . средний балл.
Составить программу, которая:
• обеспечивает первоначальный ввод данных и формирует
из них список;
• затем формирует из нее очередь, выбирая в нее элементы
списка с баллом меньшим введенного с клавиатуры;
• список и очередь должны быть показаны на экране.
13
Текст помощи для некоторой программы организован как
линейный список. Каждая компонента текста помощи содержит:
• термин (слово);
• текст, поясняющий этот термин (количество символов в
тексте – до пятидесяти).
Составить программу, которая обеспечивает:
• начальное формирование текста помощи;
• добавление нового термина с пояснением в список;
• вывод поясняющего текста для заданного термина.
Программа должна обеспечивать диалог с помощью меню.
14
Картотека в бюро ремонта квартир организована как список. Сведения о каждой квартире содержат:
• количество комнат;
• площадь;
• адрес.
• дата подачи заявления на ремонт;
• дата окончания ремонта.
Составить программу, которая обеспечивает:
• начальное формирование картотеки;
• ввод заявки на ремонт;
• выбор из картотеки очередника и запись его данных в
список отремонтированных, упорядочивая по дате
окончания ремонта;
• вывод всего списка.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]