Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Бесценные методические указания




Программирование односвязного списка

Если в программе предусмотрен контроль всех исходных дан­ных, то преподаватель обязательно найдет способ, чтобы ошибочные данные прош­ли через этот контроль и завалили вашу программу

Закон Мерфи-ОВН

 

Цель работы – освоить разработку консольных приложений Windows, использующих односвязные списки для обработки данных (4 час.).

Задание

По работе [4] изучите подраздел 13.4 «Реализация связного списка как класса», в котором изложен сценарий создания односвязного списка и приведены листинги программы.

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

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

Разработайте собственный класс узел (элемент списка) в соответствии с вашим вариантом задания, приведенным ниже в табл. 9.1. Далее необходимо разработать класс список, который будет оперировать объектами-узлами: добавлять, удалять и т.д. Один из вариантов реализации класса список имеется в работе [4].

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

Ваше приложение должно быть русифицировано, а еще лучше – украинизировано.

Варианты заданий приведены в табл. 9.1. Разрешается выбрать свой вариант задания, но перед выполнением согласовать его с преподавателем.

Предусмотрите в программе два варианта ввода данных, которые должны сохраняться в узлах списка:

§ ввод данных с клавиатуры;

§ чтение данных из текстового файла.

 

Эти варианты ввода должны выбираться с помощью меню.

 

1.2. Описание вариантов заданий

В каждом варианте задания оговаривается содержимое класса узла, т.е. те данные, которые должны там сохраняться, и их типы (если не указан – то int). Кроме того, оговаривается член-функция класса списка, которая должна быть реализована в дополнение к тем, текст которых приведен в приведенном выше источнике.

Таблица 9.1.

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

№ вар. Задание
  Узел списка Трактор с член-данными марка (char *), цвет (char *), объем (float) и мощность двигателя. Реализовать член-функцию «добавление в начало списка нового узла»
  Узел списка Служащий с член-данными ФИО (char *), идентификационный код, возраст. Реализовать член-функцию «удаление первого элемента списка»
  Узел списка Книга с член-данными число страниц, язык издания (char *), наличие иллюстраций (bool). Реализовать член-функцию «удаление последнего элемента списка»
  Узел списка Комната с член-данными ширина (float), длина (double) и цвет стен (char *). Реализовать член-функцию «получение элемента с заданным порядковым номером»
  Узел списка Птица с член-данными вес (float), максимальные высота и скорости, порода (char *). Реализовать член-функцию «удаление элемента с заданным порядковым номером»
  Узел списка Двигатель с член-данными тип двигателя ((char *)бензиновый, дизельный, электрический, комбинированный), фирма-производитель (char *) и мощность двигателя (float). Реализовать член-функцию «замена элемента с заданным порядковым номером на новый»
  Узел списка Вектор с член-данными указатель на целочисленный тип данных, его размер и фактическое число элементов, т.е. массив. Реализовать член-функцию «поиск в списке массива с заданным содержимым». Требуется найти в списке все узлы, которые содержат массив с заданным содержимым. Разные узлы списка должны содержать различное число элементов массива
  Узел списка Муха с член-данными вид (char *), число крыльев и их размах (float). Реализовать член-функцию «вставка элемента перед указанным порядковым номером»
  Узел списка Сок с член-данными марка (char *), производитель (char *) и объем упаковки. Реализовать член-функцию «удаление всех элементов, удовлетворяющих некоторому условию»
  Узел списка Ребенок с член-данными вес, рост и раса (char *). Реализовать член-функцию «вставка элемента после указанного порядкового номера»
  Узел списка Компьютер с член-данными марка (char *), число процессоров, объем оперативной памяти. Реализовать член-функцию «добавление в конец списка нового узла»
  Узел списка Окно с член-данными меню (char *) и число тем меню, наличие инструментальной панели (bool) и строки статуса (bool). Реализовать член-функцию «замена элемента с заданным порядковым номером на новый»
  Узел списка с член-данными ФИО (char *), пол (char), специальность (char *), курс обучения. Реализовать член-функцию «замена элемента с заданным порядковым номером на новый»

 


Перегрузка векторных и матричных операций

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

Закон Мерфи

Цель работы – практически освоить программирование перегрузки операций на примере выполнения математических операций над векторами и матрицами (4 час.).

Задание

Разработайте консольное приложение, а если хотите – приложение с графическим интерфейсом пользователяJ, в котором реализуются операции над векторами и матрицами, оформленные как перегруженные «классовые» операции в соответствии с вашим индивидуальным заданием. Само собой разумеется, что вы должны разработать классы матриц и векторов и в них реализовать перегруженные операции. Для хранения значений элементов матриц и векторов необходимо использовать указатели.

Любое приложение должно предоставлять очеееень привередливому пользователю, например, тому же добрейшему преподуL, следующие бесплатные, т.е. даровые, услуги:

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

Ø возможность ввода размеров векторов, матриц и других параметров;

Ø реализовать перегруженную операцию [] доступа к элементам векторов и матриц;

Ø в каждом варианте задания необходимо реализовать перегруженные операции как компонентные функции, дружественные и глобальные;

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

 

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


Обратите внимание, что здесь проиллюстрирована операция умножения матриц и результирующая матрица «настоящая».

Бесценные методические указания

Для того чтобы в описании и реализации своих классов можно было использовать, например, стандартный ввод и вывод с помощью потоков cin и cout, начните файл с таких объявлений:

// Файл Matrix.h

#pragma once

#include "stdafx.h" // Добавить

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...