4.1.1 Разработайте класс person, содержащий члены для хранения имени, возраста, пола, телефона. Напишите функции-члены, которые могут изменять эти члены данных по отдельности. Напишите функцию-член person::print(), которая печатала бы красиво отформатированные данные о человеке.
4.1.2. Используйте структуру ch_stack, описанную в теме «Доступ: закрытый и открытый». Напишите функцию
void reverse(const char sl[],char s2[]);
Строки s1 и s2 должны быть одинакового размера. Строка s2 должна превращаться в обращённую копию строки s1. Внутри reverse используйте ch_stack для выполнения обращения.
4.1.3. Для типа ch_stack из темы «Доступ: закрытый и открытый», запишите как функции-члены:
//Помещение n символов из s1 в ch_stack void push(int n,const char sl[]);
//Извлечение n символов из ch_stack в символьную строку void pop(int n,char sl[]);
Подсказка: He забудьте вставить символ конца строки перед тем, как её выводить.
4.2. Представьте как класс код deque (двусторонняя очередь, допускающая вход и выход с обоих концов)
class deque
{ public:
void reset(); private:
char c[max_len]; int bottom,top;
};
void reset(deque* deq)
{
deq->top=deq->bottom=max_len/2; deq->top—;
}
Объявите и реализуйте функции push_t, pop_t, push_b, pop_b, out_stack, top_of, bottom_of, empty и full. Функция push_t служит для помещения элемента в начало очереди; функция push_b
— в конец. Функция out_stack должна выводить всю очередь от начала до конца. Функции pop_t и рор_b отвечают за извлечение элементов из начала и конца очереди соответственно. Ситуация, когда начало очереди опускается ниже конца, означает пустую очередь. Протестируйте каждую функцию.
4.3. Расширьте тип данных deque, добавив функцию-член relocate. Если очередь заполнена целиком, вызывается функция relocate, и содержимое deque перемещается в пустую область памяти, выровненную относительно центра max_len/2 массива s. Прототип этой функции должен выглядеть так:
//Возвращает true, если завершается успешно,
//false — если нет bool deque::relocate()
4.4.1. Напишите функцию, которая меняет содержимое двух строк. Если вы поместите символьную строку в ch_stack, а затем извлечете её, она станет обращённой. Но при обмене строками нам нужен неизменный порядок символов. Используйте deque для выполнения такого обмена. Строки будут храниться в символьных массивах одинакового размера, но сами строки могут быть разной длины. Вот прототип этой функции:
void swap(char sl[],char s2[]);
4.4.2. Допишите функции-члены:
complex complex::plus(complex a, complex b);
//выполняет бинарное сложение с=plus(a,b) complex complex::mpy(complex a, complex b)
//выполняет бинарное умножение с=mpy(a,b)
4.4.3. Перепишите класс twod из темы «Контейнеры и доступ к их содержимому» так, чтобы он мог содержать комплексные значения. Проверьте его, инициализовав этот контейнер набором комплексных чисел, и произведите контрольный вывод. Затем выполните транспонирование и выведите результат.
4.4.4. Напишите класс chess_piece (шахматная фигура), который описывал бы положение фигуры на шахматной доске. Шахматная доска имеет вертикали от а до h и горизонтали от 1 до 8. Вначале белый король стоит на el, а черный — на е8. Проверьте ваш класс, введя начальные позиции для всех 32 шахматных фигур и напечатав содержимое доски.
4.4.5. Перепишите вложенный цикл функции transpose()из темы «Контейнеры и доступ к их содержимому», заменив где это возможно вызовы функции twod;:element_lval() на вызов функции twod::element_rval(). Затем перепишите этот цикл, заменив три оператора присваивания на обращение к
inline void swap(doubled, double&);
Проверьте все три версии.
4.4.6. Напишите функцию-член для умножения матриц, используя переменные twod. twod twod::mmpy(const twod& a,const twod& b);
Прикрепленные файлы: |
|
|---|---|
|
Администрация сайта не рекомендует использовать бесплатные работы для сдачи преподавателю. Эти работы могут не пройти проверку на уникальность. Узнайте стоимость уникальной работы, заполните форму ниже: Узнать стоимость |
|
Скачать файлы: |
|
|
|
