Задача. Да се състави класова йерархия с: Базов клас (class cbase) и Наследник class cderivative



Дата28.09.2016
Размер131.24 Kb.
#11039
ТипЗадача
Задачи от изпити

Задача . Да се състави класова йерархия с:

1. Базов клас (class CBase) и

2. Наследник class CDerivative.

3. В клас CBase да се създаде виртуална функция void f( ) със съобщение, че функцията f( ) в class CBase е стартирана.

4. Да се предефинира тази функция в клас CDerivative със съобщение, че функцията в class CDerivative е стартирана.

5. Да се създаде deque и да се запълни с обекти от класовете CBase и CDerivative.

6. С помощта на for_each( ) да се стартира функцията f( ) за всеки от обектите на deque.
Задача . Да се състави клас студент CStudent с член променливи

string m_strFN //факултетен номер на студента

int m_iPoints // брой точки по дисциплината ООП

който да осигурява:



  1. Създаване на обекти чрез копиращ конструктор

  2. Създаване на обекти чрез експлицитен конструктор по зададен брой точки

  3. Чрез подразбиращ се конструктор

  4. Оператор за присвояване =

  5. Оператор за сравнение == (по брой точки)

  6. Оператор за сравнение < (по брой точки)

  7. За четене на данните за студента от потоков вход –формат (име и точки)

  8. Извеждане на данните за студента в потоков изход –формат (име и точки)

  9. Установяване на член-променливите

  10. Четене на член променливите

II. Да се състави клас CStudentGroup с член променлива

set m_setStudents // множество студенти

Функции:


  1. Създаване на обект чрез друг обект

  2. Създаване на обект чрез експлицитно зададено множество

  3. Създаване на обект чрез подразбиращ се конструктор

  4. Извеждане на данните за студенти, които имат точки в определени граници

  5. Четене от входен файл на данните за множеството студенти–формат (име и точки)

  6. Създаване на 4 граници за равномерно разпределение на всички студенти в 4 групи, т.е определяне на 4 точки, напр. iP1, iP2, iP3, iP4, които определят интервалите 0- iP1, iP1-iP2, iP2-iP3, iP3-iP4 (iP4 е горна граница на точките), в които да има равен брой студенти.

  1. Примерна главна програма, илюстрираща използването на създадените класове.



Задача . Да се състави клас CColor с защитени член променливи интензив-ностите на основните цветове-цяло неотрицателно число от 0 до 15 (8 т.);

Обозачения на член променливите интензивности:

Червен: red

зелен: green

син: blue

Класът да има експлицитен конструктор по зададени интензивности:

CColor(int, int, int)

Копиращ конструктор:

CColor(CColor& )

Подразбиращ се конструктор:

CColor()

Функции:


1. Образуване на съставен цвят:

int RGB(int red, int green, int blue)

с помощта на която да може да се получава съставен цвят по интензивностите на червения, зеления и синия цвят 2 т.

2. Установяване на цвят по зададени интензивности-setColor 2 т.:

void SetColors( int red, int green, int blue)

3. Получаване на интензивностите на цветовете-GetColor 2 т. :

void GetColor( int& redRef, int& greenRef, int& blueRef)

4. Оператори за сравнение на два цвята == и < 2 т. :

operator==

operator<


5. Оператор за извеждане на данните в поток (файл или конзола). 4 т.

operator<<


II. Да се създаде производен клас цветна точка CColorPoint, основан на CColor с член променливи координати:

координата по iX1

координата по iY1

6. Да се съставят подразбиращ се конструктор 2 т.:

CColorPoint()
7. Да се състави конструктор по зададени координати и цвят 2 т:

CColorPoint(int x,int y,int Color)

8. Да се състави оператор за извеждане в поток (файл или конзола). 4 т.:

operator<<


III. Да се създаде вектор от цветни точки, основан на CColorPoint, с който да може да се изобрази многоъгълник:

· Да се създаде вектора.

· Да се изведат точките.
Задача . Да се състави клас CColor със скрити член променливи интензивностите

на основните цветове (цяло число) 8 т.;

Червен: red

зелен: green

син: blue;

предназначен за съхраняване във вектор.

Класът да осигурява върху обектите му да могат да се прилагат следните операции:

1. Създаване на палета (vector) от обекти(16 основни цвята); 2 т.

2. Сортиране на палетата по интензивности на цветовете в нарастващ ред в приоритет (последователност) blue,green,red (4 т.)

3. Извеждане на данните в поток (файл или конзола). 4 т.

4. Търсене на определен цвят в палетата и извеждане на индекса му 2 т

II.


Да се създаде производен клас правоъгълник , основан на CColor 10 т.

с член променливи координати на горен ляв и долен десен ъгъл:

int iX1,iY1,iX2,iY2;

Функции:


1. Създаване 2 т.

2. Установяване на цвят setColor 2 т.

3. Извеждане на правоъгълната област точка по точка и цвят: 6 т.

void Show().

( Да се приеме, че съществува void DrawPoint(int x1,int y1,long lColor) );

Задача . Да се състави клас CStudent със скрити член променливи;

Име string - strName

Факултетен номер string - strFacNum,

предназначен за съхраняване в контейнери: максимум 10 т.

А. Вектор;

Б. Множество;

Класът да осигурява върху обектите му да могат да се прилагат следните операции:

1. Създаване на обекти; -1+1 т.

2. Сортиране по факултетен номер в нарастващ ред; - 2+2 т.

3. Търсене по име. 3+3 т.

4. Извеждане в поток (файл или конзола). 2+2 т.

5. Извеждане на данните за студентите, имащи фак. номера в

границите : от 025502 до 025506 (4+4 т.)

II.


Да се състави примерна главна програма за създаване на двата вида контейнера.

Да се напише необходимия код за прилагане на операции 1-5.


Задача . Да се състави клас CCard за описание на карта за игра на бридж:

Частни член променливи:

int m_suit // цвят на картата (от 1 до 4 вкл.) съответно спатия, каро, купа, пика

int m_number // номер в цвета (от 1 до 13 вкл.) съответно 1-асо, 2-10,11-вале,12-дама,13-поп

I. Конструктори:

1) Подразбиращ се; 1 т.

2) Експлицитен по цвят и номер 1 т.

3) Копиращ. 1 т.

II. Функции:

1) Достъп до член променливите за четене getSuit(),getNumber() 2 т.

2) За валидизиране на номер в цвета isValidNumber 1 т.

3) За валидизиране на цвета isValidSuit 1 т.

4) За преобразуване на подаден номер в цвета в низ (string):

string numberToString(int number) 4 т.

5) За преобразуване на подаден цвета в низ (string):

string suitToString(int suit) 4 т.

6) Извеждане на двойката низове в потоков изход

Output( ostream& toStream ) 1 т.

III. Оператори:

operator<< (извеждане на двойката низове в потоков изход в поток) 1 т.

operator= 1 т.

operator< (по сила на картата) (пояснение***) 1 т.

operator== (за размер на екрана) 1 т.
Клас CCardPack: за описание на тесте карти за игра на бридж

Частна член променлива:

deque m_cards;

IV. Конструктори:

1. Подразбиращ се; 3 т.

(запълва m_cards с карти от всички цветове и номера)

V. Функции:

1) Random() 5 т.

случайно размесване на картите в m_cards 5 т.

2) Show() - извеждане в конзолния изход 2 т.

3) Sort() - сортиране по сила на картите 5 т.

4) DealOut( deque& cardsSouth,

deque& cardsWest,

deque& cardsNorth,

deque& cardsEast)

връща разбъркани карти за четирите страни 10 т.

VI. Защита от невалидни данни + илюстрация в гл.програма 8 т.


  1. Главна функция (илюстрация за използване) 5 т.

Задача . Да се състави клас, съдържащ в себе си член променлива m_Book от тип deque

1. Конструкторът на класа да запълва променливата с думите, записани в текстови файл.

Името на файла да се предава като параметър на конструктора.

2. Да се състави функция за преобразуване на всички думи като буквите

им се променят на малки- void ToLower( )

3. Да се състави функция за сортиране void Sort() на променливата m_Book

4. Да се състави функция за създаване на речник от думите в книгата-void MakeDictionary()

и съхраняването им в променлива m_Dictionary set

5. Да се състави функция за извеждане на съдържанието на речника-void WriteDict()

и книгата void WriteBook()

Пример:

Вход (съдържание на файла):



AB A AA BB C D E

ab e d c bbb aa BBB

FF g G HHH hh

Изход:


a aa ab bb bbb c d e ff g hh hhh
Задача . Да се състави клас CTVSet за описание на телевизор:

Частни член променливи:

string m_strProducer; //производител

int m_iSize; //размер на екрана (inch)

I. Конструктори:

1) Подразбиращ се; 1 т.

2) Експлицитни:

а) по производител и размер на екрана; 1 т.

б) размер на екрана. 1 т.

3. Копиращ. 1 т.

II. Функции:

1) Достъп до член променливите за четене GetSize(),GetProducer() 2 т.

2) Извеждане на потоков изход Output( ostream& toStream ) 1 т.

3) Четене от потоков вход Input( istream& fromStream ) 1 т.

III. Оператори:

operator= 1 т.

operator< (за размер на екрана) 1 т.

operator== (за размер на екрана) 1 т.

operator<< (извеждане в поток) <Производител размер>:

напр. Sony 14 1 т.

operator>> (четене на данни от поток)

формат <Производител размер>: напр. Sony 14 1 т.

Клас CTVSetShop:

Частна член променлива:

vector m_vSales //продажби

IV. Конструктори:

1. Експлицитен (по зададен вектор) 1 т.

2. Подразбиращ се; 1 т.


V. Функции:

1) Вход/изход от/към поток readIn/writeTo 2 т.

формат <Производител размер>: напр. Sony 14 2 т.

2) maxSalesByProducer Намиране на най-добре 10 т.

продавания производител-връща име на

производителя и брой продадени, напр. (Sony 26)

3) maxSalesBySyze Намиране на най-добре продавания размер- 5 т.

връща размер и брой продадени напр.(14 23)



  1. Главна функция 5 т.


Задача . Да се състави клас, съдържащ в себе си член променлива m_Book от тип deque

1. Конструкторът на класа да запълва променливата с думите, записани в текстови файл.

Името на файла да се предава като параметър на конструктора.

2. Да се състави функция за преобразуване на всички думи като буквите

им се променят на малки- void ToLower( )

3. Да се състави функция за сортиране void Sort() на променливата m_Book

4. Да се състави функция за създаване на речник от думите в книгата-void MakeDictionary()

и съхраняването им в променлива m_Dictionary set

5. Да се състави функция за извеждане на съдържанието на речника-void WriteDict()

и книгата void WriteBook()

Пример:

Вход (съдържание на файла):



AB A AA BB C D E

ab e d c bbb aa BBB

FF g G HHH hh

Изход:


a aa ab bb bbb c d e ff g hh hhh
Задача .

1. Да се състави абстрактен базов клас "Графичен обект" с 3 т.

напълно абстрактна функция за изчисляване на лице-CalcArea()

2. Да се съставят производни класове:

2.1. "Правоъгълник" с член променливи ширина и височина; 5 т.

2.2. "Квадрат" с член променлива страна; 5 т.

2.3. "Кръг" с член променлива радиус; 5 т.

2.4. "Триъгълник" с член променливи страна и височина към нея; 5 т.

Всички фигури да имплементират функция изчисляване на лице-CalcArea() 3 т.

3. Да се състави вектор за съхраняване на произволен обект от задача 2 - 4 т.

4. Да се състави програма за създаване на фигури от четирите вида и записването им в вектора - 4 т.

5. Да се състави програмна част за изчисляване на сумарното лице на фигурите от вектора.

а)с използване на оператор за цикъл-2 т.

б)без използване на оператор за цикъл -6 т.


Задача: Дадена е декларация на главна функция:

int main()

{

vector vec;

ifstream fromIfile("examp6.txt");

readInVector( vec, fromIfile); // чете от файла fromIfile във вектора vec (3 т.)

writeVector( vec ); // извежда съдържанието на вектора vec на конзолния изход (3 т.)

int iSum = Sum( vec );// изчислява и връща сума от елементите на вектора vec (5 т.)

cout << endl << iSum <

int i = Find( 7, vec); // търси стойността (7) във вектора vec, връща индекс към

// намерения елемент или –1 ако липсва (6 т.)

if( i != -1 ) cout << i <

else cout << "No Found\n" <

fromIfile.close();

return 0;

}
Да се съставят телата на липсващите в програмата функции. ( общо 17 т)

Пример:


Ако фаилът съдържа: 100 2 14 56 44 7 7 22 13 19 89 467 4 3 21
Резултат: 100 2 14 56 44 7 7 22 13 19 89 467 4 3 21

868


5
Задача:

Даден е клас CPerson:

enum Sex { male, female }; // мъж, жена

//асистент, магистър,бакалавтр, доктор, професор

enum Titles { assistant, master, bachelor, doctor, professor };

class CPerson {

protected:

string m_strName; // име

Sex m_Sex; // пол

Titles m_Title; // звание

public:

CPerson() {}

~CPerson() {}

void SetName(string strName); // записва име

void SetSex(Sex sex); // записва пол

void SetTitle(Titles title); // записва звание

string GetName() const; // чете име

string GetSex() const; // чете пол

string GetTitle() const; // чете звание

};

и декларацията: vector vPerson .

Да се сътавият телата на липсващите в класа член функции. ( общо 9 т)

Да се състави функция за извеждане броят на асистентите, които не са доктори (3 т):

void CountAssistantsNotDectors( ostream& toStream, vector& vp )

Функция за извеждане на професорите жени( 3 т.):

void CountProfessorsFemale( ostream& toStream, vector& vp )

Да се състави функция за извеждане имената на всички асистенти (3 т.)

void OutputAssistants( ostream& toStream, vector vp )

Да се състави функция за извеждане на магистри и бакалаври( 3 т.):

void OutputMasterBachelor( ostream& toStream, vector& vp )
Задача:

Да се състави клас CTest2, който да има член променлива за съхраняване на множество от думи m_set (2т).

Да се напише конструктор на класа, чрез който член променливата да се запълва с думите записани в текстови файл. Думите са записани в текстовия файл, разделени с интервал или знак за нов ред (CR). Името на файла (char *) се подава като параметър на конструктора на класа:

CTest2(char *szFileName). 2 т.

Да се напише член функция за извеждане на конзолния изход на думите, съхранени в променливата на класа, без повторения,подредени по азбучен ред WriteUniqWords() 4т

Да се напише член функция за извеждане на конзолния изход на неповтарящите се думи следвани от число, определящо колко пъти се среща всяка от тях: WriteEqualWords() (8 т.)

Пример: Ако файлът съдържа:

AD AB AА AA\nAA BC\nAC\nAC

изходът от програмата трябва да бъде:

AA AB AC AD BC

AA:3 AB:1 AC:2 AD:1 BC:1

Да се състави тестваща главна програма. (2 т.)


Задача: А)Да се състави клас за кандидатстудентски данни CStudentData, който да има член променливи: име (тип string) и 3 оценки ( тип double) (от диплома, от изпит и средноаритметична от двете предходни). Да се състави експлицитен конструктор за създаване на обекти от класа и изходен оператор за извеждане на член променливите. (3 т.)

Б)Да се състави клас функция за генериране на данни за кандидатстудентите – CStudentGen, с помощта на която да се създават обекти от клас CStudentData, с имена (“a”, “b”, …) и оценки, запълнени със случайни числа (между 3 и 6). (6 т.)


В)Да се състави клас функция за изчисляване на средният успех на кандидатстудентите – випуск 2004 CAverageFunction, с помощта на която да се изчислява:

Средният успех от дипломата;


Средният успех от изпита;

Средният общ успех (от средният успех на всеки кандидат);


Да се състави изходен оператор за извеждане на изчислените данни на конзолния изход. (8 т.)


Г) Да се състави подходяща главна програма за използване на създадените класове, включваща генерация на кандидатстуденти, изчисляване на средният им успех и извеждане на резултата в изхода. (5 т.)
Задачи за упражнение

Задача:

а) Да се състави клас CTestV8, който да има член променлива контейнера vector, съхраняващ информация за имена на студенти и успеха им (да се подбере начин за съхраняване на данните във вектора).

Да се напише конструктор на класа, чрез който член променливата да се запълва от файл с двойката студент и успех на студента. Данните са записани в текстови файл, разделени с интервал. Името на файла (char *) се подава като параметър на конструктора на класа - формат CTestV8(char *szFileName );

Да се напише член функции:1) за извеждане на съдържанието на член променливата vector на класа на конзолния изход: формат void WriteVector();

и 2) за сортиране съдържанието на член променливата: формат void SortVector();

Пример: Файлът съдържа: ivan 5.54 stela 3.54 milen 4.5

След стартиране на сортиране и извеждане има изход: stela 3.54 milen 4.5 ivan 5.54
Задача:

Да се състави клас CTest7, който да има член променлива deque .

Да се напише конструктор на класа, чрез който член променливата да се запълва с думите записани в текстови файл. Думите са записани в текстовия файл, разделени с интервал или знак за нов ред (CR). Името на файла (char *) се подава като параметър на конструктора на класа:

CTest7(char *szFileName).

Да се напише член функция за извеждане на конзолния изход на съдържанието на член прменливата WriteDeque();

Да се напише член функция за извеждане на конзолния изход еднаквите думи, които са записани една след друга: WriteEqualWords()

Пример: Ако файлът съдържа:

AD AB AА AA\nAA BC\nAC\nAC

изходът на WriteEqualWords() трябва да бъде:

АА AA AC


Да се състави тестваща главна програма.
Задача:

а) Да се създаде функция fTest6 с параметър stack, която да генерира и записва последователностите на Fibonacci в него. Броят на елементите на Fibonacci се подава също като параметър на създадената функция.

б) Да се създаде функция оTest6 с параметър stack, чрез която да се изведат елементите на Fibonacci от стека на конзолния изход в естествения ред на образуване.

в) Да се създаде тестова програма за използването на двете функции.


Задача:

Да се състави клас CTest, който да има член променлива vector.

Да се напише конструктор на класа, чрез който член променливата да се запълва с двойката дума и ред, на който е срещната същата,между които има “:”. Думите са записани в текстови файл, разделени с интервал или знак за нов ред (\n). Името на файла (char *) се подава като параметър на конструктора на класа:

CTest(char *szFileName).

Да се напише член функция за извеждане на съдържанието на член променливата vector на класа на конзолния изход: WriteVector()



Пример: Файлът съдържа: AB A AA\nBB\nC, vektor съдържа: AB:1 A:1 AA:1 BB:2 C:3
Задача:

Да се състави клас CTest, който да има член променлива vector.

Да се напише конструктор на класа, чрез който член променливата да се запълва с двойката дума и ред, на който е срещната същата,между които има “:”. Думите са записани в текстови файл, разделени с интервал или знак за нов ред (CR). Името на файла (char *) се подава като параметър на конструктора на класа:

CTest(char *szFileName).

Да се напише член функция за извеждане на съдържанието на член променливата vector на класа на конзолния изход: WriteVector()



Пример: Файлът съдържа: AB A AA\nBB\nC, vektor съдържа: AB:1 A:1 AA:1 BB:2 C:3
Задача:

Да се генерират 100 случайни числа int в границите 0 - 19. Да се запълнят в multiset. Да се преброят колко пъти се среща всяка стойност в поредицата и се изведе тази информация на конзолният изход във формат:

“Number <случайно число>:<брой на срещанията>”, напр:

Number 0:5

Number 1:3

.....


Number 19:1

Задача .

Да се съставят следните функции за работа с динамично алокиран списък от цели числа:




  1. Четене и запълване съдържанието на списъка от примерен файл examp.txt :

void readList(...);

  1. Извеждане съдържанието на списъка в стандартния изход: void writeList(...);

  2. Сумира елементите на списъка и връща резултата: int Sum(...). При празен списък-връща 0;

  3. Функция, която връща нулево базирана позиция на търсения елемент в списъка

( ако бъде намерен ) или -1 ако не бъде намерен:

int Find( int SearchValue, ...);
Задача . Да се състави set, да се отвори файл (“example.txt”) и да се прочете символ по символ поставяйки всеки char в set. Изведете резултатът и в съответствие с организацията и определете има ли символи от азбуката, които не се използват във входния файл.
Задача Да се създадат класове A и B . Да се създаде multimap и да се запълни с двойки ключ-стойност, позволявайки възможност за дублиране на ключове. С помощта на equal_range( ) да се открие и изведе подмножеството от обекти с дублирани ключове. (Могат да се използват функции в A и/или B ).
Задача . Да се реализира горният пример за multiset.
Задача . Да се генерират случайни числа int v в границите 0 - 20. Да се запълнят в multiset. Да се преброят колко пъти се среща всяка стойност в поредицата.
Задача . Да се създаде stack и да се запишат последователностите на Fibonacci в него. Броят на елементите на Fibonacci се предава като параметър на създадената функция.



Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница