DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Одинарне наслідування класів.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Не вказано
Кафедра:
Інформаційних систем та мереж (ІСМ)

Інформація про роботу

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Основи програмування та алгоритмічні мови
Група:
КН-3

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Інститут комп’ютерних наук та інформаційних технологій Кафедра ІСМ Звіт про виконання лабораторної роботи №5 на тему: „Одинарне наслідування класів” Виконав: студент групи КН-3 Львів – 2008 Мета роботи: вивчення способів та механізмів наслідування класів та їх використання для побудови програм. Завдання для роботи Розробити програму на мові С++ з використанням класів: робота з рядками символів. Розробити клас, похідний до базового. Текст програми #include <iostream.h> #define MAX_STR_LEN 256 class MyString { protected: char *p; int iLen; public: MyString(); MyString(MyString &MyS); MyString(char *szSource); ~MyString(); void StrCpy(char *szSource); void StrCpyN(char *szSource, int n); void StrCat(char *szSource); void StrCatN(char *szSource, int n); char *GetStr(void); int GetLen(void); friend MyString operator + (MyString MyS1, MyString MyS2); void operator ()(MyString MyS); char & operator [] (int index); friend istream & operator >> (istream &is, MyString &MyS); friend ostream & operator << (ostream &os, MyString &MyS); }; class String: public MyString { public: String(): MyString() {} String(String &S): MyString(S) {} String(char *szSource): MyString(szSource) {} ~String() {if (iLen) delete[] p; iLen = 0;} void Input(int iLen); void Print(bool bNewLine); }; MyString::MyString() { p = NULL; iLen = 0; } MyString::MyString(MyString &MyS) { iLen = MyS.GetLen(); p = new char [iLen + 1]; for (int i = 0; i < iLen; i++) p[i] = MyS.GetStr()[i]; p[iLen] = '\0'; } MyString::MyString(char *szSource) { StrCpy(szSource); } MyString::~MyString() { if (iLen) delete[] p; iLen = 0; } void MyString::StrCpy(char *szSource) { for (int n = 0; szSource[n] != '\0'; n++); StrCpyN(szSource, n); return; } void MyString::StrCpyN(char *szSource, int n) { if (iLen) delete[] p; for (iLen = 0; szSource[iLen] != '\0'; iLen++); if (n < iLen) iLen = n; if (iLen) { p = new char [iLen + 1]; for (int i = 0; i < iLen; i++) p[i] = szSource[i]; p[i] = '\0'; } return; } void MyString::StrCat(char *szSource) { for (int n = 0; szSource[n] != '\0'; n++); StrCatN(szSource, n); return; } void MyString::StrCatN(char *szSource, int n) { if (iLen == 0) { StrCpyN(szSource, n); } else { for (int iSourceLen = 0; szSource[iSourceLen] != '\0'; iSourceLen++); char *old_p = new char [iLen]; for (int i = 0; i < iLen; i++) old_p[i] = p[i]; delete[] p; if (n < iSourceLen) iSourceLen = n; p = new char [iLen + iSourceLen + 1]; for (i = 0; i < iLen; i++) p[i] = old_p[i]; delete[] old_p; for (i = iLen; i < (iLen + iSourceLen); i++) p[i] = szSource[i - iLen]; iLen += iSourceLen; p[iLen] = '\0'; } return; } char *MyString::GetStr(void) { return p; } int MyString::GetLen(void) { return iLen; } MyString operator + (MyString MyS1, MyString MyS2) { MyString MyS3(MyS1); MyS3.StrCat(MyS2.GetStr()); return MyS3; } void MyString::operator ()(MyString MyS) { StrCpy(MyS.GetStr()); return; } char & MyString::operator [] (int index) { if ((index < 0) || (index > iLen)) return p[iLen]; return p[index]; } istream & operator >> (istream &is, MyString &MyS) { if (MyS.iLen) delete[] MyS.p; MyS.p = new char [MAX_STR_LEN]; is>>MyS.p; for (MyS.iLen = 0; MyS.p[MyS.iLen] != '\0'; MyS.iLen++); return is; } ostream & operator << (ostream &os, MyString &MyS) { os<<MyS.p; return os; } void String::Input(int iLen = MAX_STR_LEN) { if (this->iLen) delete[] p; p = new char [iLen]; cin>>p; for (this->iLen = 0; p[this->iLen] != '\0'; this->iLen++); return; } void String::Print(bool bNewLine = true) { cout<<p; if (bNewLine) cout<<endl; return; } int main(int argc, char* argv[]) { String S("Hello World!"); S.Print(); cout<<"Input string: "; S.Input(); cout<<" Your string: "; S.Print(); return 0; } Результат виконання програми Hello World! Input string: test Your string: test Висновки На даній лабораторній роботі я вивчив способи та механізми наслідування класів та їх використання для побудови програм. Розробив клас для роботи із рядками символів та написав похідний клас до базового.
Антиботан аватар за замовчуванням

2015

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!