OO1/Lab 2 2021

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

V2

Postavka zadatka bez modifikacija se može naći na stranici predmeta. Ispod su date modifikacije:

  • Knjiga ima naziv, autora i jedinstveni automatski generisan celobrojni indentifikator.[sic] Naziv knjige i ime autora se zadaju pri stvaranju. Svi podaci mogu da se dohvate. Moguće je napraviti kopiju knjige (!knjiga) koja vraća pokazivač na novonapravljenu knjigu sa istim nazivom i autorom. Nije moguće kopirati knjigu ni na jedan drugi način. Moguće je ispisati knjigu u izlazni tok (it<<knjiga) u obliku KNJIGA id : naslovautor.
  • Biblioteka ima naziv, broj knjiga koji se nalazi u biblioteci i najveći broj knjiga koji može da smesti. Svi podaci mogu da se dohvate. Prilikom stvaranja zadaje se naziv i najveći broj knjiga koji može da se smesti u biblioteku. Moguće je dodati knjigu u biblioteku (biblioteka+=knjiga). Prilikom dodavanje[sic] knjige u biblioteku, biblioteka napravi kopiju knjige i sačuva je po adresi. Knjiga se može dohvatiti iz biblioteke navođenjem identifikatora knjige. Moguće je ispisati biblioteku u izlazni tok (it<<biblioteka) tako što se u prvom redu ispiše ime i kapacitet biblioteke u obliku BIBLIOTEKA naziv br_knjiga/kapacitet, a u zasebnim redovima sve knjige koje se nalaze u njoj.
  • Datum ima dan, mesec i godinu koji se zadaju pri stvaranju (podrazumevano 01.01.1970.) i mogu da se dohvate. Moguće je ispisati datum u izlazni tok (it<<datum) u obliku dan.mesec.godina., pri čemu se dan i mesec ispisuji na širini od dve decimale sa vodećom nulom po potrebi.
  • Pozajmica prima knjigu, datum početka i datum kraja zajma i status koji govori da li je pozajmica završena. Moguće je dohvatiti knjigu. Prilikom stvaranja zadaju se knjiga i datum početka pozajmice, dok je datum kraja pozajmice nedefinisan sve dok knjiga ne bude vraćena. Moguće je proveriti da li je knjiga vraćena (~pozajmica) i kompletirati pozajmicu vraćanjem knjige. Moguće je ispisati pozajmicu u izlazni tok (it<<vreme)[sic] u obliku knjiga (datum_početka - datum_kraja). Ukoliko knjiga nije vraćena datum kraja ne treba ispisivati.
  • Lista pozajmica ima proizvoljan broj pozajmica i stvara se prazna nakon čega joj se pozajmice pojedinačno dodaju. Moguće joj je dodati pozajmicu (lista+=pozajmica), dohvatiti pozajmicu na osnovu zadate knjige (ukoliko se više pozajmica odnosi na istu knjigu, vratiti onu pozajmicu koja je prva dodata u listu) i ukloniti pozajmicu iz liste (lista-=pozajmica). Moguće je ispisati listu pozajmica u izlazni tok (it<<lista) tako što se svaka pozajmica ispiše u zasebnom redu.
  • Biblioteka dodatno ima listu istorije pozajmica, i listu tekućih pozajmica. Moguće je pozajmiti knjigu iz biblioteke, pri čemu se zadaje datum početka pozajmice i identifikator knjige, a odgovarajuće mesto u biblioteci anulira. Knjiga se tom prilikom samo prebacuje iz biblioteke u pozajmicu, koja se pamti u listi tekućih pozajmica. Moguće je vratiti knjigu u biblioteku, kojom prilikom se odgovarajuća pozajmica kompletira datumom vraćanja i prebacuje u istoriju pozajmica, a knjiga iz pozajmice vraća u biblioteku. Prilikom ispisa biblioteke, za knjige koje su trenutno na pozajmici ispisati ?, a zatim ispisati i sve tekuće pozajmice i istoriju pozajmica.

Napisati glavnu funkciju koja detaljno testira funkcionalnosti prethodno opisanih klasa. Napraviti glavnu funkciju koja stvara jednu biblioteku, u nju dodaje 3 knjige i ispisuje biblioteku. Zatim se dve knjige pozajme, a jedna od njih vrati, te se ponovo ispiše biblioteka.

V3

Postavka zadatka bez modifikacija se može naći na stranici predmeta. Ispod su date modifikacije:

  • Skup se sastoji od proizvoljnog broja karaktera. Stvara se zadatom C++ niskom (string), čiji se karakteri odmah dodaju. Moguće je dodati karakter u skup (skup+=karakter), pri čemu se dodavanje karaktera koji se već nalazi u skupu ignoriše, kao i ispitati da li se karakter nalazi u skupu (skup(karakter)). Skup nije moguće kopirati ni na koji način.
  • Reč se stvara zadatom C++ niskom (string) i sastoji se samo od slova engleskog alfabeta. Moguće je odrediti dužinu reči (+rec), kao i broj slogova reči (~rec). Broj slogova reči određuje se brojem nosilaca slogova reči. Nosilac sloga je svaki samoglasnik u skupu {a, e, i, o, u} ili svaki sonant u skupu {l, n, r} ispred/iza koga se ne nalazi samoglasnik. Moguće je odrediti poziciju slova n-tog nosioca sloga u reči (rec(n)), pri čemu pozicije slova kreću od 0. Vrednost n==0 određuje prvi slog na početku reči, pozitivne vrednosti n označavaju pretragu od početka reči, a negativne vrednosti n od kraja reči. U slučaju neuspešne pretrage povratna vrednost je -1. Dve zadate reči se rimuju (rec1^rec2) ako im se poklapaju odgovarajuća slova poslednja dva sloga, odnosno poslednjeg sloga ako je neka od reči jednosložna. Provera poklapanja slova vrši se od nosilaca pretposlednjih slogova u rečima, odnosno nosilaca poslednjih slogova ako je neka od reči jednosložna. Reč je moguće učitati iz jedne linije ulaznog toka (it>>rec), pri čemu se ignorišu svi znakovi koji nisu slova engleskog alfabeta i pri čemu se gubi prethodni sadržaj reči. Reč se ispisuje u izlazni tok (it<<rec) ispisivanjem njenih slova.
  • Stih sadrži promenljih broj reči. Stvara se prazan, a nekon toga je moguće dodavati pojedinačne reči na kraj stiha (stih+=rec). Moguće je odrediti broj slogova stiha izražen u zbiru slogova njegovih reči (~stih). Stih se ispisuje u izlazni tok (it<<stih) ispisivanjem njegovih reči razdvojenih tačno jednim blanko znakom, u jednom redu.
  • Strofa je sekvenca stihova ograničenog kapaciteta. Stvara se prazna, a nakon toga je moguće dodavati stihove na kraj strofe (strofa+=stih) pri čemu je operacija bez efekta ukoliko se pokuša dodavanje stiha u punu strofu ili stiha sa različitim brojem slogova od stihova koji se već nalaze u strofi. Strofa se ispisuje u izlazni tok (it<<strofa) ispisivanjem njenih stihova u posebnim redovima.

Napisati glavnu funkciju koja detaljno testira funkcionalnosti prethodno opisanih klasa. Napraviti glavnu funkciju koja stvara jednu strofu, u nju dodaje nekoliko stihova i ispisuje ih.

Napomene

Modifikacije su napisane po sećanju studenata koji ih su radili.