ВНИМАНИЕДля заказа программы своего варианта пишите на наш электронный адрес proglabs@mail.ru

Работа со списком

Краткая постановка задания

Необходимо написать модуль, содержащий решения $16$ задач для работы со списком, и программу, демонстрирующую работу этого модуля. Программа должна быть выполнена либо в качестве консольного приложения (тогда обязателен командно-текстовый интерфейс), либо иметь графический интерфейс пользователя.

При необходимости следует использовать вспомогательные функции. В разработанном модуле не должны применяться интерфейсные функции (исключение возможно только для функций ввода элементов и вывода списка).

Комментарий для студентов от разработчика программы

Я (Александр Георгиевич) полностью разработал решение данной задачи для всех студентов, изучающих данную тему. Программа реализована в среде MS Visual Studio на языке программирования C++ (консольный проект).

➡ За $1\ 300$ рублей могу перевести данную программу с консольного варианта на визуальный формат(формы с различными визуальными элементами управления).

В коде я учел все пожелания и требования к данной задаче, выдвигаемые составителями. Соблюдены названия переменных, порядок выполнения операторов и пр.нюансы.

➡ Хочется отметить лишь одну весомую неточность, допущенную составителем: в пункте $№17$ требуется отсортировать линейный список устойчивым алгоритмом сортировки, и предлагается воспользоваться сортировкой выбором.

Дело в том, что данная сортировка является как раз-таки неустойчивой! Поэтому я выбрал для сортировки списка оптимальную сортировку пузырьком (сортировку обменом), которая является устойчивой.

Напомню, что под устойчивой сортировкой понимают такую сортировку, которая не меняет взаимного расположения элементов с одинаковыми ключами.

В итоге получилась программа, состоящая из $500+$ строк кода. Для студенческой лабораторной работы данный объем является немалым.

➡ Программа снабжена колоссальным количеством подсказок, различных информативных сообщений, помогающих пользователю ориентироваться в ходе выполнения программы.

Необходимые программные функции для кодирования

Ниже представлен список необходимых функций, требующихся для успешного решения поставленной задачи.

Самое важное — помнить о том, что функция должна строго решать какую-то конкретную одну задачу.

Название функцииНазначение функции
1int Menu(void)Главное меню программы.
2int InputIntValue(void)Ввод значения информационного поля элемента вводом с клавиатуры.
3list* CreateElement(int pinf)Создание нового элемента с заданным значением информационного поля.
4void AddElementBeginList(list** pfirst, const int pinf)Добавление элемента в начало линейного списка.
5void AddElementEndList(list** pfirst, const int pinf)Добавление элемента в конец линейного списка.
6void AddElementBeforeTarget(list* pfirst, const int pinf, const int pnumber)Добавление элемента перед заданным по номеру элементом списка.
7void AddElementAfterTarget(list* pfirst, const int pinf, const int pnumber)Добавление элемента после заданного по номеру элемента списка.
8void DeleteElementBeginList(list** pfirst)Удаление элемента из начала односвязного списка.
9void DeleteElementEndList(list* pfirst)Удаление элемента из конца односвязного списка.
10void DeleteTargetElementByNumber(list* pfirst, const int pnumber)Удаление заданного по номеру элемента списка.
11void ClearList(list** pfirst)Удаление всех элементов списка (очистка списка).
12void PrintList(const list* pfirst)Вывод элементов линейного списка на экран пользователя.
13list* GetElement(list* pfirst, const int pnumber)Получение заданного по номеру элемента списка для анализа.
14int GetCountElementsList(const list* pfirst)Получение количества элементов односвязного списка.
15bool IsExistElement(list* pfirst, const int pinf)Поиск образца (заданного элемента) по значению в списке.
16list* CopyList(list* pfirst)Формирование полной/глубокой копии линейного списка.
17void SplitList(list* pfirst)Расщепление линейного списка на $2$ подсписка по критерию четность/нечетность значений элементов.
18void BubbleSortList(list* pfirst)Сортировка списка методом пузырька (обменом).
19int main(void)Главная функция всей программы (точка входа).

Итого получилось $19$ функций. Каждая из этих функций выполняет строго одно действие и это важнейший момент правильного программирования.

Реализация задачи на языке С++

Результаты работы программы

Смысл операции и результат
1Попытка поиска элемента (на данный момент список пуст).
2Добавление элемента со значением $15$ в начало списка.
3Добавление элемента со значением $17$ в конец списка.
4Добавим элементы со значеним $5$, $120$ в начало списка, а затем $13$, $-6$, $23$ в конец списка и распечатаем элементы списка на экран.
5Удалим элемент, стоящий на $3$-й позиции (нумерация элементов с $1$).
6Попробуем удалить элемент, задав некорректный номер элемента.
7Удалим последний элемент списка.
8Удалим первый элемент списка.
9
Добавим элемент перед заданным по номеру элементом.
10
Распечатаем элементы списка на экран.
11
Расщепим данный список на $2$ подсписка.
12
Попробуем найти элемент в списке со значением $13$.
13
Добавим элемент после заданного элемента по номеру.
14
Попробуем найти элемент по его номеру для проведения анализа.
15
Получим копию данного списка.
16
Запросим количество элементов списка.
17
Отсортируем список пузырьковой сортировкой по возрастанию ключей элементов списка.
18
Удалим все элементы из списка.
19
Попробуем распечатать пустой список на экран.

➡ Стоимость заказа решения данной задачи в визуальном формате (с формами и визуальными элементами управления) составляет $1\ 500$ рублей.

Индивидуальные задания

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

Задание для всех вариантов звучит так (или, возможно, немного изменено, т к могут быть разные издания учебного пособия).

Для всех вариантов необходимо написать программу для решения задачи. Для хранения данных применять линейный список; для хранения даты и времени использовать тип данных time_t; исходные данные брать из текстового файла с именем «test.txt». Файл сдается вместе с работой и должен содержать не менее $10$ записей.

В начале работы программы данные загружаются в список, а пользователю предлагается меню в случае командно-текстового интерфейса или же графический интерфейс.

Обязательно должно быть реализовано выполнение следующих функций:

  • добавления элемента в конец, начало, середину (до и после введенного номера);
  • удаления элемента из начала, середины, конца;
  • печати содержимого списка;
  • задания конкретного варианта (поиск и сортировка по заданным полям).

Для решения задач обязательно использовать функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.

Варианты заданий

№ вар.Формулировка
1.Счет в банке представляет собой структуру с полями: номер счета, код счета, фамилия владельца, сумма на счете, дата открытия счета, годовой процент начисления. Реализовать поиск и сортировку по номеру счета, дате его открытия и фамилии владельца.
2.Запись о товаре на складе представляет собой структуру с полями: номер склада, код товара, наименование товара, дата поступления на склад, срок хранения в днях, количество единиц товара, цена за единицу товара. Поиск и сортировка — по номеру склада, наименованию товара. Вывести список просроченных товаров (поиск всех товаров, у которых на текущую дату истек срок хранения).
3.Запись о преподаваемой дисциплине представляется структурой: код дисциплины в учебном плане, наименование дисциплины, фамилия преподавателя, код группы, количество студентов в группе, количество часов лекций, количество часов практических занятий, вид итогового контроля (зачет или экзамен), дата начала занятий. Поиск и сортирвока — по фамилии преподавателя, количеству часов, дате начала занятий.
4.Информационная запись о книге, выданной на руки абоненту, представляет собой структуру следующего вида: номер читательского билета, фамилия абонента, дата выдачи, количество дней, автор, название, год издания, цена. Поиск и сортировка — по номеру читательского билета, автору книги. Вывести список все просроченных книг (поиск всех книг, которые на текущую дату должны быть сданы).
5.Информационная запись о файле содержит следующие поля: каталог, имя файла, расширение, дата и время создания, атрибуты «только для чтения», «скрытый», «системный», количество выделенных секторов (размер секотора принять равным $512$ байтам). Поиск и сортировка — по каталогу, дате создания файла. Выяснить, поместится ли файл на носитель с некоторым количеством секторов.
6.Разовый платеж за телефонный разговор является структурой с полями: фамилия плательщика, номер телефона, дата разговора, тариф за минуту разговора, время начала разговора, время окончания разговора. Поиск и сортировка — по фамилии плательщика, дате разговора. Найти все разговоры со временем разговора больше заданного.
7.Модель компьютера характеризуются кодом и маркой компьютера, типом процессора (может содержать цифры и буквы), частотой работы процессора, объемом оперативной памяти, объемом жесткого диска, датой выпуска на рынок, стоимостью компьютера в рублях и количеством экзмепляров, имеющихся в наличии. Поиск и сортировка — по типу процессора, объему ОЗУ, дате выпуска компьютера на рынок.
8.Список абонентов сети кабельного телевидения состоит из элементов следующей структуры: фамилия, район, адрес, телефон, номер договора, дата заключения договора, оплата установки, дата последнего платежа. Поиск и сортировка — по району, номеру договора, дате последнего платежа.
9.Сотрудник представлен структурой Person с полями: табельный номер, номер отдела, фамилия, оклад, дата поступления на работу, процент надбавки, процент налоговых сборов, количество отработанных дней в месяце, количество рабочих дней в месяце, начислено, удержано. Поиск и сортировка — по номеру отдела, дате поступления на работу, фамилии.
10.Запись о багаже пассажира авиарейса содержит следующие поля: номер рейса, дата и время вылета, пункт назначения, фамилия пассажира, количество мест багажа, суммарный вес багажа. Поиск и сортировка — по дате вылета, пункту назначения. Найти всех пассажиров, у которых масса багажа выше максимально допустимой.
11.Учетная запись посещения спорткомплекса имеет структуру: фамилия клиента, код и вид спортивного занятия, фамилия тренера, дата и время начала тренировки, количество минут, тариф. Поиск и сортировка — по фамилии клиента, дате начала и количеству минут тренировки (больше или меньше введенного).
12.Одна запись о медикаменте содержит следующие поля: номер аптеки, название лекарства, количество упаковок, имеющиеся в наличии в данной аптеке, стоимость одной упаковки, дата поступления в аптеку, срок хранения (в днях). Поиск и сортировка — по номеру аптеки, наименованию препарата, дате поступления.
13.Одна запись журнала учета содержит поля: код игрушки, название игрушки, тип игрушки, возрастные ограничения (например, от 6 лет), цена за единицу, количество в наличии, дата поступления в магазин, поставщик. Поиск и сортировка — по дате поступления, поставщику, возрастным ограничениям.
14.Один элемент (автомобиль) представляет собой структуру с полями: фамилия владельца, марка автомобиля, требуемая марка бензина, мощность двигателя, объем бака, остаток бензина, объем масла, дата техосмотра. Дана фиксированная цена литра бензина и заливки масла. Поиск и сортировка — по марке автомобиля, мощности двигателя, дате техосмотра.
15.Запись в журнале зимней экзаменационной сессии представляет собой структуру с полями: курс, код группы, фамилия студента, дата поступления, номер зачетной книжки, дисциплина, оценка за экзамен по дисциплине. Поиск и сортировка — по номеру курса, номеру зачетной книжки, дате поступления.
16.Структура одной записи оплаты за коммунальные услуги содержит поля: номер дома, номер квартиры, фамилия владельца, вид платежа (квартплата, газ, вода, электричество), дата платежа, сумма платежа, процент пени, на сколько дней просрочен платеж. Поиск и сортировка — по номеру дома, виду платежа, дате платежа.
17.Одна запись счета за ремонтные работы содержит поля: название фирмы, вид работ, единица измерения, стоимость единицы выполненных работ, дата исполнения, количество выполненных работ. Поиск и сортировка — по названию фирмы, виду работ, дате исполнения.
18.Одна учетная запись журнала стоянки автомобилей имеет структуру: номер автомобиля, фамилия владельца, дата и время начала, дата и время окончания, тариф за час. Поиск и сортировка — по номеру автомобиля, дате начала стоянки, фамилии владельца.
19.Структура записи о сельскохозяйственном продукте содержит поля: наименование района (где выращивают), наименование продукта, площадь (га), урожайность (кг/га), цена за $1$ кг, потери при транспортировке (%), стоимость продукта, предполагаемая дата сбора. Поиск и сортировка — по наименованию района, урожайности, предполагаемой дате сбора.
20.В туристической фирме учетная запись о проданном туре содержит следующие поля: наименование тура, фамилия клиента, цена одного дня (в рублях), дата заезда, количество дней, стоимость проезда, курс валюты, количество валюты, стоимость проезда. Поиск и сортировка — по наименованию тура, стоимости проезда, дате заезда.
21.Сотовый телефон характеризуется названием производителя, номером модели (может содержать цифры и буквы), временем работы аккумулятора, наличием и максимальной емкостью карты памяти, датой выпуска на рынок, стоимостью в рублях и количеством экземпляров, имеющихся в наличии. Поиск и сортировка — по номеру модели, объему памяти на карте, дате выпуска на рынок.
22.Одна запись о предемете мебели содержит следующие поля: артикул (может содержать цифры и буквы), наименование, цвет, стоимость, дата изготовления, количество имеющихся в наличии экземпляров. Поиск и сортировка — по артикулу, количеству экземпляров, дате изготовления.

Лабораторная работа $№1$ предполагает написание программы на языке C++. При заказе работы своего варианта вы получите качественно написанную и хорошо прокомментированную программу.

➡ Дополнительно заказав алгоритм решения вашей задачи (мы крайне рекомендуем это сделать), получите аккуратно оформленный отчет-алгоритм, поясняющий все тонкости решения поставленной задачи.

Стоимость заказа работы

➡ Стоимость программы (командно-текстовый интерфейс) из любого варианта составляет $900$ рублей.

➡ Стоимость программы (визуальный интерфейс) из любого варианта составляет $1\ 500$ рублей.

➡ Стоимость детального алгоритма из любого варианта составляет $1\ 000$ рублей (заказывается опционально на ваше усмотрение, чтобы детально разобраться с решением лабораторной работы, например, не прибегая к консультации репетитора).

Также дополнительно вы можете заказать у нас:

  • Построение аккуратной ГОСТовой блок-схемы. Ориентировочная стоимость $1\ 000$ рублей.
  • Отчет о проделанной работе (иногда в вузах есть требование — предоставить отчет к лабораторной работе). Ориентировочная стоимость $500$ рублей.

Для оформления заказа пишите на почту: proglabs@mail.ru.
Время нашего ответа обычно составляет не более $10$ минут.

ВНИМАНИЕДля заказа программы своего варианта пишите на наш электронный адрес proglabs@mail.ru