Скачиваний:
23
Добавлен:
01.04.2014
Размер:
53.76 Кб
Скачать

Министерство образования Республики Беларусь

Учреждение образования

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Контрольная работа по курсу

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

Вариант № 3

Разработать класс содержащий:

-компонентные данные

-методы

а) конструктор по умолчанию

б) конструктор с параметрами

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

г) деструктор

д) методы класса для работы с данными

Данные класса должны иметь атрибут private

Задача 1

Создать 2 объекта разработанного класса. Одной из компонент класса является символьная строка. В результате выполнения программы в строке первого объекта исключить символы, введенные с клавиатуры. Содержимое объектов (их строки) до и после обмена вывести на экран.

#include "stdafx.h"

#include <string.h>

#include <iostream>

using namespace std;

class MyClass

{

private:

char str[100], strdel[100];

public:

MyClass(){};

MyClass(char *);

~MyClass();

void Show ();

void Input();

void Input2();

void Delete();

};

MyClass::MyClass(char *s)

{

strcpy(str,s);

}

MyClass::~MyClass()

{

strcat(str,"");

}

void MyClass::Show()

{

cout << "New String: " << str << endl;

}

void MyClass::Input2()

{

cout << "Enter Symbol for Deleted: ";

cin >> strdel;

}

void MyClass::Input()

{

cout << "Enter String: ";

cin >> str;

}

void MyClass::Delete()

{

char st1[100]="", st2[100]="";

int c=0;

for (int i = 0 ; i < strlen(strdel); i++)

{

strcpy(st1,str);

for (int j = 0; j < strlen(st1); j++)

if (strdel[i] != st1[j])

{

st2[c] = st1[j];

c++;

};

strcpy(str,st2);

// очистка буфера для вывода

memset(st2, 0, sizeof(st2));

c=0;

}

}

int main()

{

MyClass E1, E2;

E1.Input();

E1.Input2();

E1.Delete();

E1.Show();

getch();

return 0;

}

Задача 2

Создать 2 объекта разработанного класса. Одной из компонент класса является символьная строка. В результате выполнения программы в обоих объектах поменять местами первое и последнее слова строки. Содержимое объектов (их строки) до и после обмена вывести на экран.

#include "stdafx.h"

#include <string.h>

#include <iostream>

using namespace std;

class MyClass

{

private:

char str[100], buf1[100], buf2[100], buf3[100];

int length;

public:

MyClass();

MyClass(char *);

~MyClass();

void Show ();

int SearchPos(char*, int, char); // метод для поиска позиции

void Input();

void Revers(); //метода для замены слов местами

};

MyClass::MyClass()

{

memset(str, 0, sizeof(str));

memset(buf1, 0, sizeof(buf1));

memset(buf2, 0, sizeof(buf2));

memset(buf3, 0, sizeof(buf3));

}

MyClass::MyClass(char *s)

{

strcpy(str,s);

}

MyClass::~MyClass()

{

memset(str, 0, sizeof(str));

}

void MyClass::Show()

{

cout << "New String: " << str << endl;

}

void MyClass::Input()

{

int n=0;

char ch;

cout << "Enter String: ";

// цикл для записи предложения с пробелами (выход нажание кл. ENTER)

do

{

ch = getche();

if (ch != 13)

str[n++] = ch;

else

{

str[n++] = '\0';

cout << endl;

};

}while (ch != 13);

length=(int)strlen(str);

}

int MyClass::SearchPos(char *string, int len, char regim)

{ // gegim: 'B' - begin (первое слово), 'E' - end (последнее)

int i=0;

if (regim == 'B')

{

for (i=0; i<len; i++)

if (string[i]==' ') {break;}

}else{

for (i=len; i>0; i--) if (string[i]==' '){break;}

}

return i;

}

void MyClass::Revers()

{

for(int i=0; i<(SearchPos(str,length,'B')); i++) // записываем первое слово

buf1[i] = str[i];

int k=0;

int j=0;

int s = SearchPos(str,length,'E')+1; // чтобы не потерять последний пробел

for(int i = (SearchPos(str,length, 'B')); i<s; i++){ //записываем то что между первым и последним словами

buf2[k]=str[i];

k++;

}

if(str[length-1]=='.') length--; // проверка стоит ли вконце точка

for(int i = s; i < length; i++){ //записываем последнее слово

buf3[j]=str[i];

j++;

}

if(str[length]=='.') buf1[strlen(buf1)]='.';

strcpy(str,buf3);

strcat(str,buf2);

strcat(str,buf1);

}

int main()

{

MyClass E1, E2;

E1.Input();

E1.Revers();

E1.Show();

getch();

return 0;

}

Задача 3

Создать несколько объектов (например а и b) разработанного класса. Класс – символьная строка. Реализовать для объектов данного класса перегрузку операции + (c=a+b). Содержимое объектов (a,b,c, их строк), до и после операции, вывести на экран.

#include "stdafx.h"

#include <string.h>

#include <iostream>

using namespace std;

class MyClass

{

private:

char str[100];

public:

MyClass(){strcpy(str,"");};

MyClass(char *);

~MyClass();

MyClass operator+(MyClass&);

void operator=(MyClass&);

void Show ();

void Input();

};

MyClass::MyClass(char *s)

{

strcpy(str,s);

}

MyClass::~MyClass()

{

strcpy(str,"");

}

void MyClass::Show()

{

cout << "New String: " << str << endl;

}

void MyClass::Input()

{

cout << "Enter String: ";

cin >> str;

}

MyClass MyClass::operator +(MyClass &MC)

{

//копирование с добавление в конец строки

strcat(str,MC.str);

return *this;

}

void MyClass::operator =(MyClass &MC)

{

strcpy(str,MC.str);

}

int main()

{

MyClass a, b, c;

a.Input();

b.Input();

c=a+b;

c.Show();

getch();

return 0;

}

Задача 4

Создать несколько объектов (например, a и b) разработанного класса. Класс – символьная строка. Реализовать для объектов данного класса перегрузку операции -- (b=a--). Содержимое объектов (a,b, их строк), до и после выполнения операции, вывести на экран.

#include "stdafx.h"

#include <string.h>

#include <iostream>

using namespace std;

class MyClass

{

private:

char str[100];

public:

MyClass(){strcpy(str,"");};

MyClass(char *);

~MyClass();

MyClass operator--();

void operator=(MyClass&);

void Show ();

void Input();

};

MyClass::MyClass(char *s)

{

strcpy(str,s);

}

MyClass::~MyClass()

{

strcpy(str,"");

}

void MyClass::Show()

{

cout << "New String: " << str << endl;

}

void MyClass::Input()

{

cout << "Enter String: ";

cin >> str;

}

MyClass MyClass::operator --()

{

char str1[100]="";

for (int i=0; i < strlen(str)-1; i++)

str1[i]=str[i];

//копирование с заменой

strcpy(str,str1);

return *this;

}

void MyClass::operator =(MyClass &MC)

{

strcpy(str,MC.str);

}

int main()

{

MyClass a, b;

a.Input();

b=a--;

b.Show();

getch();

return 0;

}