←
↑
⇑
↓
→
Ласло Краус |
ИР2ОО1
Испит
4. 7. 2005.
|
Аутори: Игор Тартаља и Ласло Краус
Задаци: 1
2
3
| Напоменe
Поставка задатка 1 (укупно 70 поена)
(⇒ почетак)
Реализовати на језику C++ следећи систем класа (класе опремити оним конструкторима, деструктором и оператором за доделу вредности, који су потребни – грешке пријављивати изузецима типа једноставних класа које су опремљене писањем текста поруке):
- (40 поена) Апстрактна фигура за игре има боју и координате на дводимензионалној табли на којој се игра одвија. Може да се дохвати једнословна ознака, боја и координате фигуре, да се фигура премести на друго место на табли и да се ознака фигуре упише у датотеку (
dat<<fig
). Грешка је ако фигура, према правилима кретања и тренутном стању на табли, не сме да се премести на одредишно место.
- Поља дводимензионалне табле за игре могу да буду празна или да садрже по једну фигуру. Табла се ствара празна задатих димензија. Индекс доњег левог угла табле је (0,0). Може да се дохвати број врста, број колона и фигура на датом пољу (
tabla(i,j)
– садржај табле се не мења), да се фигура премести на друго поље (tabla(&fig,i,j)
– полазно место фигуре остаје празно, евентуална фигура на новом месту се уништава) и да се садржај табле упише у датотеку (dat<<tabla
– пишу се ознаке фигура на појединим пољима, по једна врста у сваком реду – празна поља се означавају цртицама).
- Апстрактни актер игра фигурама задате боје на задатој табли. Може да одигра потез померајући фигуру са једног на друго поље на табли. Грешка је ако се на изворишном пољу не налази фигура његове боје.
- Апстрактна игра садржи једну таблу за игру и неколико играча. Ствара се са празном таблом задатих димензија и попуњеним низом играча задате дужине. Може да се постави почетно стање игре, да се изводи један потез у игри (при сваком потезу изводи се потез једног играча по цикличком редоследу), да се испита да ли је игра завршена и да се тренутно стање игре упише у датотеку (
dat<<igra
– пише се стање на садржаној табли).
- (25 поена) Шах је игра коју играју два играча на табли од 8×8 поља са фигурама беле и црне боје. Беле фигуре се означавају великим, а црне малим словима. Постављање почетног стања игре и испитивање да ли је игра завршена не треба реализовати.
- Играч шаха је актер који потезе изводи читајући ознаке изворишног и одредишног поља са главног улаза. Врсте се означавају цифрама 1 … 8, а колоне латиничним словима A … H (на пример: B5).
- Топ је фигура у шаху која може да се помера водоравно или усправно до првог попуњеног поља. Ако то поље садржи фигуру супротне боје, може да заузме и место те фигуре. Ознака фигуре је
T
.
- Краљ је фигура у шаху која може да се помера на једно од осам суседних поља ако су она празна или садрже фигуру супротне боје. Рокаду не треба реализовати. Ознака фигуре је
K
.
(5 поена) Написати на језику C++ главни програм којим се одигра једна партија шаха. После сваког потеза исписати тренутно стање на главном излазу.
Поставка задатка 2 (30 поена)
(⇒ почетак)
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) Шта значе појмови: досег и видљивост имена? Разлику појмова показати на примеру.
б) Која су ограничења за преклапање оператора ()
, како се позива и која је типична примена?
в) Зашто је приватно извођење релација која је ближа садржању него јавном извођењу?
г) Која је намена универзалног руковаоца (handler) изузецима и на ком месту се наводи?
д) Које врсте аргумената се могу појавити у шаблону класе и која им је намена?
Поставка задатка 3 (25 поена – допуна уместо лабораторијских вежби)
(⇒ почетак)
Пројектовати на језику C++ следећи систем класа (класе опремити оним конструкторима, деструктором и оператором за доделу вредности, који су потребни – грешке пријављивати изузецима типа специјалних једноставних класа):
- Апстрактни предмет има јединствени, аутоматски генерисани идентификациони број. Може да се испита да ли је мањи од другог предмета (
p1<p2
) и да ли је једнак другом предмету (p1==p2
). Два предмета се сматрају једнаким ако први није мањи од другог и други није мањи од првог. При уписивању у датотеку (dat<<p
) пише се идентификациони број предмета.
- Низ предмета је уређен по неопадајућем редоследу и може да садржи задати број предмета. Ствара се празан са задатим капацитетом (подразумевано 10). Нови предмети се додају на одговарајуће место (
niz+=p
). Препуњавање низа је грешка. Одређивање позиције задатог предмета у низу се врши секвенцијалним претраживањем. Неуспех тражења се означава негативним бројем. При усписивању у датотеку (dat<<niz
) подаци о појединим предметима у низу се пишу међусобно раздвојени зарезима, унутар пара средњих заграда.
- Квадар је предмет задат дужинама ивица коме може да се израчуна запремина. Упоређивање квадара се врши на основу запремина. Квадар се пише у облику
K
id(
a,
b,
c)
, где су id – идентификациони број квадра, а a, b и c – дужине страница квадра.
- Испит траје 180 минута (са допунским задатком 240 минута).
- Наведени поени се множе са 0,8. Прерачунати највећи број поена је:
- без допунског задатка 80, на шта се додају до 20 поена добијена на лабораторијским вежбама;
- са допунским задатком 100.
- Рад се предаје искључиво у вежбанци за испите. Није дозвољено имати поред себе друге листове папира.
- Водити рачуна о уредности. Решења задатака навести по гроњем редоследу. Препоручује се рад обичном графитном оловком.
(⇒ почетак)
←
↑
⇑
↓
→
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs
Copyright © 2010, Laslo Kraus
Последња ревизија: 30.8.2010.