Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OOP / лаб 4

.docx
Скачиваний:
30
Добавлен:
10.02.2016
Размер:
16.81 Кб
Скачать

Министерство образования и науки Украины

Одесский национальный политехнический университет

Кафедра системного программного обеспечения.

Протокол лабораторной работы № 4

По дисциплине:

Объектно-ориентированное программирование

Вариант 10

Выполнил

студент AC-121

Куценко Дмитрий Сергеевич

Преподаватель Левченко А.Ю

Одесса 2013 (год)

Лабораторная работа №4 Переопределение операций.

Исходные данные для лабораторной работы

Класс Строка должен включать данное типа строка символов - S и уметь обрабатывать параметр методов типа строка символов - S1. Для этого в нём должны быть реализованы следующие операции над строками.

Вариант Набор операций

10 28,8,20,44

8.Замена всех символов с нечетными номерами на некоторый символ.

20. Выполнение операции “равно” для двух строк.

28. Замена в строке всех строчных букв алфавита на прописные.

44. Замена в строке последних n символов на символ с наименьшим кодом из входящих в строку.

Выполнение лабораторной работы

Создать класс Строка, который должен содержать два или три конструктора, деструктор, метод распечатки данных.

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

Создать объекты класса и продемонстрировать использование всех переопределенных операций.

Код программы:

/*Замена всех символов с нечетными номерами на некоторый символ.

Выполнение операции “равно” для двух строк.

Замена в строке всех строчных букв алфавита на прописные.

Замена в строке последних n символов на символ с наименьшим кодом из входящих в строку.*/

#include<iostream>

#include<string>

#include<cctype>

using namespace std;

class Stroka

{

public:

char s[256];

public:

Stroka() //Конструктор

{

}

Stroka(char *str) //Конструктор

{

strcpy_s(s, str);

}

friend Stroka operator*(Stroka s1)

{

Stroka str;// форм новую строку

int i;

for (i = 0; i < strlen(s1.s); i ++)

{

str.s[i] = toupper(s1.s[i]);//присв. верх. рег.

}

str.s[strlen(s1.s)] = 0;

return str;

}

friend Stroka operator+(Stroka s1)

{

Stroka str;// форм новую строку

int i;

strcpy_s(str.s, s1.s);

for (i = 0; i < strlen(s1.s); i +=2)

{

str.s[i] = '@';//замена символа

}

str.s[strlen(s1.s)] = 0;

return str;

}

friend Stroka operator-(Stroka s2, int n)

{

Stroka str;

strcpy_s(str.s, s2.s);

char min = str.s[0];

for (int i = 1; i < strlen(str.s); i ++)

if (str.s[i] < min)

min = str.s[i];//

for (int i = strlen(str.s) - n; i < strlen(str.s); i ++)

str.s[i] = min;

return str;

}

friend bool operator==(Stroka s1, Stroka s2)

{

cout << s1.s << endl << s2.s << endl;

if (!strcmp(s1.s, s2.s))

return true;

return false;

}

~Stroka() {}

};

void main()

{

Stroka s1, s2;

char sa[256],sb[256]; int n;

setlocale( LC_ALL,"Russian" );

cout<<"Введите строку 1:"<< endl;

cin>>sa;

strcpy_s(s1.s, sa);

cout<<"Введите строку 2:"<< endl;

cin>>sb;

strcpy_s(s2.s, sb);

cout<<"Выполнение операции “равно” для двух строк."<< endl;

cout<<"Строки равны?"<< endl;

if (s1 == s2)

cout << "Ответ: ДА" << endl;

else

cout << "Ответ: НЕТ" << endl;

system("pause");

cout<<"Замена в строке всех строчных букв алфавита на прописные."<< endl;

s1 = *s1;

cout << s1.s<<endl;

system("pause");

cout<<"\nЗамена всех символов с нечетными номерами на некоторый символ"<< endl;

s1= +s1;

cout << s1.s<<endl;

system("pause");

cout<<"\nЗамена в строке последних n символов на символ с наименьшим кодом из входящих в строку."<< endl;

cout<<"Введите количество последних n символов:"<< endl;

cin>>n;

s2 = s2 - n;

cout << s2.s<<endl;

}

Соседние файлы в папке OOP