- Член од
- 2 септември 2007
- Мислења
- 72
- Поени од реакции
- 9
Задача 1:Евалуација на код (10 поени)
Податочната структура стек многу често се користи за евалуацијана кодот во програмските јазици. Ваша задача е да направите парсер на код од некој програмски јазик. Парсерот ќе треба да внимава на бројот на отворени големи и мали загради {} и редоследот на нивно отварање и затварање. Уште повеќе, парсерот треба да се грижи за индентацијата на кодот. После секоја отворена заграда, кодот треба да се вовлече во десно за одреден број на места. После секоја затворена заграда (и самата затворена заграда) треба да се врати наназад во лево за одреден број на места. Доколку некоја линија код не завршува со точка-запирка тогаш следната линија код е составен дел од тековната, и треба да биде вовлечена во десно за одреден број на места.
Пример:
public void test() {
int a=3;
int b=7;
for(int i=0;i<a;i++)
b=b+a;
System.out.println(b);
}
}
Парсирањето на горниот код би требало да даде exception бидејќи има една затворена заграда повеќе отколку што треба. Доколку се пушти истиот код без последната заграда, тогаш парсерот треба да го даде следниот излез:
public void test() {
int a=3;
int b=7;
for(int i=0;i<a;i++)
b=b+a;
System.out.println(b);
}
Задача 2:Каматни стапки (10 поени)
Да се направи објектно ориентирано решение со имплементација во Java за пресметување камати. Притоа знаеме дека во банкарското работење постојат два типа камати на вашите пари кои ги имате на вашата сметка: тековни камати и камати на орочени средства. За тековните камати е значајно тоа што каматната стапка е фиксна и се пресметува на месечно ниво континуирано во зависност од средствата кои ги имате на сметка, а додека пак за каматите на орочени средства е значаен периодот (бројот на месеци) на кој се орочени средствата.
Во датотека се дадени клиентите од една банка заедно со нивните сметки и средствата со кои располагаат и тоа во следниов формат:
<БР.СМЕТКА><ИМЕ><ПРЕЗИМЕ><СРЕДСТВА><Т/О><КАМАТНА СТАПКА><ВРЕМЕТРАЕЊЕ>
каде што БР. СМЕТКА е трансакциската сметка на клиентот со име ИМЕ и презиме ПРЕЗИМЕ. СРЕДСТВА се парите кои ги има клиентот на таа трансакциска сметка и Т/О дава евиденција за тоа дали на тие средства ќе се пресметува тековна камата или камата за орочени средства и КАМАТНА СТАПКА дава информација за тоа колкава е камата која треба да се пресмета. Параметарот ВРЕМЕТРАЕЊЕ е опционален и се пополнува само за орочени средства.
Ваша задача е да направите симулација на пресметување камата. Се избира кој тип накамата се пресметува. Доколку се пресметува тековна месечна камата, на моментално расположливите средства се одредува оваа камата и се додава, а доколку се пресметува месечна камата на орочени средства, каматната стапка се дели на бројот на месеци на кои се орочени средствата и врз орочените средства се пресметува камата. На крај да се направи една излезна датотека во која ќе се испечати колку изнесува каматата и моменталната состојба на средствата за секој клиент. Исто така треба да се води сметка и за исклучоците. Кога се читаат податоците од датотека, доколку се наиде на непозната камата, да се покрене исклучок НепознатаКамата. Доколку пак има линија во датотеката со недоволен број на параметри (на пр. Орочени средства без параметарот ВРЕМЕТРАЕЊЕ), се покренува исклучок НедоволноПраметри.
Задача 3:Нумерички загатки (15 поени)
Нумеричка загатка е составена од букви и знаци за аритметички операции. Пример за таква загатка е следниот: AB+B=BA.
Во нумеричките загатки различни букви означуваат различни цифри и исти букви – исти цифри. Решение на загатката е доделување на цифри на буквите на начин на кој би се добило валидно равенство. За дадениот пример едно можно решемние е 89+9=98.
Ваша задача е да напишете програма во java за решевање на нумерички загатки.
Загатките се сместени во датотека, каде секој ред од датотеката претставува една загатка. Една загатка се состои од било кој голем латински карактер (A,B,C,…) и карактери ‘+’,‘-’ и ‘=’.
Излезот треба да бидат сите можни решенија за секоја од загатките во датотеката. Притоа не треба да се печатат решенија кои имаат водечки нули (доколку има такви). Пример за изразот AB+B=C едно решение е 01+1=2, но ова решение не треба да се печати бидејќи изразот 01 има водечка нула.
Задача 4:Логички кола (20 поени)
Со користење на програмскиот јазик java треба да се измоделира креирање и евалуација на логичко коло. Логичкото коло се состои од еден влез (X), еден излез(Y) и стандардни логички порти (NOT, AND, OR и XOR). Пример за едно такво коло е даден на следната слика.
Во датотека се задава логичкото коло и тоа во следниов формат:
<БР.ПОРТА><ТИП><ВЛЕЗ1><ВЛЕЗ2>
каде што БР. ПОРТА е реден број на логичка порта, ТИП е типот на логичка порта (NOT, AND, OR или XOR), а ВЛЕЗ1 и ВЛЕЗ2 се влезовите во портата (ако е NOT порта занемарете го ВЛЕЗ2). ВЛЕЗ1 и ВЛЕЗ2 може да бидат реден број на некои од претходните зададени порти во датотеката (т.е. излез на дадена порта може да биде влез во друга порта) или симбол за единствениот влез во колото (X). Во последниот ред на датотеката е сместен излезот Y во следниов формат <Y><ВЛЕЗ> каде ВЛЕЗ е реден број на некои од претходните зададени порти во датотеката.
Вие треба со помош на датотеката да го изградите логичкото коло и да евалуирате колку ќе биде вредноста на излезот Y за двете различни вредности на влезот X.
Притоа треба да внимавате прво во валидноста на датотеката, т.е. дали има навистина само 1 влез, дали секоја порта има соодветни влезови дали има излез (и тоа само еден). Доколку има било каква невалидност треба да фрлите соодветен исклучок.