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

Методические наказания ко второй части работы




Доработка класса. Это и есть самая творческая часть вашей работы. Здесь для анализа описания класса вам помогут функции класса CString, описание которых вы без труда найдете в справочной системе Visual Studio и/или в разделе «Работа со строками» [3].

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

 

Вот пример использования этой функции:

Temp=" class CBuldog";

CString str=GetFirstWord(Temp);

if(str==_T("class")) // я нашел class!!!

CString MyWords[]={_T("class"), _T("int")};

if(str==MyWords[0]) // и я тоже нашла class!!!

 

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

Удачи – она вам понадобится. На рис. 8. показан результат работы программы по генерации аксессоров.

Рис. 8. Результат работы программы по генерации аксессоров


Алгоритмы

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

Brian W. Kernighan.

 

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

 

Задание

Задайте значения полей не менее 10 объектов класса, который вам попался волею судьбы, запишите их в текстовый файл. Варианты классов заданы в табл.1, но вы можете предложить преподавателю свой вариант класса. Одна запись файла должна содержать данные по одному объекту, что на самом деле удобно. Теперича, в цикле, читаем очередную запись файла, создаем объект класса, присваиваем прочитанные данные соответствующим полям объекта и помещаем объект в контейнер. Тип контейнера указан в вашем варианте задания (см. табл.2).

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

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

Во всех заданиях дату определить как структуру, включающую день, месяц и год в целочисленном формате.

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

Для сортировки или поиска элементов контейнеров надо разработать функциональные объекты. Пример разработки и использования функциональных объектов см. в подразд. «Сортировка массива объектов пользовательского класса» [3]. Там же приведен и пример поиска заданных значений объектов в последовательности. В разделе «Состав библиотеки алгоритмов» вы найдете перечень функций библиотеки алгоритмов.

В вариантах заданий с нечетными номерами необходимо использовать контейнер vector, а с четными – list. Для сортировки элементов vector использовать функцию sort из библиотеки алгоритмов algorithm, а для сортировки элементов списка надо использовать функцию sort самого шаблонного класса list.

Если вы используете для обработки строк класс CString, то вывод текста в консольном приложении можно сделать так:

CString str("Бесплатный сыр");

char buf[256];

Поделиться:





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



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