Люди добрые, помогите с решением задачек студенту..кто чем может.
задача 1
Вариант 15
Из входного потока вводится произвольное число строк. Длина каждой строки не превышает 80 символов. Конец ввода определяется концом файла.
Для каждой строки сформировать новую строку, поместив в нее группы символов исходной строки, расположенных между двумя заданными символами, первым из которых является первый символ строки, вторым - последний символ. Пробелы в исходной строке игнорировать. Выделенные группы разделить одним пробелом. Полученную строку вывести на экран.
Разработать следующие варианты программы:
1. каждая строка представлена массивом символов, доступ к элементам массива осуществляется с помощью указателей;
1.1. при обработке строки (строк) использовать библиотечные функции (<string.h>);
1.2. библиотечные функции обработки строки не использовать.
2. каждая строка представлена списком; первое поле элемента списка - символ строки; второе - указатель на следующий элемент списка или NULL в конце списка;
2.1. при обработке исходного списка (исходных списков) формировать новый список (списки);
2.2. список результата формировать, модифицируя исходный список.
Примечания:
1. Ввод строк должен быть организован с помощью метода cin.getline(куда, максимум_сколько). Метод cin >> куда не использовать!
2. Логически-законченные части алгоритма программы оформлять функциями с параметрами (например, пропуск разделителей, построении списка, вывод списка, удаление списки и др.).
сложнее..
задача 2
Вариант 15
1. Разработать класс "очередь параметров" в соответствии со следующим заданием:
Состояние класса -
Очередь параметров представляется в виде вектора (массива). Параметром очереди могут быть данные сложного типа, например, первое поле число, второе поле строка символов фиксированной длины. Для описания параметра очереди целесообразно использовать структуру. Память под массив выделяется статически, во время компиляции, и задается массивом фиксированного размера.
Протокол класса -
Определяет возможности создания и инициализации экземпляров класса и правила их использования (методы класса).
Предусмотреть следующие возможности:
• создание экземпляров структуры (параметра) с инициализацией начальным состоянием по умолчанию;
• пустой конструктор для инициализации экземпляров и массивов экземпляров класса (очереди) по умолчанию;
• создание экземпляров класса (очереди) с инициализацией заданным количеством параметров из массива параметров;
• ввод значения параметра из входного потока (с помощью перегруженного оператора >> );
• ввод (добавление) параметра в очередь из входного потока (с помощью перегруженного оператора >> );
• вывод значения параметра в выходной поток (с помощью перегруженного оператора << );
• вывод содержимого очереди (в порядке следования) в выходной поток (с помощью перегруженного оператора << );
• добавление параметра, заданного переменной, в очередь (с помощью перегруженного оператора += );
• выборка параметра из очереди – копирование параметра в переменную соответствующего типа с удалением из очереди (с помощью перегруженного оператора ( ) );
• проверка состояния очереди (пуста, частично заполнена или полна).
2. Проектирование класса рекомендуется начать с представления состояния класса, учитывающего заданные операции, а затем реализации конструкторов и перегруженного оператора вывода. Для отладки и исчерпывающего тестирования других методов разработанного класса реализовать диалоговую программу, которая позволяет вводить параметры, отлаживаемых методов.
3. Повторить разработку класса при условии, что память под строку символов в параметре и массив структур необходимой длины выделяется динамически, во время выполнения программы (с помощью оператора new; память задается указателем на char в структуре и указателем на структуру в состоянии класса).
Дополнить интерфейс класса следующими возможностями:
• ввести в состояние класса размер очереди, который всякий раз при переполнении очереди увеличивать;
• память под данные поля информации выделять динамически с помощью оператора new;
• создание экземпляра класса (очереди) с его инициализацией другим экземпляром класса (копирующий конструктор) для параметра и очереди;
• переопределение экземпляра класса (с помощью перегруженного оператора присваивания) для параметра и очереди.
4. Написать прикладную программу, использующую разработанный класс.
Примечание: пункты задания, отмеченные (*), являются дополнительными.
просто пипец задачка..
задача 3
Вариант 15 Туристическое бюро
Разработать приложение, предоставляющее информацию об различных туристических маршрутах и их реализации. Информация о туристическом маршруте – экскурсии хранится в некотором описателе экскурсии. Туристические маршруты делятся на однодневные и многодневные экскурсии.
Описатель однодневной экскурсии содержит: название экскурсии; дата экскурсии; стоимость одно места; максимальное число экскурсантов в группе и число проданных мест; маршрут экскурсии.
Описатель многодневной экскурсии содержит: название экскурсии; дата начала экскурсии и число дней; стоимость одно места; максимальное число экскурсантов в группе и число проданных мест; указатель на динамический массив описателей маршрута для каждого дня экскурсии.
Описатель маршрута экскурсионного дня – количество пунктов экскурсии и указатель на динамический массив описателей пункта экскурсии. Описатель пункта экскурсии – название населённого пункта, название экскурсионного объекта, время начала и продолжительность экскурсии (в часах) на экскурсионном объекте.
Информация обо всех туристических маршрутах сведена в перемешанную таблицу (перемешивание сцеплением). Доступ к элементам таблицы осуществляется по «коду» экскурсии. В таблице могут быть несколько описателей экскурсии с определённым «кодом», которые планируются на различные даты (версия). Каждый элемент таблицы содержит указатель на описатель экскурсии.
Обеспечить выполнение следующих операций.
Для таблицы описателей экскурсий:
включить новый элемент в таблицу по «коду» и «дате»;
исключить элемент из таблицы по «коду» и «дате»;
найти элемент в таблице по «коду» и «дате»;
показать содержимое таблицы.
Для любой экскурсии:
показать информацию об экскурсии;
получить (вернуть в качестве результата) информацию о количестве проданных мест; изменить информацию о количестве проданных мест;
получить (вернуть в качестве результата) дату начала экскурсии; изменить «дату».
Для любого маршрута:
получить (вернуть в качестве результата) название населённого пункта; получить название экскурсионного объекта;
получить время начала экскурсии; получить продолжительность экскурсии.
Для приложения:
объявить новый экскурсионный маршрут;
отменить экскурсию по указанному туристическому маршруту для указанной даты;
модифицировать информации о местах для экскурсии (оформить покупку, отказ);
(*) выбрать ближайшую экскурсию по указанному туристическому маршруту (относительно указанной даты), используя класс-итератор.
Порядок выполнения работы
1. На основе описания задачи определить состав классов.
2. Разработать иерархию классов и схему их взаимодействия.
3. Для каждого класса определить его состояние и необходимые методы.
4. Разработать и отладить все классы. Приложение реализовать в виде простой диалоговой программы.
5. (*) Разработать и отладить класс, реализующий работу приложения. Предусмотреть в классе возможность сохранения таблицы в файле и ее восстановления.
6. (*) Разработать и отладить класс-итератор, с помощью которого реализовать дополнительные операции.
Примечание: пункты задания, отмеченные (*), являются дополнительными.