Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ”ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра “Інформаційні системи та мережі”
Лабораторна робота №2
Оголошення та структура класу
Мета роботи полягає у вивченні оголошення класу та рівнів захисту
його елементів.
Послідовність роботи
1. Ознайомитися з особливостями оголошення класу та його об’єктів.
2. Згідно із завданням написати програму мовою С++ та реалізувати її
на комп’ютері.
3. Оформити звіт по роботі
Завдання
16. Розробити клас – РЯДОК СИМВОЛІВ. У закритій частині визначити вказівник на символьний тип (на початок рядка). Визначити конструктори, деструктори та методи введення-виведення, конкатенацій рядка, порівняння рядків, перевірки входження підрядка у рядок.
Текст програми
#include <iostream>
#include <math.h>
using namespace std;
class STRING{
private:
char * str;
public:
STRING() { str = NULL; }
STRING(char * _str) { str = new char[strlen(_str)]; strcpy(str, _str); }
~STRING() { }
void Concat(const STRING&);
int Compare(const STRING&);
bool Include(const STRING&);
friend istream& operator>>(istream&, STRING&);
friend ostream& operator<<(ostream&, STRING&);
};
void STRING::Concat(const STRING& b) {
char * strN = new char[strlen(str)+strlen(b.str)];
strcpy(strN, str);
strcat(strN, b.str);
str = strN;
}
int STRING::Compare(const STRING& b) {
return strcmp(str, b.str);
}
bool STRING::Include(const STRING& b) {
int n = strlen(str), m = strlen(b.str);
for (int i = 0; i < n; i++)
{
int j = 0;
while(i+j <n && j<m && str[i+j] == b.str[j]) j++;
if(j == m) return true;
}
return false;
}
istream& operator>>(istream& stream, STRING& p){
char *c = new char[100];
cout<<"Enter string: "; stream>>c;
p.str = new char[strlen(c)];
strcpy(p.str, c);
delete [] c;
return stream;
}
ostream& operator<<(ostream& stream, STRING& p){
stream<<"\""<<p.str<<"\"";
return stream;
}
void main(){
STRING s1, s2("123456"), s3("999");
cout<<"Enter S1:\n"; cin>>s1;
cout<<"S1: "<<s1<<"\tS2: "<<s2<<"\tS3: "<<s3<<endl;
cout<<s2<<" Include "<< s3 <<" - "<<s2.Include(s3)<<endl;
cout<<s2<<" Include "<< s1 <<" - "<<s2.Include(s1)<<endl;
cout<<s2<<" Concat "<< s1 <<" - ";
s2.Concat(s1);
cout<<s2<<endl;
cout<<s2<<" Include "<< s3 <<" - "<<s2.Include(s1)<<endl;
cout<<endl;
cout<<s2<<" Compare "<< s3 <<" - "<<s2.Compare(s3)<<endl;
cout<<s2<<" Compare "<< s2 <<" - "<<s2.Compare(s2)<<endl;
cout<<s3<<" Compare "<< s2 <<" - "<<s3.Compare(s2)<<endl;
system("pause");
}
Результат виконання
/
Висновок
При виконанні даної лабораторної роботи я вивчив оголошення класу та рівні захисту його елементів.