←
↑
⇑
↓
→
Ласло Краус |
ИР2ОО1/СИ2ОО1
Испит
22. 9. 2010.
|
Аутори: Игор Тартаља и Ласло Краус
Задаци: 1
2
| Напоменe
Поставка задатка 1 (30 поена)
(⇒ почетак)
Одговорити концизно (једна или две реченице) и прецизно на следећа питaња:
а) Ако постоје class
C;
и struct
S;
одредити начин извођења (јавнo, заштићено или приватнo) за следеће дефиниције: (1) struct
S1:
C{};
(2) class
C1:
C{};
(3) struct
S1:
S{};
(4) class
C1:
S{};
б) Како се у изведеној класи може иницијализовати заштићена референца из основне класе? Навести пример.
в) Ако је: class
O{};
class
I:
public
O{virtual m(){}};
…
O*
po=new
I;
који је резултат израза: typeid(*po)==typeid(I)
? Зашто?
Поставка задатка 2 (укупно 70 поена)
(⇒ почетак)
Написати на језику C++ следеће класе (класе опремити оним конструкторима, деструктором и оператором за доделу вредности, који су потребни за безбедно коришћење класа; грешке пријављивати изузецима типа једноставних класа које су опремљене писањем текста поруке):
- (20 поена) Апстрактна порука може да се упише у излазни ток (
it<<poruka
). Бројчана порука садржи један цео број. Текстуална порука садржи текст произвољне дужине.
- Особа има име које може да се дохвати. Особа може да се упише у излазни ток (пише се име особе). Не сме да се прави копија особе ни на који начин.
- (20 поена) Збирка садржи низ парова кључ неког типа и показивач на податак неког типа. Ствара се празна задатог капацитета (подразумевано 10) после чега се парови додају појединачно (грешка је ако ако кључ већ постоји у збирци и ако се низ препуни). Може да се дохвати капацитет збирке и број попуњених места, да се испита да ли се задати кључ налази у збирци, да се дохвати показивач на податак са задатим кључем (
zbr[kljuc]
; грешка је ако кључ не постоји у збирци) и да се збирка упише у излазни ток (it<<zbr
), по један пар у сваком реду. Не сме да се прави копија збирке ни на који начин.
- (20 поена) Телефонски именик је збирка парова телефонских бројева (кључева типа
long
) и показивача на претплатнике (податке).
- Телефонска централа садржи један именик задатог капацитета (подразумевано 1000) који може да се дохвати. Може да се додаје претплатник задатог телефонског броја и да се успостави веза између задатог претплатника и претплатника задатог броја (грешка је ако је било који од претплатника заузет). Не сме да се прави копија централе ни на који начин.
- Претплатник је особа која у задатој централи има задат број телефона и може бити повезан са другим претплатником као саговорником. Може да се испита статус заузећа претплатника, захтева успостава везе (посредством централе) са другим претплатником задатог броја, да се прихвати позив задатог претплатника, да се прекине веза претплатника са саговорником, да се пошаље порука саговорнику (грешка је ако пошиљалац нема саговорника) и да се прими порука. Пријем поруке се састоји од исписивања на главном излазу имена примаоца, имена саговорника и садржаја примљене поруке. При уписивању претплатника у излазни ток пише се његово име и телефонски број.
(10 поена) Написати на језику C++ програм који направи једну централу, направи неколико претплатника, испише именик централе на главном излазу, измени две пруке између два претплатника и покуша да пошаље поруку од једног претплатника без саговорника. Користити фиксне параметре (не треба ништа учитавати с главног улаза).
- Испит траје 180 минута.
- Рад се предаје искључиво у факултетској вежбанци за испите (-5 поена за неадекватну вежбанку). Није дозвољено имати поред себе друге листове папира.
- Водити рачуна о уредности. Решења задатака навести по гoрњем редоследу (-1 поен за лош редослед). Препоручује се рад обичном графитном оловком.
- Решење задатка не треба раздвајати у датотеке. Довољно је за сваку класу навести дефиницију класе и одмах иза ње евентуалне дефиниције метода које нису дефинисане у самој класи.
(⇒ почетак)
←
↑
⇑
↓
→
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs
Copyright © 2011, Laslo Kraus
Последња ревизија: 10.1.2011.