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
Б. Основное задание
Варианты основного задания
- Векторв пятимерном евклидовом пространстве задается пятеркой своих координат.Реализовать:
a)сложение (вычитание) векторов;
b)скалярное произведение векторов;
c)векторное произведение векторов (операция % );
d)умножение вектора на скаляр.
Опишите класс и операции для работы с объектами этого класса. Продемонстрируйте выполнение операций.
- Создатькласс “вектор_целых_чисел”, определить для него операции:
a)ввод элементов вектора с консоли (оператор );
b)вывод элементов вектора на экран или в файл (оператор
c)доступ к заданному элементу (оператор [] );
Продемонстрируйте выполнение операций с объектами этого класса.
- Создатькласс “вектор_целых_чисел”, определить для него операции:
a)сложение векторов с сохранением значения в одном из них (операция += );
b)сложение векторов с сохранением значения в новом векторе (операция + );
c)вычитание векторов с сохранением значения в одном из них (операция -= );
Продемонстрируйте выполнение операций с объектами этого класса.
- Создатькласс “Строка символов”. Реализовать операции:
a)сравнение строк (операция = = );
b)удаления из строки указанного символа (операция — );
c)переворота строки (операция ~ ).
Кроме того членом класса сделать также функцию с именем strset ( ) для удаления из первой строки всех символов, встречающихся во второй строке.
Продемонстрируйте выполнение операций с объектами этого класса.
- Создатькласс “Строка_Си”, определить для него операции:
a)слияния строк (операция + );
b)сравнение строк на равенство (операция = = );
c)удаления из строки подстроки (операция — );
d)удаления из строки всех символов, содержащихся в строке-делителе (операция / );
e)копирования строки
f)функцию at (char *substr, char *dest, int i ), возвращающую номер позиции i-того вхождения строки substr в строкуdest.
Продемонстрируйте выполнение операций с объектами этого класса.
- Вбританском формате дата задается как число/месяц/год. Реализовать сучетом високосных годов:
a)сложение даты и определенного пользователем количества дней;
b)вычитание из даты определенного пользователем количества дней;
c)вычитание числа дней, прошедших между двумя датами (оператор % ).
Опишите класс и операции для работы с объектами этого класса. Продемонстрируйте выполнение операций.
- Времязадается в формате час.минута.секунда.. Реализовать следующиеоперации (учесть переход через 24ч ):
a)сложение времени и определенного пользователем количества секунд;
b)вычитание из времени указанного пользователем количества секунд;
c)вычитание из одного момента времени другого;
d)подсчет числа секунд, между двумя моментами времени, лежащими в пределах одних суток (оператор % ).
Опишите класс и операции для работы с объектами этого класса. Продемонстрируйте выполнение операций.
- Ввестикласс для работы с прямоугольной матрицей. Реализовать операции:
a)сложение (вычитание) двух матриц (операции +, — );
b)умножение двух матриц (операции * );
c)функцию det ( ) вычисления определителя матрицы;
d)функцию ort ( ) проверки ортогональности строк матрицы;
e)функцию transp ( ) получения транспонированной матрицы.
Продемонстрируйте выполнение операций с объектами этого класса.
- Ввестикласс для работы с прямоугольной матрицей. Реализовать операции:
a)ввод матрицы с консоли (оператор );
b)вывод матрицы на экран или в файл (оператор
c)доступ к элементу (оператор [] []);
d)функцию revers ( ) получения обратной матрицы;
e)функцию self_value ( ) получения собственных значений матрицы;
f)функцию self_vector ( ) получения собственных значений матрицы.
Продемонстрируйте выполнение операций с объектами этого класса.
- Создатькласс “система линейных уравнений”, определить для него операции:
a)решение системы методом Гаусса;
b)решение системы методом Крамера;
Продемонстрируйте выполнение операций с объектами этого класса.
Статьи к прочтению:
Обзор Модов GTA San Andreas #88 Game Object Editor v2.1!
Похожие статьи:
-
Правила именования объектов в vba
Этапы подготовки задачи к реализации на ПК В процессе решения задачи с использованием персонального компьютера можно выделить несколько основных этапов,…
-
Инициализация статических член-данных
Пример. // Пример встраиваемой функции#include using namespace std; inline int even (int x){return ! (x%2);int main (){if (even (10)) cout ? 10 является…