Samp ob (88) ; // инициализация объекта значением 88

      Комментарии к записи Samp ob (88) ; // инициализация объекта значением 88 отключены

Samp obarr [10] ; // неинициализируемый 10-элементный массив

// }

Задание 2.2(для всех)

Определите класс строка с двумя член-данными: char *p и int len,где char*p- указатель на строку, а int len — длина строки.

Для данного класса : определить:

  • один конструктур и деструктор( предусмотреть выдачу сообщения об их работе);
  • переопределить операцию + для сложения объектов класса;
  • определить член функцию, выводящую строку на экран.

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

Указание: при написании программы использовать стандартные библиотечные функции strcpy()и strcat().

char * strcpy(char *sp, char *si) — копирует строку si в строку sp, включая ‘\0’; возвращает sp.

Char * strcat(char *sp,char *si) — приписывает строку si к строке sp; возвращает sp.

Примеры выполнения практических заданий

Постановка задачи 2.1

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

Структурная схема класса (представить в виде UML-диаграмм)

Член-данные Класс mycl Член-функции
Целое число: x Конструктор по умолчанию: mycl() Конструктор с инициализацией: mycl ( int n ) Вывод значения: getx()

Исходный текст программы

#include

class mycl

{ int x;

public:

// перегрузка конструктора двумя способами

mycl ( ) { x = 0 ;} // нет инициализации

mycl ( int n ) { x = n ;} // инициализация

int getx ( ) { return x ; } };

int main ( )

{ mycl a1 ( 5 ) ; // объявление объекта а1 с начальным значением

mycl a2 ; // объявление объекта а2 без начального значения

cout

cout

return 0 ; }

Результаты выполнения программы

значение a1: 5

значение a2: 0

Постановка задачи 2.2

Создайте класс, для работы со строкой. Набор данных, описывающий такой объект как символьная строка должен состоять:

O собственно строка;

O длина строки.

Переопределим “ + “ так, чтобы можно было складывать (сцеплять) символьные строки.

Структурная схема класса (представить в виде UML-диаграмм)

Член-данные Класс String Член-функции
Собственно строка: s Длина строки: len Функция _ операция с спецификацией friend: operator + ()

Исходный текст программы

#include

#include

const LEN = 80 ;

class String {

public :

char s [LEN] ;

int len ;

friend String operator + (String S1, String S2);

} ;

String operator + (String S1, String S2)

{String TmpS ;

if ( (TmpS.len = S1.len + S2.len) = LEN)

{ TmpS.s[0] = ‘\0’ ; TmpS.len = 0 ;}

else

{ strcpy (TmpS.s, S1.s) ; strcat (TmpS.s, S2.s) ; }

return TmpS ;

}

void main ( )

{ String S1, S2, S3 ;

strcpy (S1.s, “перегрузка операций — ”) ;

S1.len = strlen(S1.s) ;

strcpy (S2.s, “классная вещь !”) ;

S2.len = strlen(S2.s) ;

printf(“Были строки: \n %s \n %s \n с длинами %d и %d \n”, S1.s,S2.s, S1.len, S2.len) ;

S3 = S1 + S2 ; // генерируется код, по вызову: operator + (s1, s2) ;

printf(“Получилась строка: \n %s\n длиной %d \n”, S3.s, S3.len) ;

}

Результаты выполнения программы.

Были строки:

перегрузка операций –

Классная вещь !

С длинами 22 и 15

Получилась строка:

Перегрузка операций – классная вещь !

Длиной 37

Б. Основное задание

Варианты основного задания

  1. Векторв пятимерном евклидовом пространстве задается пятеркой своих координат.Реализовать:

a)сложение (вычитание) векторов;

b)скалярное произведение векторов;

c)векторное произведение векторов (операция % );

d)умножение вектора на скаляр.

Опишите класс и операции для работы с объектами этого класса. Продемонстрируйте выполнение операций.

  1. Создатькласс “вектор_целых_чисел”, определить для него операции:

a)ввод элементов вектора с консоли (оператор );

b)вывод элементов вектора на экран или в файл (оператор

c)доступ к заданному элементу (оператор [] );

Продемонстрируйте выполнение операций с объектами этого класса.

  1. Создатькласс “вектор_целых_чисел”, определить для него операции:

a)сложение векторов с сохранением значения в одном из них (операция += );

b)сложение векторов с сохранением значения в новом векторе (операция + );

c)вычитание векторов с сохранением значения в одном из них (операция -= );

Продемонстрируйте выполнение операций с объектами этого класса.

  1. Создатькласс “Строка символов”. Реализовать операции:

a)сравнение строк (операция = = );

b)удаления из строки указанного символа (операция — );

c)переворота строки (операция ~ ).

Кроме того членом класса сделать также функцию с именем strset ( ) для удаления из первой строки всех символов, встречающихся во второй строке.

Продемонстрируйте выполнение операций с объектами этого класса.

  1. Создатькласс “Строка_Си”, определить для него операции:

a)слияния строк (операция + );

b)сравнение строк на равенство (операция = = );

c)удаления из строки подстроки (операция — );

d)удаления из строки всех символов, содержащихся в строке-делителе (операция / );

e)копирования строки

f)функцию at (char *substr, char *dest, int i ), возвращающую номер позиции i-того вхождения строки substr в строкуdest.

Продемонстрируйте выполнение операций с объектами этого класса.

  1. Вбританском формате дата задается как число/месяц/год. Реализовать сучетом високосных годов:

a)сложение даты и определенного пользователем количества дней;

b)вычитание из даты определенного пользователем количества дней;

c)вычитание числа дней, прошедших между двумя датами (оператор % ).

Опишите класс и операции для работы с объектами этого класса. Продемонстрируйте выполнение операций.

  1. Времязадается в формате час.минута.секунда.. Реализовать следующиеоперации (учесть переход через 24ч ):

a)сложение времени и определенного пользователем количества секунд;

b)вычитание из времени указанного пользователем количества секунд;

c)вычитание из одного момента времени другого;

d)подсчет числа секунд, между двумя моментами времени, лежащими в пределах одних суток (оператор % ).

Опишите класс и операции для работы с объектами этого класса. Продемонстрируйте выполнение операций.

  1. Ввестикласс для работы с прямоугольной матрицей. Реализовать операции:

a)сложение (вычитание) двух матриц (операции +, — );

b)умножение двух матриц (операции * );

c)функцию det ( ) вычисления определителя матрицы;

d)функцию ort ( ) проверки ортогональности строк матрицы;

e)функцию transp ( ) получения транспонированной матрицы.

Продемонстрируйте выполнение операций с объектами этого класса.

  1. Ввестикласс для работы с прямоугольной матрицей. Реализовать операции:

a)ввод матрицы с консоли (оператор );

b)вывод матрицы на экран или в файл (оператор

c)доступ к элементу (оператор [] []);

d)функцию revers ( ) получения обратной матрицы;

e)функцию self_value ( ) получения собственных значений матрицы;

f)функцию self_vector ( ) получения собственных значений матрицы.

Продемонстрируйте выполнение операций с объектами этого класса.

  1. Создатькласс “система линейных уравнений”, определить для него операции:

a)решение системы методом Гаусса;

b)решение системы методом Крамера;

Продемонстрируйте выполнение операций с объектами этого класса.

Статьи к прочтению:

Обзор Модов GTA San Andreas #88 Game Object Editor v2.1!


Похожие статьи: