 |
« on: 21 December 2009, 14:10:07 » |
|
JavaOvde cu izbaciti neke od kodova i osnovnih mogucnosti rada sa javom. Da bi ste pokrenuli sve ovo, morate imati neko okruzenje za to. Npr. Eclipse ili JCreator. U svakom od datih postova, postoji tacno opisano sta taj program treba da radi. Tako da, uzivajte :) 1-StrukturaPrograma-NaredbeGrananja-IterativneNaredbe/* * Napisati program koji simulira rad jednostavnog kalkulatora. * Kalkulator trazi unos dva broja i operacije koju nad njima treba izvrsiti (+,-,*,/). * Pretpostavlja da ce korisnik zeleti vise puta da izvrsi neku racunsku operaciju, * pa mu stalno nudi mogucnost novog unosa, sve dok se ne unese rec "kraj". */
import java.io.BufferedReader; import java.io.InputStreamReader;
public class Kalkulator {
public static void main(String[] arguments) throws Exception {
BufferedReader ulaz = new BufferedReader(new InputStreamReader( System.in)); String s;
do { System.out.print("Unesite prvi broj: "); int prvi = Integer.parseInt(ulaz.readLine()); System.out.print("Unesite drugi broj: "); int drugi = Integer.parseInt(ulaz.readLine()); System.out.print("Unesite operaciju: "); String operacija = ulaz.readLine(); char op = operacija.charAt(0); int rez;
switch (op) { case '+': rez = prvi + drugi; System.out.println("Rezultat sabiranja: " + rez); break; case '-': rez = prvi - drugi; System.out.println("Rezultat oduzimanja: " + rez); break; case '*': rez = prvi * drugi; System.out.println("Rezultat mnozenja: " + rez); break; case '/': rez = prvi / drugi; System.out.println("Rezultat deljenja: " + rez); break; default: System.out.println("Uneta je pogresna operacija!"); }
System.out.println("Ukoliko ne zelite da nastavite rad sa programom unesite 'kraj'."); System.out.println("U suprotnom pritisnite bilo koji taster."); s = ulaz.readLine(); } while (!(s.equalsIgnoreCase("kraj"))); } }
|
|
|
|
|
|
Logged
|
|
|
|
| |
 |
« Reply #1 on: 21 December 2009, 14:13:02 » |
|
/* * Napisati program koji prebraja koliko kojih samoglasnika ima u unetom stringu. * Podrazumeva se da ce korisnik zeleti da testira vise stringova, pa mu se daje mogucnost * da ih unese pri jednom pokretanju programa. * Kad zeli da zavrsi rad s programom samo treba da unese tacku. */
import java.io.BufferedReader; import java.io.InputStreamReader;
public class Samoglasnici {
public static void main(String[] arguments) throws Exception {
BufferedReader ulaz = new BufferedReader(new InputStreamReader( System.in)); System.out.println("Unesite string: "); String s = ulaz.readLine(); do {
s = s.toLowerCase(); int countA = 0, countE = 0, countI = 0, countO = 0, countU = 0, i = 0;
for (i = 0; i < s.length(); i++)
switch (s.charAt(i)) { case 'a': countA++; break; case 'e': countE++; break; case 'i': countI++; break; case 'o': countO++; break; case 'u': countU++; } System.out.println("Broj samoglasnika u unetom stringu je: "); System.out.println("a: " + countA); System.out.println("e: " + countE); System.out.println("i: " + countI); System.out.println("o: " + countO); System.out.println("u: " + countU); System.out.println("Ukoliko ne zelite da nastavite rad sa programom unesite '.'"); System.out.println("U suprotnom unesite sledeci string: "); s = ulaz.readLine(); } while (!s.equals(".")); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #2 on: 21 December 2009, 14:13:51 » |
|
/* * Sa tastature se ucitava temperatura za prvih N dana u godini. Napisati * program koji odredjuje maksimalnu temperaturu u tom periodu i redni broj dana * kada je temperatura bila maksimalna. */
import java.io.BufferedReader; import java.io.InputStreamReader;
public class Temperatura {
public static void main(String[] args) throws Exception {
BufferedReader ulaz = new BufferedReader(new InputStreamReader( System.in)); System.out.println("Unesite broj dana za koje je merena temperatura: "); int n = Integer.parseInt(ulaz.readLine()); if ((n < 1) || (n > 365)) { System.out.println("Pogresan unos!"); } else { System.out.println("Unesite temperaturu za 1. dan: "); int maxT = Integer.parseInt(ulaz.readLine()); int maxTDan = 1; int t;
for (int dan = 2; dan <= n; dan++) { System.out.println("Unesite temperaturu za " + dan + ". dan:"); t = Integer.parseInt(ulaz.readLine()); if (maxT < t) { maxT = t; maxTDan = dan; } } System.out.println("Maksimalna temperatura od " + maxT + " stepeni izmerena je " + maxTDan + ". dana."); } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #3 on: 21 December 2009, 14:15:22 » |
|
2-OznaceneNaredbe-NaredbePrekidaToka-RadSaFajlovima/* * Vas prijatelj, koji je nadaleko cuven po svom ugledu kod zena i velikim osvajackim * poduhvatima Vas je zamolio za malu pomoc. Naime, do sada je paralelno koristio * dva telefonska imenika za belezenje 'vaznih' kontakata (imao je dva mobilna telefona - * jedan za koji svi znaju i jedan sa tajnim brojem za posebne prilike). * Medjutim, kako mu se pokvario jedan od telefona (srecom brojevi ostadose na kartici), * a i postalo mu je jako naporno da pamti gde je sta snimio, zeleo bi nekako da objedini * podatke iz ta dva telefonska imenika. * Posto nije vican programiranju zamolio Vas je na napisete programcic koji bi ucitao * kontakte iz dve datoteke 'Kontakti1.txt' i 'Kontakti2.txt', u kojima su redom * navedena imena i brojevi telefona, svaki podatak u posebnom redu. Na primer: * * Ivana * 063226563 * Jelena * 0646215248 * * itd. koliko ih vec ima. U obe datoteke su podaci poredjani leksikografski (sortirani po * imenima). * * Treba redom uzimati podatke iz tih datoteka i obraditi ih tako sto se svi smeste u novu * datoteku 'SviKontakti.txt', uz ocuvanje poretka. * * Dupliranje podataka (a ponavljaju se neka imena u ulaznim datotekama) treba izbeci po svaku * cenu. Medjutim, u novom imeniku je dozvoljeno da se za jednu osobu pamti vise brojeva, * pa ako se naidje na isto ime u obe ulazne datoteke, treba videti da li se i brojevi poklapaju. * Ako su razliciti, sacuvati oba. * * Voditi racuna i o mogucim greskama pri ucitavanju podataka iz datoteka - da li uopste ima * podataka, da li ono sto je dato kao broj telefona ima odgovarajucu vrednost (string duzine * 9 ili 10 karaktera koji pocinje sa 060, 061, 062, 063, 064 ili 065 - ovo se brze proverava ako se napravi * poseban mali metod koji za zadati broj vraca da li je dobar u navedenom smislu ili nije). * Kad se pojavi greska, program prestaje sa radom i dobijamo nepotpun novi imenik. */
import java.io.*;
public class Imenik {
static boolean dobar(String broj) { return (((broj.length() == 9) || (broj.length() == 10)) && (broj .startsWith("060") || broj.startsWith("061") || broj .startsWith("062") || broj.startsWith("063") || broj.startsWith("064") || broj.startsWith("065"))); }
public static void main(String[] args) throws Exception {
BufferedReader ulaz1 = new BufferedReader(new InputStreamReader( new FileInputStream("Kontakti1.txt"))); BufferedReader ulaz2 = new BufferedReader(new InputStreamReader( new FileInputStream("Kontakti2.txt"))); PrintWriter izlaz = new PrintWriter(new FileWriter("SviKontakti.txt"));
String ime1 = ulaz1.readLine(); String ime2 = ulaz2.readLine(); regularno: { while ((ime1 != null) && (ime2 != null)) { if (ime1.compareTo(ime2) < 0) { izlaz.println(ime1); String broj1 = ulaz1.readLine(); if (dobar(broj1)) izlaz.println(broj1); else { izlaz.println("Greska: pogresan format broja za kontakt " + ime1); break regularno; } ime1 = ulaz1.readLine(); } else if (ime1.compareTo(ime2) == 0) { izlaz.println(ime1); String broj1 = ulaz1.readLine(); if (dobar(broj1)) izlaz.println(broj1); else { izlaz.println("Greska: pogresan format broja za kontakt " + ime1); break regularno; } String broj2 = ulaz2.readLine(); if (dobar(broj2)) { if (broj1.compareTo(broj2) != 0) izlaz.println(broj2); } else { izlaz.println("Greska: pogresan format broja za kontakt " + ime2); break regularno; } ime1 = ulaz1.readLine(); ime2 = ulaz2.readLine(); } else { izlaz.println(ime2); String broj2 = ulaz2.readLine(); if (dobar(broj2)) izlaz.println(broj2); else { izlaz.println("Greska: pogresan format broja za kontakt " + ime2); break regularno; } ime2 = ulaz2.readLine(); } } if (!((ime1 == null) && (ime2 == null))) { if (ime1 != null) { do { izlaz.println(ime1); String broj1 = ulaz1.readLine(); if (dobar(broj1)) izlaz.println(broj1); else { izlaz.println("Greska: pogresan format broja za kontakt " + ime1); break regularno; } ime1 = ulaz1.readLine(); } while (ime1 != null); } else { do { izlaz.println(ime2); String broj2 = ulaz2.readLine(); if (dobar(broj2)) izlaz.println(broj2); else { izlaz.println("Greska: pogresan format broja za kontakt " + ime2); break regularno; } ime2 = ulaz2.readLine(); } while (ime2 != null); } } } izlaz.close(); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #4 on: 21 December 2009, 14:16:34 » |
|
/* * Zamislite da ste vlasnik jednog maloprodajnog objekta (delatnost sami birate). Zelite da * izracunate svoju zaradu od neke konkretne nabavke robe - uzeli ste neku robu iz neke * veleprodaje, napravili predlog svojih maloprodajnih cena i pre nego sto to pustite u * prodaju zelite da vidite koliko cete zaraditi kad prodate svu tu robu po predlozenim cenama. * Da biste uocili neke propuste (na primer premala zarada) i na vreme korigovali svoje cene. * * Program ucitava podatke iz dve datoteke. U prvoj ("Veleprodaja.txt") se nalazi celokupna * ponuda neke veleprodaje - artikli, cene i kolicine na lageru (u svakom redu novi podatak), * sortirano leksikografski. Na primer: * * Jaje * 4 * 1000 * Mleko * 43 * 78 * Pavlaka * 18 * 56 * Ulje * 74 * 145 * * U drugoj datoteci se nalaze artikli koje ste za Vas maloprodajni objekat nabavili iz te * veleprodaje, opet u istom formatu - naziv nabavljenog artikla, predlog maloprodajne cene, * uzeta kolicina. Na primer, u datoteci "Maloprodaja.txt" imate: * * Mleko // Nabavili smo mleko, 8 komada, i zelimo da ga prodamo po ceni od 55 din. * 55 * 8 * Pavlaka * 27 * 6 * * tj. neke od stavki iz prve datoteke, ali sa Vasim predlogom maloprodajnih cena. * * Ako znate da se maloprodajna cena racuna tako sto se na veleprodajnu doda 18% poreza, plus * Vasa cista zarada, mozete da napravite program koji ce Vam iskalkulisati koliko cete zaraditi sa * datim predlogom maloprodajnih cena. * * Konkretno - uzimate redom artikle iz datoteke Maloprodaja, trazite njihove veleprodajne cene * u datoteci Veleprodaja, izracunate 18% od tih cena, saberete to s njima i onda nadjete razliku * u odnosu na Vas predlog maloprodajne cene, tj. cistu dobit. I to pomnozite s kolicinom za * taj artikal. * * Razultat ispisete u datoteku "Zarada.txt", za svaku stavku posebno, kao i ukupnu dobit na kraju * (kad se sve sto je nabavljeno i proda). * * Vodite racuna i o mogucim greskama pri ucitavanju podataka iz datoteke - da li uopste ima * podataka, da li u datoteci Maloprodaja postoji neka stavka koje nema u ponudi veleprodaje, * da li zelite da nabavite neki artikal u kolicini vecoj nego sto je trenutno raspoloziva u * veleprodaji, da li cete za neku stavku biti na gubitku i sl. Ukoliko dodje do neke greske, * ispisete odgovarajucu poruku u fajl i prekinete izvrsavanje programa. */
import java.io.*;
public class Profit {
public static void main(String[] args) throws Exception {
BufferedReader ulaz1 = new BufferedReader(new InputStreamReader( new FileInputStream("Veleprodaja.txt"))); BufferedReader ulaz2 = new BufferedReader(new InputStreamReader( new FileInputStream("Maloprodaja.txt"))); PrintWriter izlaz = new PrintWriter(new FileWriter("Zarada.txt"));
String artV = ulaz1.readLine(); String artM = ulaz2.readLine(); float cenaV, cenaM, porez, dobit; int kolV, kolM; float ukupno = 0; regularno: { if (artM == null) { izlaz.println("Greska! Nista niste nabavili!"); break regularno; } else { while ((artV != null) && (artM != null)) { if (artV.compareTo(artM) == 0) { cenaV = Float.parseFloat(ulaz1.readLine()); cenaM = Float.parseFloat(ulaz2.readLine()); kolV = Integer.parseInt(ulaz1.readLine()); kolM = Integer.parseInt(ulaz2.readLine()); if (kolM > kolV) { izlaz.println("Greska! Zeljena kolicina od " + kolM + " komada artikla '" + artM + "' se trenutno ne moze nabaviti u veleprodaji!"); break regularno; } porez = 0.18f * cenaV; cenaV += porez; dobit = (cenaM - cenaV) * kolM; if (dobit < 0) { izlaz.println("Greska! Zadata cena od " + cenaM + " dinara za artikal '" + artM + "' dovodi do gubitka od: " + dobit + " din."); break regularno; } izlaz.println(artM + ": " + dobit); ukupno += dobit; artV = ulaz1.readLine(); artM = ulaz2.readLine(); } else { cenaV = Float.parseFloat(ulaz1.readLine()); kolV = Integer.parseInt(ulaz1.readLine()); artV = ulaz1.readLine(); } } if (artM != null) { izlaz.println("Greska! Artikal '" + artM + "' se ne moze nabaviti u veleprodaji!"); break regularno; } izlaz.println("Ukupna zarada: " + ukupno + " din."); } } izlaz.close(); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #5 on: 21 December 2009, 14:17:04 » |
|
/* * Dva prevodioca zajedno rade na kreiranju recnika kompjuterske terminologije. Cilj im je da * naprave dvojezicki recnik: englesko-srpski i srpsko-engleski. Neko vreme su skupljali pogodne * izraze i zgodne prevode i sad su konacno zadovoljni obimom recnika. * Jedino sto svoje ideje i prevode nisu cuvali centralizovano, pa sad treba proveriti da * li im se termini poklapaju, gde su razlike i objediniti sve reci u konacno izdanje recnika. * * Dakle, treba napraviti program koji ucitava podatke iz dve datoteke ('Draft1.txt' i 'Draft2.txt'). * One sadrze pocetne verzije englesko-srpskog recnika u formi: rec na engleskom, pa u * sledecem redu prevod, pa tako koliko god reci ima. Reci su poredjane leksikografski. * Na primer: * * database * baza podataka * information * informacija * mouse * mis * software * softver * * Te ulazne datoteke sami napravite. Potom treba redom uzimati podatke iz njih i obraditi ih * tako sto se svi smeste u novu datoteku 'English.txt', uz ocuvanje poretka. * Uz to, paralelno kreirati i datoteku 'Srpski.txt' sa istim tim recima ali obrnuto navedenim * - prvo srpska rec, pa ispod nje odgovarajuci engleski izraz (ta datoteka nece biti sortirana * leksikografski, ali ce predstavljati nekakav srpsko-engleski recnik koji se kasnije moze * dalje sredjivati). * * Dupliranje podataka (a ponavljaju se neke reci u ulaznim datotekama) treba izbeci po svaku * cenu. Medjutim, u konacnom recniku je dozvoljeno da se za jedan izraz pamti vise prevoda, * pa ako se naidje na isti termin u obe ulazne datoteke, treba videti da li se i prevodi poklapaju. * Ako su razliciti, sacuvati oba. * * Voditi racuna i o mogucim greskama pri ucitavanju podataka iz datoteka - da li uopste ima * podataka i sl. * Ako se pojavi greska, program prestaje sa radom i dobijamo nepotpune konacne verzije recnika. */
import java.io.*;
public class Recnik {
public static void main(String[] args) throws Exception {
BufferedReader ulaz1 = new BufferedReader(new InputStreamReader( new FileInputStream("Draft1.txt"))); BufferedReader ulaz2 = new BufferedReader(new InputStreamReader( new FileInputStream("Draft2.txt"))); PrintWriter izlaz1 = new PrintWriter(new FileWriter("English.txt")); PrintWriter izlaz2 = new PrintWriter(new FileWriter("Srpski.txt"));
String rec1 = ulaz1.readLine(); String rec2 = ulaz2.readLine(); String prevod1; String prevod2; regularno: { if ((rec1 == null) && (rec2 == null)) { izlaz1.println("Nema podataka ni u jednom od ulaznih fajlova!"); izlaz2.println("Nema podataka ni u jednom od ulaznih fajlova!"); break regularno; } while ((rec1 != null) && (rec2 != null)) { if (rec1.compareTo(rec2) < 0) { izlaz1.println(rec1); prevod1=ulaz1.readLine(); izlaz1.println(prevod1); izlaz2.println(prevod1); izlaz2.println(rec1); rec1 = ulaz1.readLine(); } else if (rec1.compareTo(rec2) == 0) { izlaz1.println(rec1); prevod1=ulaz1.readLine(); prevod2=ulaz2.readLine(); if (prevod1.equals(prevod2)) { izlaz1.println(prevod1); izlaz2.println(prevod1); izlaz2.println(rec1); } else { izlaz1.println(prevod1); izlaz1.println(rec1); izlaz1.println(prevod2); izlaz2.println(prevod1); izlaz2.println(rec1); izlaz2.println(prevod2); izlaz2.println(rec1); } rec1 = ulaz1.readLine(); rec2 = ulaz2.readLine(); } else { izlaz1.println(rec2); prevod2=ulaz2.readLine(); izlaz1.println(prevod2); izlaz2.println(prevod2); izlaz2.println(rec2); rec2 = ulaz2.readLine(); } } if (!((rec1 == null) && (rec2 == null))) { if (rec1 != null) { do { prevod1=ulaz1.readLine(); izlaz1.println(rec1); izlaz1.println(prevod1); izlaz2.println(prevod1); izlaz2.println(rec1); rec1 = ulaz1.readLine(); } while (rec1 != null); } else { do { prevod2=ulaz2.readLine(); izlaz1.println(rec2); izlaz1.println(prevod2); izlaz2.println(prevod2); izlaz2.println(rec2); rec2 = ulaz2.readLine(); } while (rec2 != null); } } } izlaz1.close(); izlaz2.close(); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #6 on: 21 December 2009, 14:18:36 » |
|
3-Klase-Objekti-Metodi/* * Kreirati klasu Complex koja ce predstavljati kompleksni broj. Stoga treba da ima dva polja: * re i im, konstruktor, te metode za sabiranje i oduzimanje kompleksnog broja sa nekim drugim * kompleksnim brojem, kao i metod stampaj() koji sluzi za ispis kompleksnog broja. * * Napraviti i klasu Kompleksni, u cijem ce se main metodu kreirati dva konkretna kompleksna * broja, potom ce se oni sabrati i oduzeti, i ispisace se njihov zbir i razlika. */
class Complex {
float re; float im;
Complex(float re, float im) { this.re = re; this.im = im; }
Complex saberi(Complex a) { return new Complex(re + a.re, im + a.im); }
Complex oduzmi(Complex a) { return new Complex(re - a.re, im - a.im); }
void stampaj() { if (im >= 0) System.out.println(re + "+" + im + "i"); else System.out.println(re + im + "i"); } }
public class Kompleksni {
public static void main(String[] arguments) { Complex prvi = new Complex(5f, 2f); Complex drugi = new Complex(-1f, 4f);
Complex zbir = prvi.saberi(drugi);
System.out.print("Zbir je: "); zbir.stampaj();
Complex razlika = prvi.oduzmi(drugi);
System.out.print("Razlika je: "); razlika.stampaj(); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #7 on: 21 December 2009, 14:19:03 » |
|
/* * Kreirati klasu Ratio koja ce predstavljati racionalni broj. Stoga treba da ima dva polja: * br i im, konstruktor, te metode za sabiranje i oduzimanje racionalnog broja sa nekim drugim * racionalnim brojem, kao i metod stampaj() koji sluzi za ispis racionalnog broja. * * Napraviti i klasu Racionalni, u cijem ce se main metodu kreirati dva konkretna racionalna * broja, potom ce se oni sabrati i oduzeti, i ispisace se njihov zbir i razlika. */
class Ratio {
int br; int im;
Ratio(int br, int im) { this.br = br; this.im = im; }
Ratio saberi(Ratio a) { return new Ratio(br * a.im + a.br * im, im * a.im); }
Ratio oduzmi(Ratio a) { return new Ratio(br * a.im - a.br * im, im * a.im); }
void stampaj() { if ((im < 0) & (br < 0)) System.out.println(- br + "/" + - im); else System.out.println(br + "/" + im); } }
public class Racionalni {
public static void main(String[] arguments) { Ratio prvi = new Ratio(5, 2); Ratio drugi = new Ratio(-1, 4);
Ratio zbir = prvi.saberi(drugi);
System.out.print("Zbir je: "); zbir.stampaj();
Ratio razlika = prvi.oduzmi(drugi);
System.out.print("Razlika je: "); razlika.stampaj(); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #8 on: 21 December 2009, 14:20:08 » |
|
4-Nasledjivanje-ApstraktneKlase/* * Napraviti apstraktnu klasu "Namirnica", sa privatnim poljima "naziv" i "tezina" (u gramima), * konstruktorom, potrebnim set/get metodima, apstraktnim metodima "jedenje" i "pijenje" * (oba bez argumenata, vracaju logicku vrednost) i metodom "status" (ili apstraktnim pa * implementiranim u potklasama, ili u ovoj klasi generickim za sve vrste namirnica - koristeci * pristup imenu klase pomocu this.getClass().getName() uz ispis dodatnih informacija iz polja). * * Klasa "Pice" treba da nasledi klasu "Namirnica", da ima svoj konstruktor i metode "jedenje" * i "pijenje". Metod "jedenje", posto je pice u pitanju samo vraca "false" (nista se ne jede), a * metod "pijenje" treba da ima jedan argument - "kolicina" u smislu kolicine koja se popije * npr. u jednom gutljaju. Prosto se za tu kolicinu smanji raspoloziva tezina neke namirnice * (u ovom slucaju pica). Ukoliko tezina postane manja od 0, ona se postavlja na 0 i metod * vraca vrednost "false", u suprotnom dobijamo "true". Treba li i ova klasa da bude * apstraktna? * * Analogno tome treba realizovati klasu "Jelo", kod koje su jedino obrnute funkcije metoda * "jedenje" i "pijenje" (jer se tu nesto jede, a nista se ne pije). * * Konacno, realizovati klasu "Vino", koja nasledjuje "Pice", ima konstruktor i metod "pijenje" * (bez parametara), koji samo poziva nadredjeni metod za kolicinu od 1000 grama. * * Opet analogno, klasa "Sir" nasledjuje "Jelo" i ima konstruktor i metod "jedenje" (bez * parametara), koji samo poziva nadredjeni metod za kolicinu od 10 grama. * * Glavna klasa sa "main" metodom treba da se zove "Meze" i da prosto napravi po jedan * objekat klasa "Sir" i "Vino", pokusa da jede i pije i ispise sta se desava sa tim namirnicama * i njihovim kolicinama pre i posle jela. */
abstract class Namirnica {
private String naziv;
private int tezina; // u gramima
Namirnica (String naziv, int tezina) { this.naziv = naziv; this.tezina = tezina; } String uzmiNaziv() { return naziv; } void staviNaziv(String naziv) { this.naziv = naziv; } int uzmiTezinu() { return tezina; } void staviTezinu(int tezina) { this.tezina = tezina; }
abstract boolean jedenje();
abstract boolean pijenje();
String status() { return this.getClass().getName() + ": " + naziv + " (" + tezina + " g)"; } }
abstract class Pice extends Namirnica {
Pice(String naziv, int tezina) { super(naziv, tezina); }
boolean pijenje(int kolicina) { staviTezinu(uzmiTezinu() - kolicina); if (uzmiTezinu() < 0) { staviTezinu(0); return false; } return true; }
boolean jedenje() { return false; } }
class Vino extends Pice { Vino(String naziv, int tezina) { super(naziv, tezina); }
boolean pijenje() { return pijenje(1000); } }
abstract class Jelo extends Namirnica {
Jelo(String naziv, int tezina) { super(naziv, tezina); }
boolean pijenje() { return false; }
boolean jedenje(int kolicina) { staviTezinu(uzmiTezinu() - kolicina); if (uzmiTezinu() < 0) { staviTezinu(0); return false; } return true; } }
class Sir extends Jelo { Sir(String name, int weight) { super(name, weight); }
boolean jedenje() { return jedenje(10); } }
public class Meze {
public static void main(String [] arguments) { Sir s = new Sir("Gauda", 200); Vino v = new Vino("Sardone", 5000); System.out.println(s.status()); System.out.println(v.status()); if (s.jedenje() && v.pijenje()) System.out.println("Prva tura je uspela!"); else System.out.println("Prva tura nije uspela! Niste nabavili dovoljnu kolicinu neke namirnice."); System.out.println(s.status()); System.out.println(v.status()); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #9 on: 21 December 2009, 14:20:33 » |
|
/* * Napraviti apstraktnu klasu "Covek", sa privatnim poljima "ime" i "sredstva", konstruktorom, * potrebnim set/get metodima, apstraktnim metodima "idiNaUtakmicu" i "kupiSminku" * (sa po jednim argumentom u smislu koliko ce ta akcija da kosta; vracaju logicku vrednost) * i metodom "status" (ili apstraktnim pa implementiranim u potklasama, ili u ovoj klasi * generickim za sve ljude - koristeci pristup imenu klase pomocu this.getClass().getName() * uz ispis dodatnih informacija iz polja). * * Klasa "Muskarac" treba da nasledi klasu "Covek", da ima svoj konstruktor i implementirane * metode "idiNaUtakmicu" i "kupiSminku". * Metod "idiNaUtakmicu" treba da ima jedan argument - "trosak" u smislu koliko ce taj * odlazak na utakmicu da kosta muskarca. Prosto se za tu svotu smanji raspoloziva sredstva. * Ukoliko nema dovoljno sredstava, metod vraca vrednost "false" i ne realizuje odlazak na * utakmicu, a u suprotnom dobijamo rezultat "true". * Metod "kupiSminku" za muskarce smatramo da nema previse smisla (program nije sirokih * shvatanja, samo zbog jednostavnosti i duzine), pa samo vraca "false" (uz eventualno neku * smislenu poruku). * * Analogno tome treba realizovati klasu "Zena", kod koje su jedino obrnute funkcije metoda * "idiNaUtakmicu" i "kupiSminku" (jer zene obicno ne trose novce na utakmice, ali zato za * sminku nikad nema dovoljno para). * * Konacno, realizovati klasu "Fudbaler", koja nasledjuje klasu "Muskarac", ima konstruktor sa * samo jednim argumentom (ime, jer podrazumevamo da fudbaler u startu mora da ima bar * milion dinara na raspolaganju - inace nije nikakav fudbaler), plus redefinise metod * "idiNaUtakmicu" tako sto svota koja se prosledi tom metodu kao argument biva dodata na * stanje fudbalera, a ne oduzeta, posto fudbaler ide na utakmice da bi nesto zaradio. * * Opet analogno, klasa "Manekenka" nasledjuje klasu "Zena", ima konstruktor sa jednim * argumentom (i manekenta nije nesto ako ima manje od milion dinara) i redefinise metode * "idiNaUtakmicu" (vrati "false", ali ispise poruku da ne bi bilo lose razmisliti o tome ko igra * na utakmici pa odluciti da li vredi ici) i "kupiSminku" (sa bilo kojom svotom krece u soping, * ali trosi sve sto ima, tj. sredstva postavlja na 0). * * Glavna klasa sa "main" metodom treba da se zove "Potrebe" i da prosto napravi po jedan * objekat klasa "Muskarac", "Zena", "Fudbaler" i "Manekenka", pokusa da ih posalje na neku * utakmicu ili u kupovinu sminke i ispise sta se desava pre i posle takvih akcija. */
abstract class Covek {
private String ime;
private float sredstva;
Covek(String ime, int sredstva) { this.ime = ime; this.sredstva = sredstva; }
String uzmiIme() { return ime; }
void staviIme(String ime) { this.ime = ime; }
float uzmiSredstva() { return sredstva; }
void staviSredstva(float sredstva) { this.sredstva = sredstva; }
abstract boolean idiNaUtakmicu(float trosak);
abstract boolean kupiSminku(float trosak);
String status() { return this.getClass().getName() + ": " + ime + " trenutno ima " + sredstva + " din."; } }
class Muskarac extends Covek {
Muskarac(String ime, int sredstva) { super(ime, sredstva); }
boolean idiNaUtakmicu(float trosak) { if (uzmiSredstva() - trosak < 0) { System.out.println("Nema dovoljno novca!"); return false; } else { staviSredstva(uzmiSredstva() - trosak); return true; } }
boolean kupiSminku(float trosak) { System.out.println("Nema sanse!"); return false; } }
class Zena extends Covek {
Zena(String ime, int sredstva) { super(ime, sredstva); }
boolean idiNaUtakmicu(float trosak) { System.out.println("Nema sanse!"); return false; }
boolean kupiSminku(float trosak) { if (uzmiSredstva() - trosak < 0) { System.out.println("Nema dovoljno novca!"); return false; } else { staviSredstva(uzmiSredstva() - trosak); return true; } } }
class Fudbaler extends Muskarac {
Fudbaler(String ime) { super(ime, 1000000); }
boolean idiNaUtakmicu(float zarada) { staviSredstva(uzmiSredstva() + zarada); return true; } }
class Manekenka extends Zena {
Manekenka(String ime) { super(ime, 1000000); }
boolean kupiSminku(float zarada) { staviSredstva(0); return true; } boolean idiNaUtakmicu(float trosak) { System.out.println("Zavisi ko igra..."); return false; } }
public class Potrebe {
public static void main(String[] arguments) {
Muskarac m = new Muskarac("Petar", 500); Zena z = new Zena("Milijana", 1500); Fudbaler fd = new Fudbaler("David"); Manekenka mk = new Manekenka("Naomi");
System.out.println(m.status()); System.out.println(z.status()); System.out.println(fd.status()); System.out.println(mk.status());
if (m.idiNaUtakmicu(200)) System.out.println("Odlicna utakmica!"); m.kupiSminku(2000); if (z.kupiSminku(900)) System.out.println("Jao sto sam lepa!"); z.idiNaUtakmicu(20); if (fd.idiNaUtakmicu(20000)) System.out.println("Za ove pare sledeci put necu hteti ni da ustanem iz kreveta!"); fd.kupiSminku(2000); if (mk.kupiSminku(5000)) System.out.println("Ogledalce, ogledalce moje, najlepsi na svetu ko je?!"); mk.idiNaUtakmicu(500);
System.out.println(m.status()); System.out.println(z.status()); System.out.println(fd.status()); System.out.println(mk.status()); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #10 on: 21 December 2009, 14:21:22 » |
|
package peteP;
/* * Napraviti apstraktnu klasu "Hrana", sa privatnim poljima "naziv" i "tezina" (u gramima), * konstruktorom, potrebnim set/get metodima, apstraktnim metodima "jedenje" i "pijenje" * (oba bez argumenata, vracaju logicku vrednost) i apstraktnim metodom "status" (vraca * string u smislu opisa hrane - informacije iz polja). * * Klasa "Pivo" treba da nasledi klasu "Hrana", da ima svoj konstruktor (podrazumevana tezina * piva je 500 ml) i implementirane metode "status, "jedenje" i "pijenje". Metod "jedenje", * posto je pice u pitanju samo vraca "false" (nista se ne jede), a metod "pijenje" treba da * smanji raspolozivu tezinu za na primer 100 ml (jedan dobar gutljaj). Ukoliko tezina postane * manja od 0, ona se postavlja na 0 i metod vraca vrednost "false", u suprotnom dobijamo * "true". * * Analogno tome treba realizovati klasu "Hleb", kod koje su jedino obrnute funkcije metoda * "jedenje" i "pijenje" (jer se tu nesto jede, a nista se ne pije). Znaci kod jedenja se tezina * hleba smanji svaki put za npr. 50 grama. * * Da bi se kompletirao rucak, kreirati i klasu "Kobasica", gotovo identicnu klasi "Hleb", ali * se kod njenog "jedenja" tezina smanjuje za recimo 10 grama. * * Glavna klasa sa "main" metodom treba da se zove "Rucak" i da prosto napravi po jedan * objekat klasa "Hleb", "Kobasica i "Pivo", pokusa da jede i pije i ispise sta se desava sa tim * vrstama hrane i njihovim kolicinama pre i posle jela. */
abstract class Hrana {
private String naziv;
private int tezina; // u gramima
Hrana(String naziv, int tezina) { this.naziv = naziv; this.tezina = tezina; }
String uzmiNaziv() { return naziv; }
void staviNaziv(String naziv) { this.naziv = naziv; }
int uzmiTezinu() { return tezina; }
void staviTezinu(int tezina) { this.tezina = tezina; }
abstract boolean jedenje();
abstract boolean pijenje();
abstract String status(); }
class Pivo extends Hrana {
Pivo(String naziv) { super(naziv, 500); }
public String status() { return "Pivo: " + uzmiNaziv() + " (" + uzmiTezinu() + " g)"; }
boolean jedenje() { return false; }
boolean pijenje() { if ((uzmiTezinu() - 100) <= 0) { staviTezinu(0); return false; } else { staviTezinu(uzmiTezinu() - 100); return true; } } }
class Hleb extends Hrana {
protected String[] vrsta = { "Beli hleb", "Crni hleb", "Integralni hleb" };
Hleb(int brVrste, int tezina) { super("Specijalni hleb", tezina); if ((brVrste >= 0) && (brVrste < vrsta.length)) staviNaziv(vrsta[brVrste]); }
String status() { return "Hleb: " + uzmiNaziv() + " (" + uzmiTezinu() + " g)"; } boolean jedenje() { if ((uzmiTezinu() - 50) <= 0) { staviTezinu(0); return false; } else { staviTezinu(uzmiTezinu() - 50); return true; } }
boolean pijenje() { return false; } }
class Kobasica extends Hrana {
public Kobasica(String naziv, int tezina) { super(naziv, tezina); }
public String status() { return "Kobasica: " + uzmiNaziv() + " (" + uzmiTezinu() + " g)"; }
boolean jedenje() { if ((uzmiTezinu() - 10) <= 0) { staviTezinu(0); return false; } else { staviTezinu(uzmiTezinu() - 10); return true; } } boolean pijenje() { return false; } }
public class Rucak {
public static void main(String[] arguments) {
Hleb h = new Hleb(2, 10); Kobasica k = new Kobasica("Sremska", 200); Pivo p = new Pivo("Lav");
System.out.println(h.status()); System.out.println(k.status()); System.out.println(p.status());
h.jedenje(); k.jedenje(); p.pijenje(); if (!h.pijenje()) System.out.println("Hleb se ne pije!"); if (!p.jedenje()) System.out.println("Pivo se ne jede!"); if (!k.pijenje()) System.out.println("Kobasica se ne pije!");
System.out .println("Posle rucka:"); System.out.println(h.status()); System.out.println(k.status()); System.out.println(p.status()); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #11 on: 21 December 2009, 14:21:49 » |
|
/* * Napraviti apstraktnu klasu "Stedisa" sa privatnim poljima "ime", "stanje", "racun", * konstruktorom, potrebnim set/get metodima i apstraktnim metodima "uplati" (dodaje * neku svotu na stanje) i "isplati" (skida neku svotu sa stanja; vraca boolean vrednost u * smislu da li je stedisa otisao u minus ili nije, ali to se implementira tek u potklasama). * * Klase "DevizniStedisa" i "DinarskiStedisa" implementiraju klasu "Stedisa". * * Klasa "DevizniStedisa" dodaje privatno polje "valuta" (u kom se nalazi tip devizne valute), * svoj konstruktor, potrebne set/get metode i implementira metode "uplati" i "isplati" (ne * dozvoljava da korisnik ode u minus - ispise odgovarajucu poruku, ne izvrsi transakciju i * vrati "false" ukoliko nema dovoljno sredstava za isplatu). * * Klasa "DinarskiStedisa" dodaje privatno polje "kredit" u kom se nalazi podatak o tome koliko * dati stedisa sme da ode u minus. I ona ima svoj konstruktor, potrebne set/get metode i * implementira metode "uplati" i "isplati" (vodi racuna da stedisa ne ode u nedozvoljeni * minus). * * Konacno, klasa "Stednja" treba da napravi nekoliko razlicitih instanci stedisa (moze i u nizu) * i potom izlista sve osobe koje imaju dinarski racun i mogu da odu u minus više od 10000 * dinara. */
abstract class Stedisa {
private String ime;
private float stanje;
private int racun;
Stedisa(String ime, float stanje, int racun) { this.ime = ime; this.stanje = stanje; this.racun = racun; }
String getIme() { return ime; } void setIme(String ime) { this.ime =ime; }
float getStanje() { return stanje; }
void setStanje(float stanje) { this.stanje = stanje; }
int getRacun() { return racun; }
void setRacun(int racun) { this.racun = racun; }
abstract void uplati(float uplata);
abstract boolean isplati(float isplata); }
class DevizniStedisa extends Stedisa {
private String valuta;
DevizniStedisa(String ime, float stanje, int racun, String valuta) { super(ime, stanje, racun); this.valuta = valuta; }
String getValuta() { return valuta; }
void setValuta(String valuta) { this.valuta = valuta; } void uplati(float uplata) { setStanje(getStanje() + uplata); }
boolean isplati(float isplata) { float tempStanje; tempStanje = getStanje() - isplata; if (tempStanje >= 0) { setStanje(tempStanje); return true; } else { System.out.println("Isplata nije dozvoljena"); return false; } } }
class DinarskiStedisa extends Stedisa {
private float kredit;
DinarskiStedisa(String ime, float stanje, int racun, float kredit) { super(ime, stanje, racun); this.kredit = kredit; }
float getKredit() { return kredit; } void setKredit(float kredit) { this.kredit = kredit; }
void uplati(float uplata) { setStanje(getStanje() + uplata); }
boolean isplati(float isplata) { float tempStanje; tempStanje = getStanje() - isplata; if (tempStanje >= -kredit) { setStanje(tempStanje); return true; } else { System.out.println("Nedozvoljen minus"); return false; } } }
public class Stednja {
public static void main(String[] arguments) {
Stedisa[] stedise = new Stedisa[3]; stedise[0] = new DinarskiStedisa("Prvi", 467.8f, 7896, 45.6f); stedise[1] = new DevizniStedisa("Drugi", 45897.4f, 68368, "euro"); stedise[2] = new DinarskiStedisa("Treci", 4774.1f, 573847, 89644.3f);
for (int i = 0; i <= 2; i++) { if (stedise[i] instanceof DinarskiStedisa && ((DinarskiStedisa) stedise[i]).getKredit() > 10000) { System.out.println(((DinarskiStedisa) stedise[i]).getIme()); } } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #12 on: 21 December 2009, 14:23:07 » |
|
5-Interfejsipackage sesteP;
/* * Dat je interfejs "Drajver" koji definise sledece metode: * getOpis(), * setOpis(String opis), * getVelicina(), * setVelicina(int velicina) - postavlja velicinu drajvera u bajtovima, * getInstrukcije() - vraca string u kom se nalaze instrukcije za instalaciju drajvera i * setInstrukcije(String instrukcije). * * Klasa "FlashDrajver" implementira interfejs "Drajver" i dodaje polje tipa File (java.io paket). * * Klase "FlashDrajver98" i "FlashDrajverXP" nasledjuju klasu "FlashDrajver". * * Program "Drajveri" treba da omoguci korisniku da iz postojeceg niza drajvera izabere one * koji su namenjeni za WindowsXP i cije instrukcije su duže od 30 znakova, te da ispise * opis takvih drajvera. */
import java.io.*;
interface Drajver { String getOpis();
void setOpis(String opis);
int getVelicina();
void setVelicina(int velicina);
String getInstrukcije();
void setInstrukcije(String instrukcije); }
class FlashDrajver implements Drajver { private String opis;
private int velicina;
private String instrukcije;
File fajl;
// implementacija metoda interfejsa Drajver
public String getOpis() { return opis; }
public void setOpis(String opis) { this.opis = opis; }
public int getVelicina() { return velicina; }
public void setVelicina(int velicina) { this.velicina = velicina; }
public String getInstrukcije() { return instrukcije; }
public void setInstrukcije(String instrukcije) { this.instrukcije = instrukcije; }
// konstruktor
FlashDrajver(String opis, int velicina, String instrukcije, File fajl) { setOpis(opis); setVelicina(velicina); setInstrukcije(instrukcije); this.fajl = fajl; }
}
class FlashDrajver98 extends FlashDrajver { FlashDrajver98(String opis, int velicina, String instrukcije, File fajl) { super(opis, velicina, instrukcije, fajl); } }
class FlashDrajverXp extends FlashDrajver { FlashDrajverXp(String opis, int velicina, String instrukcije, File fajl) { super(opis, velicina, instrukcije, fajl); } }
public class Drajveri { public static void main(String[] arguments) { // popunjavanje niza Drajver[] drajveri = new Drajver[4]; drajveri[0] = new FlashDrajver98("Prvi drajver", 1024, "Neke instrukcije", null); drajveri[1] = new FlashDrajverXp("Drugi drajver", 512, "Neke instrukcije koje sluze", null); drajveri[2] = new FlashDrajver98("Treci drajver", 2048, "Neke instrukcije koje sluze samo da", null); drajveri[3] = new FlashDrajverXp("Cetvrti drajver", 256, "Neke instrukcije koje sluze samo da popune string", null);
for (int i = 0; i < drajveri.length; i++) if ((drajveri[i] instanceof FlashDrajverXp) && (drajveri[i].getInstrukcije().length() > 30)) System.out.println(drajveri[i].getOpis()); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #13 on: 21 December 2009, 14:23:30 » |
|
/* * Klasa "Sprava" predstavlja neku masinu za odrzavanje higijene. Ima privatna polja "kWh", * "dB" i "proizvodjac", konstruktor, potrebne set/get metode, metod opis() i apstraktne metode * delujeNa() (sta cisti) i dodatak() (sta se dobija uz tu masinu na poklon kad se kupuje nova). * * Interfejs "Pranje" definise metode litaraVode() (vraca koliko vode trosi masina) i vreme() * (koliko traje jedno pranje). * * Interfejs "Susenje" definise metode temperatura() (vraca na kojoj temperaturi se nesto susi) i * vreme() (koliko traje jedno susenje). * * Klasa "VesMasina" predstavlja masinu za pranje vesa, za koju je vazno cuvati i podatak o * broju obrtaja u minutu. Ta informacija se dodaje i u opis ves masine. Potrosnja vode pri * pranju se racuna kao snaga u kWh() podeljena sa 6, a vreme pranja je trostruko vece od * duzine naziva proizvodjaca. * * Klasa "MasinaZaSudove" predstavlja masinu za pranje i susenje posudja, za koju je potrebno * cuvati i podatak o kapacitetu (broj kompleta/osoba). Ta informacija se dodaje i u opis masine. * Potrosnja vode pri pranju se racuna kao kod masine za ves, temperatura kao snaga u kWh * podeljena sa 60, a vreme pranja i susenja je sest puta vece od duzine naziva proizvodjaca. * * Program "Higijena" za zadati niz sprava proverava koje od njih su masine za sudove, ali takve da * mogu da operu 12 kompleta posudja, i ispisuje njihove generalije. */
abstract class Sprava {
private float kWh; private int dB; private String proizvodjac; Sprava(float kWh, int dB, String proizvodjac) { this.kWh = kWh; this.dB = dB; this. proizvodjac = proizvodjac; }
public float getkWh() { return kWh; }
public void setkWh(float kWh) { this.kWh = kWh; }
public int getdB() { return dB; }
public void setdB(int dB) { this.dB = dB; } public String getProizvodjac() { return proizvodjac; }
public void setProizvodjac(String proizvodjac) { this.proizvodjac = proizvodjac; }
abstract String delujeNa();
abstract String dodatak(); String opis() { return this.getClass().getName() + " marke " + proizvodjac + " (potrosnja: " + kWh + " kWh), pravi buku od: " + dB + " dB i sluzi za odrzavanje higijene " + delujeNa() + ". \nUz ovu spravu se dobija i " + dodatak(); }
}
interface Pranje {
float litaraVode();
float vreme(); }
interface Susenje {
float temperatura();
float vreme(); }
class VesMasina extends Sprava implements Pranje { private int brObrtaja;
VesMasina(float kWh, int dB, String proizvodjac, int brObrtaja) { super(kWh, dB, proizvodjac); this.brObrtaja=brObrtaja; } public float getBrObrtaja() { return brObrtaja; }
public void setBrObrtaja(int brObrtaja) { this.brObrtaja = brObrtaja; } String delujeNa() { return "garderobe"; }
String dodatak() { return "Calgon"; } public float litaraVode() { return getkWh()/6; }
public float vreme() { return getProizvodjac().length()*3; } String opis() { return super.opis() + ". \nPri pranju trosi " + litaraVode() + " litara vode za " + vreme() + " minuta (broj obrtaja: " + brObrtaja + ")."; }
}
class MasinaZaSudove extends Sprava implements Pranje, Susenje { private int osoba; MasinaZaSudove(float kWh, int dB, String proizvodjac, int osoba) { super(kWh, dB, proizvodjac); this.osoba = osoba; } int getOsoba() { return osoba; } void setOsoba(int osoba) { this.osoba = osoba; } String delujeNa() { return "posudja"; }
String dodatak() { return "Calgonit"; } public float litaraVode() { return getkWh()/6; } public float temperatura() { return getkWh()/60; }
public float vreme() { return getProizvodjac().length()*6; } String opis() { return super.opis() + ". \nPri pranju trosi " + litaraVode() + " litara vode za " + vreme() + ", \na susi na temperaturi od " + temperatura() + " stepeni za " + vreme() + " minuta (komplet posudja za " + osoba + " osoba)."; }
}
public class Higijena {
public static void main(String[] arguments) {
Sprava[] tehnika = {new VesMasina(224, 30, "Elektrolux", 500), new MasinaZaSudove(25, 3, "Beko", 8), new VesMasina(1.4f, 3, "Candy", 400), new MasinaZaSudove(23, 4, "Bosh", 12), new VesMasina(234, 3, "Gorenje", 800)};
for (int i = 0; i < tehnika.length; i++) if ((tehnika[i] instanceof MasinaZaSudove) && (((MasinaZaSudove) tehnika[i]).getOsoba() == 12)) System.out.println(tehnika[i].opis()); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #14 on: 21 December 2009, 14:24:02 » |
|
package sesteP;
/* * Dat je interfejs "Oblik" koji definise sledece metode: * getOpis(), * getPovrsina(), * getObim(). * Klase "Krug" i "Pravougaonik" implementiraju interfejs "Oblik". Klase imaju dodatna float * polja (poluprecnik, duzine stranica). * Konacno, klasa "Kvadrat" nasledjuje "Pravougaonik", uz minimalne izmene. * Program "Oblici" treba da napravi niz oblika i potom ispise opise svih krugova cija je * povrsina veca od 60 cm2. */
interface Oblik {
String getOpis();
float getPovrsina();
float getObim(); }
class Krug implements Oblik {
private float r;
Krug(float r) { this.r = r; } float getPr() { return r; } public String getOpis() { return "Ovo je krug; poluprecnik = "+r; }
public float getPovrsina() { return r*r*(float) Math.PI; }
public float getObim() { return 2*r*(float) Math.PI; } }
class Pravougaonik implements Oblik {
private float a, b;
Pravougaonik(float a, float b) { this.a = a; this.b = b; } float getA() { return a; } float getB() { return b; }
public String getOpis() { return "Ovo je pravougaonik; duzina stranice a = " + a + ", a stranice b = " + b; }
public float getPovrsina() { return a*b; } public float getObim() { return 2*a+2*b; } }
class Kvadrat extends Pravougaonik { Kvadrat(float a) { super(a, a); } public String getOpis() { return "Ovo je kvadrat; duzina stranice a = " + getA(); } }
public class Oblici {
public static void main(String[] arguments) { // popunjavanje niza Oblik[] o = new Oblik[4]; o[0] = new Krug(4); o[1] = new Krug(6); o[2] = new Pravougaonik(4,8); o[3] = new Kvadrat(3);
for (int i = 0; i < o.length; i++) if (o[i] instanceof Krug) if (o[i].getPovrsina() > 60) System.out.println(o[i].getOpis()); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #15 on: 21 December 2009, 14:24:32 » |
|
package sesteP;
/* * Dat je interfejs "Instrument" koji definise sledece metode: * sviraj() - samo ispis odgovarajuce poruke na ekran. * predstaviSe() - vraca naziv instrumenta, * nastimujSe() - samo ispis odgovarajuce poruke na ekran. * * Klase "Duvacki", "Udaraljke" i "Gudacki" implementiraju interfejs "Instrument". * * Konacno, klase "Limeni" i "Drveni" nasledjuju klasu "Duvacki", uz minimalne izmene. * * Program "Orkestar" treba da ima tri metoda: * solo(Instrument i) - svira samo jedan instrument, * svi(Instrument[] i) - svira ceo orkestar, * main - napravi niz raznih instrumenata, potom pusti da sviraju prvo samo duvacki, a * potom i ceo orkestar. */
interface Instrument {
void sviraj();
String predstaviSe();
void nastimujSe(); }
class Duvacki implements Instrument { public void sviraj() { System.out.println("Svira duvacki instrument..."); }
public String predstaviSe() { return "duvacki"; }
public void nastimujSe() { System.out.println("Stimuje se duvacki instrument..."); } }
class Udaraljke implements Instrument { public void sviraj() { System.out.println("Sviraju udaraljke..."); }
public String predstaviSe() { return "udaraljke"; }
public void nastimujSe() { System.out.println("Stimuju se udaraljke..."); } }
class Gudacki implements Instrument { public void sviraj() { System.out.println("Svira gudacki instrument..."); }
public String predstaviSe() { return "gudacki"; }
public void nastimujSe() { System.out.println("Stimuje se gudacki instrument..."); } }
class Limeni extends Duvacki { public void sviraj() { System.out.println("Svira limeni " + super.predstaviSe() + " instrument..."); } public String predstaviSe() { return "limeni"; } public void nastimujSe() { System.out.println("Stimuje se limeni " + super.predstaviSe() + " instrument..."); } }
class Drveni extends Duvacki { public void sviraj() { System.out.println("Svira drveni " + super.predstaviSe() + " instrument..."); }
public String predstaviSe() { return "drveni"; } public void nastimujSe() { System.out.println("Stimuje se drveni " + super.predstaviSe() + " instrument..."); } }
public class Orkestar {
static void solo(Instrument i) { i.sviraj(); }
static void svi(Instrument[] e) { for (int i = 0; i < e.length; i++) solo(e[i]); }
public static void main(String[] args) { Instrument[] o = new Instrument[5]; int i = 0; o[i++] = new Duvacki(); o[i++] = new Udaraljke(); o[i++] = new Gudacki(); o[i++] = new Limeni(); o[i++] = new Drveni(); System.out.println("Samo duvacki..."); for (i = 0; i < o.length; i++) if (o[i] instanceof Duvacki) solo(o[i]);
System.out.println("Ceo orkestar..."); svi(o); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #16 on: 21 December 2009, 14:24:58 » |
|
package sesteP;
/* * Dat je interfejs "Osoba", koji definise sledece metode: * getIme(), * setIme(String ime), * getGodRodj(), * setGodRodj(int godRodj), * getPol() – u implemetaciji je muski false, a zenski true * setPol(boolean pol). * * Klasa "Sportista" implementira interfejs "Osoba". * * Svaki objekat klase "Sportista" sadrzi referencu na po jedan objekat klase "Rezultat". * Objekti klase "Rezultat" sadrze niz stringova u kojima se cuvaju podaci o postignutim * rezultatima tog sportiste. * Objekti klase "Sportista" imaju i sledece podatke: niz kazni (tipa String) i niz u kome se * cuvaju sve godine u kojima je dati sportista bio clan reprezentacije. * * Klasa "Fudbaler" nasledjuje klasu "Sportista" i dodaje polje honorar tipa float. * * Program "Sport" treba da iz niza tipa Osoba[] izlista sve osobe koje nisu sportisti i * sve fudbalere kojima je honorar veci od 10 000. */
interface Osoba {
String getIme();
void setIme(String ime);
int getGodRodj();
void setGodRodj(int godRodj);
boolean getPol();
void setPol(boolean pol); }
class Rezultat { String[] rezultati;
Rezultat(String[] rezultati) { this.rezultati = rezultati; } }
class Sportista implements Osoba { private Rezultat rez;
private String[] kazne;
private int[] clanReprezentacije;
private String ime;
private int godRodj;
private boolean pol;
Sportista(String ime, int godRodj, boolean pol, Rezultat rez, String[] kazne, int[] clanReprezentacije) { this.ime = ime; this.godRodj = godRodj; this.pol = pol; this.clanReprezentacije = clanReprezentacije; this.rez = rez; this.kazne = kazne; }
public String getIme() { return ime; }
public int getGodRodj() { return godRodj; }
public boolean getPol() { return pol; }
public void setIme(String ime) { this.ime = ime; }
public void setGodRodj(int godRodj) { this.godRodj = godRodj; }
public void setPol(boolean pol) { this.pol = pol; } }
class Fudbaler extends Sportista { float honorar;
Fudbaler(String ime, int godRodj, boolean pol, Rezultat rez, String[] kazne, int[] clanReprezentacije, float honorar) { super(ime, godRodj, pol, rez, kazne, clanReprezentacije); this.honorar = honorar; } }
public class Sport { public static void main(String[] arguments) { // popunjavanje niza Osoba[] osobe = new Osoba[3]; osobe[0] = new Sportista("Petar", 1982, false, new Rezultat(null), null, null); osobe[1] = new Fudbaler("Marko", 1234, false, new Rezultat(null), null, null, 12000.0f); osobe[2] = new Fudbaler("Jana", 2345, true, new Rezultat(null), null, null, 13000.0f);
// provera for (int i = 0; i < 3; i++) { if (osobe[i] instanceof Sportista) { if (osobe[i] instanceof Fudbaler) { Fudbaler fudbaler = (Fudbaler) osobe[i]; if (fudbaler.honorar > 10000.0f) System.out.println(fudbaler.getIme()); } } else { System.out.println(osobe[i].getIme()); } } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #17 on: 21 December 2009, 14:25:25 » |
|
/* * Klasa "Zivotinja" treba da ima privatna polja "tezina", "starost" i "ime", konstruktor, * potrebne set/get metode, metod opis() i apstraktne metode jede() i diseNa(). * * Interfejs "Plivanje" definise metode brzina() i stil(). * * Klasa "Riba" predstavlja zivotinje koje plivaju. Brzina ribe se racuna kao sestostruka tezina * podeljena s godinama starosti. Pri opisu ribe treba da se dobiju i podaci o njenom stilu * plivanja i brzini koju moze da postigne. * * Klasa "Sisar" predstavlja toplokrvne zivotinje za koje je potrebno cuvati i podatak o telesnoj * temperaturi. Ta informacija se dodaje i u opis sisara. * * Klasa "Delfin" predstavlja delfine, sa svim njihovim uobicajenim karakteristikama, uz dodatak * koeficijenta inteligencije. Brzina delfina se izrazava kao trostruka tezina podeljena s godinama * starosti. * * Program "ZivotinjskoCarstvo" za zadati niz zivotinja proverava koje od njih su delfini koji * mogu da se uclane u Mensu (IQ im je najmanje 148), te ispisuje njihove generalije. */
abstract class Zivotinja {
private float tezina; private int starost; private String ime; Zivotinja(float tezina, int starost, String ime) { this.tezina = tezina; this.starost = starost; this. ime = ime; }
public float getTezina() { return tezina; }
public void setTezina(float tezina) { this.tezina = tezina; }
public int getStarost() { return starost; }
public void setStarost(int starost) { this.starost = starost; } public String getIme() { return ime; }
public void setIme(String ime) { this.ime = ime; }
abstract String jede();
abstract String diseNa(); String opis() { return this.getClass().getName() + " " + ime + " (starost: " + starost + " godine, tezina: " + tezina + " kg) je zivotinja koja jede " + jede() + ", dise na " + diseNa(); }
}
interface Plivanje {
float brzina();
String stil(); }
class Riba extends Zivotinja implements Plivanje{ Riba(float tezina, int starost, String ime) { super(tezina, starost, ime); } String jede() { return "alge"; }
String diseNa() { return "skrge"; } public float brzina() { return 6*getTezina()/getStarost(); }
public String stil() { return "kraul"; } String opis() { return super.opis() + ", pliva brzinom od " + brzina() + " m/s (stil " + stil() + ")"; } }
class Sisar extends Zivotinja { private float temp;
Sisar(float tezina, int starost, String ime, float temp) { super(tezina, starost, ime); this.temp=temp; } public float getTemp() { return temp; }
public void setTemp(float temp) { this.temp = temp; } String jede() { return "mleko"; }
String diseNa() { return "pluca"; } String opis() { return super.opis() + ", ima telesnu temperaturu " + temp; }
}
class Delfin extends Sisar implements Plivanje { private int IQ; Delfin(float tezina, int starost, String ime, int IQ) { super(tezina, starost, ime, 37); this.IQ = IQ; } public int getIQ() { return IQ; }
public void setIQ(int IQ) { this.IQ = IQ; } public float brzina() { return 3*getTezina()/getStarost(); }
public String stil() { return "delfin"; } String opis() { return super.opis() + ", IQ mu je " + IQ + ", a pliva brzinom od " + brzina() + " m/s (stil " + stil() + ")"; } }
public class ZivotinjskoCarstvo {
public static void main(String[] arguments) {
Zivotinja[] zoo = {new Delfin(123, 2, "Bosko", 115), new Riba(1.4f, 3, "Anabela"), new Sisar(23, 4, "Ljubivoje", 34), new Delfin(234, 3, "Lale", 156)};
for (int i = 0; i < zoo.length; i++) if ((zoo[i] instanceof Delfin) && (((Delfin) zoo[i]).getIQ() >= 148)) System.out.println(zoo[i].opis()); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #18 on: 21 December 2009, 14:26:24 » |
|
6-Nizovi/* * Napisati program koji kreira dve matrice ispunjene nasumicno odabranim vrednostima u * intervalu [0,1], ispisuje ih na ekran, transponuje, mnozi prvu s drugom, a potom drugu s * prvom i na kraju ispituje da li su ta dva proizvoda jednaka. Ispisati na ekran sve rezultate. */
public class Matrix { private final int M; private final int N; private double[][] data;
public Matrix(int M, int N) { this.M = M; this.N = N; data = new double[M][N]; }
public Matrix(double[][] data) { M = data.length; N = data[0].length; this.data = new double[M][N]; for (int i = 0; i < M; i++) for (int j = 0; j < N; j++) this.data[i][j] = data[i][j]; }
public static Matrix random(int M, int N) { Matrix A = new Matrix(M, N); for (int i = 0; i < M; i++) for (int j = 0; j < N; j++) A.data[i][j] = Math.random(); return A; }
public Matrix transpose() { Matrix A = new Matrix(N, M); for (int i = 0; i < M; i++) for (int j = 0; j < N; j++) A.data[j][i] = this.data[i][j]; return A; }
public boolean eq(Matrix B) { Matrix A = this; if (B.M != A.M || B.N != A.N) throw new RuntimeException("Illegal matrix dimensions."); for (int i = 0; i < M; i++) for (int j = 0; j < N; j++) if (A.data[i][j] != B.data[i][j]) return false; return true; }
public Matrix times(Matrix B) { Matrix A = this; if (A.N != B.M) throw new RuntimeException("Illegal matrix dimensions."); Matrix C = new Matrix(A.M, B.N); for (int i = 0; i < C.M; i++) for (int j = 0; j < C.N; j++) for (int k = 0; k < A.N; k++) C.data[i][j] += (A.data[i][k] * B.data[k][j]); return C; }
public void show() { for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) System.out.printf("%9.4f ", data[i][j]); System.out.println(); } }
public static void main(String[] args) {
Matrix A = Matrix.random(5, 5); A.show(); System.out.println(); Matrix D = Matrix.random(5, 5); D.show(); System.out.println();
Matrix B = A.transpose(); B.show(); System.out.println(); A.times(B).show(); System.out.println();
B.times(A).show(); System.out.println();
System.out.println(A.times(B).eq(B.times(A))); System.out.println(); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #19 on: 21 December 2009, 14:26:54 » |
|
/* * Iz fajla "In.txt" u niz ucitati spisak studenata (svako prezime i ime stoji u posebnom redu), sortirati ga * primenom QuickSort algoritma i ispisati u fajl "Out.txt". */
import java.io.*;
class QuickSort {
public static void qsort(String[] a, int left, int right) { int i = left; int j = right; String x = a[(left + right) / 2]; String help;
do { while (a[i].compareTo(x) < 0) i++; while (a[j].compareTo(x) > 0) j--; if (i <= j) { help = a[i]; a[i] = a[j]; a[j] = help; i++; j--; } } while (i <= j);
if (left < j) qsort(a, left, j); if (i < right) qsort(a, i, right); }
public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("In.txt"))); PrintWriter out = new PrintWriter(new FileWriter("Out.txt")); int i = 0; String student = in.readLine(); while (student != null) { i++; student = in.readLine(); } in.close(); String[] a = new String[i]; in = new BufferedReader(new InputStreamReader(new FileInputStream("In.txt"))); student = in.readLine(); i = 0; while (student != null) { a[i++] = student; student = in.readLine(); } qsort(a, 0, a.length - 1); for (i = 0; i < a.length; i++) { out.println(a[i]); } in.close(); out.close(); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #20 on: 21 December 2009, 14:27:46 » |
|
7-Inicijalizatori-UgnjezdeneKlase/* * Klasa "Paket" treba da ima: * - konstantu "maxPaketa" - podatak o tome koliko je realno moguce * poslati paketa iz jedne poste, * - brojac poslatih paketa "brPaketa", inicijalizovan na dva pri prvom * koriscenju klase (postoje bar dve interne postanske posiljke dnevno), * - polje "vrednost", * - unutrasnju klasu "Sadrzaj", sa privatnim poljem "tezina", * - unutrasnju klasu "Odrediste", sa privatnim poljem "adresa", * - metod "posalji" sa dva argumenta (tezina, odrediste), * - metod "posalji" sa samo jednim argumentom (odrediste) - tezinu uzmemo * kao deseti deo vrednosti, * - metod "posaljiCirkular" - uzima adrese iz nekog niza i salje isti paket * na sve njih, * - metod "opis" - opisuje paket. * * Klasa "Posta" onda treba da napravi niz od nekoliko paketa i cirkularno * ih posalje na vise adresa (npr. klijenata neke firme). Posto najvazniji * klijent trazi da mu se salju pojedinacni paketi, i to poredjani opadajuce * po vrednostima, sortiramo niz paketa i saljemo ih posebno. */
class Paket {
public static final int maxPaketa = 30;
static int brPaketa;
private float vrednost; Sadrzaj s = null; Odrediste o = null;
static { brPaketa = 2; }
Paket(float vrednost) { this.vrednost = vrednost; }
float uzmiVrednost() { return vrednost; }
class Sadrzaj { private float tezina;
Sadrzaj(float tezina) { this.tezina = tezina; }
public float uzmiTezinu() { return tezina; } }
class Odrediste { private String adresa;
Odrediste(String kuda) { adresa = kuda; }
String uzmiAdresu() { return adresa; } }
void posalji(String odrediste) { posalji(vrednost / 10, odrediste); }
void posalji(float tezina, String odrediste) { s = new Sadrzaj(tezina); o = new Odrediste(odrediste); System.out.println("Paket vrednosti " + vrednost + " je poslat na adresu " + o.uzmiAdresu()); if (++brPaketa > maxPaketa) System.out.println("Ova posta je preopterecena!"); }
void posaljiCirkular(String[] odrediste) { for (int i = 0; i < odrediste.length; i++) posalji(odrediste[i]); }
public void opis() { System.out .println("Paket cija vrednost iznosi " + vrednost + " dinara"); } }
public class Posta {
public static void quicksort(Paket[] p, int levi, int desni) { Paket pom; int i = levi; int j = desni; float x = p[(levi + desni) / 2].uzmiVrednost(); do { while (p[i].uzmiVrednost() > x) i++; while (p[j].uzmiVrednost() < x) j--; if (i <= j) { pom = p[i]; p[i] = p[j]; p[j] = pom; i++; j--; } } while (i <= j); if (levi < j) quicksort(p, levi, j); if (i < desni) quicksort(p, i, desni); }
public static void main(String[] args) {
Paket[] paketi = new Paket[6];
String[] klijenti = new String[] { "Lipov gaj 56", "Mileticeva 23", "Micurinova 12", "Plitvicka 4" };
for (int i = 0; i < paketi.length; i++) { paketi[i] = new Paket(i * 100); paketi[i].posaljiCirkular(klijenti); }
System.out.println("Najvaznijem klijentu saljemo pakete pojedinacno," + " sortirane po vrednosti (opadajuce).");
quicksort(paketi, 0, paketi.length-1); for (int i = 0; i < paketi.length; i++) { paketi[i].posalji("Adresa najvaznijeg klijenta"); } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #21 on: 21 December 2009, 14:28:11 » |
|
/* * Klasa "Turnus" treba da ima: * - konstantu "maxRadnika", * - brojac "brTurnusa", inicijalizovan pri prvom koriscenju klase * - polje "naziv", * - polje "radnici" u kom cuva podatke o svim radnicima u smeni * (inicijalizovano van konstruktora pri svakom instanciranju klase), * - unutrasnju klasu "Radnik", sa poljima "ime" i "plata", * konstruktor i metode "opis" i "povecajPlatu" (za zadati procenat). * - metod "opis" - detaljan opis turnusa i radnika u njemu, * - metod "formirajTurnus" - uzima imena iz nekog niza i popunjava polje * "radnici" (plate su u startu za sve iste - proizvoljne), uz ispis toka * formiranja turnusa. * * Klasa "Restoran" onda treba da napravi niz od nekoliko turnusa, sve ih * formira i u svakom pronadje najboljeg radnika, pomocu matrice u kojoj se * cuvaju podaci o tome koliko je koji radnik novaca doneo firmi tokom svakog * radnog dana jedne nedelje. Stampaju se opisi radnika koji su najvise * zaradili na nedeljnom nivou i tim radnicima se poveca plata za 20%. */
class Turnus {
static final int maxRadnika = 5;
static int brTurnusa;
private String naziv;
Radnik[] radnici;
static { brTurnusa = 0; }
{ radnici = new Radnik[maxRadnika]; }
Turnus(String naziv) { this.naziv = naziv; brTurnusa++; }
String getNaziv() { return naziv; }
void setNaziv(String naziv) { this.naziv = naziv; }
class Radnik {
private String ime;
private float plata;
Radnik(String ime) { this.ime = ime; }
Radnik(String ime, float plata) { this(ime); this.plata = plata; }
void povecajPlatu(float procenat) { plata += procenat * plata / 100; }
void opis() { System.out.println("Radnik u turnus " + naziv + " pod imenom " + ime + " trenutno ima platu " + plata); } }
public void opis() { System.out.println(naziv + ", sa sledecim radnicima:"); for (int i = 0; i < maxRadnika; i++) System.out.println("Radnik: " + radnici[i].ime + " , trenutna plata: " + radnici[i].plata); }
public void formirajTurnus(String[] imena) { System.out.println("Formiranje turnusa: "); if (imena.length > maxRadnika) System.out.println("Previse radnika za formiranje turnusa!"); else for (int i = 0; i < imena.length; i++) { radnici[i] = new Radnik(imena[i] + brTurnusa); radnici[i].plata = 10000; radnici[i].opis(); } } }
public class Restoran {
public static void main(String[] args) {
Turnus[] turnusi = new Turnus[4]; String[] imena = new String[] { "Pera", "Mika", "Djoka", "Sima" }; for (int i = 0; i < 4; i++) { turnusi[i] = new Turnus("Turnus" + (i + 1)); turnusi[i].formirajTurnus(imena); System.out.println("Najbolji radnik u turnusu " + turnusi[i].getNaziv() + " je: "); int[][] NedeljniPromet = new int[][] { { 1000, 5000*i, 2891, 2000, 768, 567, 3234 }, { 2678, 1567, 6722, 3450*i, 123, 3435,345 }, { 1456, 5350, 351, 6430, 335, 345*i, 3525 }, { 3120, 4353, 4252, 3241, 322, 3432, 456*i } }; float max = 0; int rbr = 0; for (int j = 0; j < NedeljniPromet.length; j++) { float zarada = 0; for (int k = 0; k < NedeljniPromet[j].length; k++) zarada += NedeljniPromet[j][k]; zarada = zarada / NedeljniPromet[j].length; if (zarada > max) { max=zarada; rbr=j; } } turnusi[i].radnici[rbr].povecajPlatu(20); turnusi[i].radnici[rbr].opis(); } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #22 on: 21 December 2009, 14:28:35 » |
|
/* * Klasa "Staza" treba da ima: * - konstantu "maxSkijasa" - koliko skijasa moze da bude na stazi, * - brojac staza "brStaza", inicijalizovan pri prvom koriscenju klase * - polje "skijasi" u kom cuva podatke o svim skijasima na stazi * (inicijalizovano van konstruktora pri svakom instanciranju klase), * - privatnu unutrasnju klasu "Skijas", sa poljima "ime" i "vreme", * dva konstruktora (sa jednim i dva argumenta) i metodom "opis", * - metod "opis" - detaljan opis staze i skijasa na njoj, * - metod "popuniStazu" - uzima imena iz nekog niza stringova i vremena * iz niza celih brojeva (npr. u sekundama) i popunjava polje * "skijasi", uz ispis toka popunjavanja staze. * * Klasa "Slalom" onda treba da napravi niz od nekoliko staza, sve ih * popuni, i jos proveri i da li je bilo skijasa koji su postigli neko * konkretno vreme (npr. ko je postigao nekakav rekord). Cilj je napraviti * poseban metod "trazi", koji bi npr. binarnim pretrazivanjem odradio tu * proveru za pojedinacne staze (tj. skijase na njima) i kao takav se * pozvao onoliko puta koliko ima staza. */
class Staza {
static final int maxSkijasa = 3;
static int brStaza;
Skijas[] skijasi;
static { brStaza = 0; }
{ brStaza++; skijasi = new Skijas[maxSkijasa]; }
class Skijas {
private String ime;
private double vreme; String uzmiIme() { return ime; } double uzmiVreme(){ return vreme; } Skijas(String ime) { this.ime = ime; }
Skijas(String ime, int vreme) { this(ime); this.vreme = vreme; }
void opis() { System.out.println("Skijas " + ime + " je presao stazu za " + vreme + " sekundi."); } }
public void opis() { System.out.println("Trenutno smo na stazi sa sledecim skijasima:"); for (int i = 0; i < maxSkijasa; i++) System.out.println(skijasi[i].ime); }
public void popuniStazu(String[] imena, double[] vremena) { for (int i = 0; i < maxSkijasa; i++) { skijasi[i] = new Skijas(imena[i] + brStaza); skijasi[i].vreme = vremena[i] + brStaza*100; skijasi[i].opis(); } } }
public class Slalom { public static int trazi(Staza el, int vreme, int levi, int desni) { if (levi > desni) { return -1; } else { int srednji = (levi + desni) / 2; if (el.skijasi[srednji].uzmiVreme() == vreme) { return srednji; } else if (el.skijasi[srednji].uzmiVreme() < vreme) { return trazi(el, vreme, srednji + 1, desni); } else { return trazi(el, vreme, levi, srednji - 1); } } }
public static void main(String[] args) {
Staza[] staze = new Staza[4]; String[] imena = new String[] { "Pera", "Mika", "Djoka" }; double[] vremena = new double[] {245,300,453}; for (int i = 0; i < 4; i++) { staze[i] = new Staza(); staze[i].popuniStazu(imena, vremena); } for (int i = 0; i < staze.length; i++) { int pozicija = trazi(staze[i], 345, 0, staze[i].skijasi.length - 1); if (pozicija != -1) System.out.println("Postignut je trazeni rezultat! Skijas: " + staze[i].skijasi[pozicija].uzmiIme()); } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #23 on: 21 December 2009, 14:29:29 » |
|
8-Liste/* * Realizovati red opsluzivanja pomocu liste. * Ucitati sa tastature 5 celih brojeva, smestiti ih u red opsluzivanja, * izbaciti iz njega prvi element i na kraju ispisati sve sto je ostalo. */
import java.io.BufferedReader; import java.io.InputStreamReader;
class ElementQ {
public int value;
public ElementQ next;
public ElementQ(int value) { this.value = value; }
public ElementQ(int value, ElementQ next) { this.value = value; this.next = next; } }
class QueueList {
private ElementQ first, last;
public void addRear(int number) { ElementQ newElement = new ElementQ(number); if (first == null) { first = newElement; } else { last.next = newElement; } last = newElement; } public int first() { if (first == null) { System.out.print("\n*** Queue is empty ***\n"); System.exit(1); } return first.value; }
public int popFirst() { if (first == null) { System.out.print("\n*** Queue is empty ***\n"); System.exit(1); } ElementQ old = first; if ((first = first.next) == null) { last = null; } return old.value; }
public void makeNull() { first = last = null; }
public boolean empty() { return first == null; }
public String toString() { String s = ""; for (ElementQ current = first; current != null; current = current.next) s += current.value + " "; return s; } }
public class Queue {
public static void main(String[] args) throws Exception {
QueueList q = new QueueList(); BufferedReader ulaz = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Put 5 numbers in the queue..."); for (int i = 1; i <= 5; i++) { int br = Integer.parseInt(ulaz.readLine()); q.addRear(br); } if (!q.empty()) System.out.print("\nFirst number " + q.popFirst() + "\n"); else System.out.print("\n*** Empty Queue! ***\n"); System.out.println("\nQueue: " + q); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #24 on: 21 December 2009, 14:29:53 » |
|
/* * Retka matrica je matrica sa relativno mnogo nula. Ona se u programu predstavlja listom * u kojoj se cuvaju podaci samo o onim elementima koji nisu nule. Za svaki takav * element se pamti: indeks vrste elementa, indeks kolone elementa i element. Napisati program * koji ispituje da li je kvadratna retka matrica simetricna. */
class RMatrica {
private int vrednost;
private int vrsta;
private int kolona;
private RMatrica ostatak;
public RMatrica(int vrednost, int vrsta, int kolona, RMatrica ostatak) { this.vrednost = vrednost; this.vrsta = vrsta; this.kolona = kolona; this.ostatak = ostatak; }
public int getVrednost() { return vrednost; }
public void setVrednost(int vr) { vrednost = vr; }
public int getVrsta() { return vrsta; }
public void setVrsta(int vr) { vrsta = vr; }
public int getKolona() { return kolona; }
public void setKolona(int kol) { kolona = kol; }
public RMatrica getOstatak() { return ostatak; }
public RMatrica trazi(int vr, int kol) { if ((vrsta == vr) && (kolona == kol)) return this; else if (ostatak == null) return null; else return ostatak.trazi(vr, kol); }
public void dodaj(int vrednost, int vr, int kol) { if (vrednost != 0) { if (ostatak != null) ostatak.dodaj(vrednost, vr, kol); else ostatak = new RMatrica(vrednost, vr, kol, null); } }
}
public class RetkaMatrica { public static void main(String[] args) {
int n = 3; RMatrica m = new RMatrica(1, 1, 1, null); m.dodaj(2, 1, 3); m.dodaj(2, 3, 1); m.dodaj(5, 3, 3); m.dodaj(3, 1, 2); m.dodaj(3, 2, 1);
StringBuffer sb = new StringBuffer(); for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (m.trazi(i, j) != null) { sb = sb.append(m.trazi(i, j).getVrednost() + "\t"); } else { sb = sb.append(0 + "\t"); } } sb = sb.append("\r\n"); } System.out.println(sb);
boolean simetricna = true; int i = 1; int j; while ((i < n) && simetricna) { j = i+1; while ((j <= n) && simetricna) { if ((m.trazi(i, j) != null) && (m.trazi(j, i) != null)) { simetricna = m.trazi(i, j).getVrednost() == m.trazi(j, i).getVrednost(); } else if ((m.trazi(i, j) != null) || (m.trazi(j, i) != null)){ simetricna = false; } j++; } i++; } if (simetricna) { System.out.println("Matrica je simetricna."); } else { System.out.println("Matrica nije simetricna."); } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #25 on: 21 December 2009, 14:31:03 » |
|
9-Izuzeci/* * Ove godine Deda Mraz je zakljucio da mu je dozlogrdilo silno spustanje niz dimnjake i tegljenje * gomile paketica, pogotovo to sto mora da se trudi oko svakakve nezahvalne decurlije. Zato je * doneo neke vazne odluke - odredice sopstvenu normu - koliko paketica ce podeliti (da se ne * premori), nece nositi poklone nevaljaloj deci, i jako ce dobro pamtiti ko je bio fin prema njemu * ove godine, da bi ga u sledecoj opet obisao, ili zaobisao, vec prema zaslugama. * * Da bi se pomoglo Deda Mrazu da svoje odluke sprovede u delo, treba napraviti tri nove vrste * izuzetaka: "NemaDobrih" (niko ne dobija paketic), njegovu podvarijantu "NemaDovoljnoDobrih" * (ne moze da se ispuni norma) i "Nepostovanje" (nije bio fin docek Deda Mraza - nema poklona * sledece godine). * * Potom kreirati glavnu klasu "DedaMraz". U posebnim nizovima pamtiti imena dece, njihove * faktore dobrote (1-5) i gostoljubivost (true/false). Imena proizvoljno popuniti, a ostale podatke * izgenerisati pomocu generatora slucajnih vrednosti. * * Od Deda Mraza se trazi da unese svoju normu (koliko paketica je voljan da raznese), ispise se * se koja sve deca cekaju na poklone (sa sve informacijama koliko su bila dobra i jesu li * gostoljubiva ili nisu), a potom se poziva metod koji trazi samo decu ciji je faktor dobrote >= 3 * i za njih poziva metod "poseti" (da bi im se urucio paketic. Ako se ne nadje nijedno dobro dete, * generise izuzetak tipa "NemaDobrih", a ako se ne ispuni norma izbacuje se izuzetak tipa * "NemaDovoljnoDobrih". * * Metod "poseti" realizuje posetu dobrom detetu, s tim da ukoliko je dete gostoljubivo (npr. * spremilo je keks i mleko za Deda Mraza) dobija pohvalu i paketic, a ako nije ovog puta dobija * poklon, ali mu se faktor dobrote snizava na 2 i generise se izuzetak tipa "Nepostovanje" sa * prikladnom porukom. * * Obradjuje se sto vise vrsta izuzetaka koji se mogu pojaviti. */
import java.io.*; import java.util.*;
class NemaDobrih extends Exception { NemaDobrih(String poruka) { super(poruka); } }
class NemaDovoljnoDobrih extends NemaDobrih { NemaDovoljnoDobrih(String poruka) { super(poruka); } }
class Nepostovanje extends Exception { Nepostovanje() { super("Sto kaze, iduce godine nema poklona!"); } }
public class DedaMraz { static String[] maliAndjeo; static double[] faktorDobrote; static boolean[] gostoljubiv;
static { maliAndjeo = new String[] {"Raja", "Gaja", "Vlaja", "Paja"}; faktorDobrote = new double[maliAndjeo.length]; gostoljubiv = new boolean[maliAndjeo.length]; Random randGen = new Random(); for (int i = 0; i < faktorDobrote.length; i++) { faktorDobrote[i] = randGen.nextInt(5) + 1; gostoljubiv[i] = randGen.nextBoolean(); } } static void traziDobre(int norma) throws NemaDobrih { int dobrih = 0; int kandidat = 0; while (kandidat < maliAndjeo.length && dobrih < norma) { if (faktorDobrote[kandidat] >= 3) { dobrih++; try { System.out.println("Da vidimo sta nam radi " + maliAndjeo[kandidat]); poseti(kandidat); } catch (Nepostovanje ex) { System.out.println(ex.getMessage()); } } kandidat++; } if (dobrih == 0){ throw new NemaDobrih("Jel' moguce da niko nije bio dobar ove godine?!"); } else if (dobrih < norma) throw new NemaDovoljnoDobrih("Pih, ne mogu ni rodjenu smanjenu normu da ispunim! Ova danasnja mladez, ccc"); } static void poseti(int rbr) throws Nepostovanje { if (gostoljubiv[rbr]) { System.out.println(maliAndjeo[rbr] + " je ostavio keks i mleko za Deda Mraza! Ispunice mu se sve zelje."); } else { System.out.println(maliAndjeo[rbr] + " nista nije spremio :-("); faktorDobrote[rbr] = 2; throw new Nepostovanje(); } }
public static void main(String[] args) { BufferedReader ulaz = new BufferedReader(new InputStreamReader(System.in)); int norma; try { System.out.println("Dobro jutro Deda Mraze. Kakve smo volje danas? Koliko paketica delimo?"); norma = Integer.parseInt(ulaz.readLine()); System.out.println("Na poklone cekaju sledeci andjelcici:"); for (int i=0;i<maliAndjeo.length;i++) { System.out.print(maliAndjeo[i] + " - faktor dobrote: " + faktorDobrote[i]); if (gostoljubiv[i]) System.out.println(" - gostoljubiv"); else System.out.println(" - negostoljubiv"); } traziDobre(norma); } catch (IOException e) { System.out.println("Doslo je do neke greske pri unosu podataka."); } catch (NumberFormatException nfe) { System.out.println("Niste dobro uneli broj paketica."); } catch (NemaDobrih ex) { System.out.println(ex.getMessage()); } finally { System.out.println("Utece Deda Mraz na godisnji odmor!"); } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #26 on: 21 December 2009, 14:31:32 » |
|
/* * Napraviti tri nove vrste izuzetaka: * * - "NemaPrinceze" - konstruktor prosledjuje konstruktoru natklase poruku o tome kako nema * nijedne udavace sa odgovarajucom velicinom noge, * * - "PogresnaUdavaca" - konstruktor sa parametrom - porukom koja se prosledjuje konstruktoru * natklase, * * - "HappyEnd" - konstruktor prosledjuje konstruktoru natklase poruku o tome kako su princ i * Pepeljuga ziveli srecno do kraja zivota. * * Kreirati glavnu klasu "Pepeljuga". U dva niza pamtiti imena svih udavaca u kraljevstvu i brojeve * cipela koje one nose. Imena proizvoljno popuniti, a brojeve izgenerisati pomocu generatora * slucajnih brojeva. Smatra se da je normalno da zena nosi cipele velicine u opsegu 36-45. * * Realizovati i nekoliko metoda: * * - "traziPrincezu" - za zadati broj pronadjene cipelice proverava prvo da li postoji udavaca sa * odgovarajucom velicinom noge. Ako ne nadje nijednu generise "NemaPrinceze" izuzetak. * Za svaku potencijalnu princezu sa odgovarajucom velicinom noge poziva metod "probaj" i * obradjuje eventualni izuzetak koji on generise. * * - "probaj" - proverava da li se udavaca sa odgovarajucom velicinom noge zove bas Pepeljuga. * Ako joj ime nije odgovarajuce, generise "PogresnaUdavaca" izuzetak. Ukoliko je pak i ime * korektno, generise se "HappyEnd" izuzetak. * * - "main" - trazi od princa da unese koji je broj pronadjene cipelice, ispise trenutno stanje u * kraljevstvu - koje su udavace na raspolaganju i koji broj cipela svaka od njih nosi, a potom * poziva metod "traziPrincezu" u nadi da ce naci Pepeljugu. Obradjuje sto vise vrsta izuzetaka * koji se mogu pojaviti. */
import java.io.*; import java.util.*;
class NemaPrinceze extends Exception { NemaPrinceze() { super("Nema nijedne udavace sa odgovarajucom velicinom noge!"); } }
class PogresnaUdavaca extends Exception { PogresnaUdavaca(String poruka) { super(poruka); } }
class HappyEnd extends Exception { HappyEnd() { super("I ziveli su srecno do kraja zivota..."); } }
class Pepeljuga { static String[] udavace; static int[] brojeviCipela;
static { udavace = new String[] {"Zlocka","Nogata","Lazljivica","Pepeljuga","Sponzorusa"}; brojeviCipela = new int[udavace.length]; Random randGen = new Random(); for (int i = 0; i < brojeviCipela.length; i++) { brojeviCipela[i] = randGen.nextInt(10)+36; } } static void traziPrincezu(int brojNadjene) throws NemaPrinceze,HappyEnd { boolean ima=false; for (int i=0;i<udavace.length;i++) { if (brojeviCipela[i] == brojNadjene) { ima=true; System.out.println("Ima nade da ce se pronaci Pepeljuga :-)"); try { probaj(i); } catch (PogresnaUdavaca ex) { System.out.println(ex.getMessage()); } } } if (!ima){ throw new NemaPrinceze(); } } static void probaj(int rbr) throws PogresnaUdavaca,HappyEnd { if (udavace[rbr].equals("Pepeljuga")){ System.out.println("Pepeljuga je pronadjena!"); throw new HappyEnd(); } else throw new PogresnaUdavaca("Ne pase cipela. To nije ta :-("); }
public static void main(String[] args) { BufferedReader ulaz = new BufferedReader(new InputStreamReader(System.in)); int brojNadjene; try { System.out.println("Dobar dan prince. Koji je broj pronadjene cipelice?"); brojNadjene = Integer.parseInt(ulaz.readLine()); System.out.println("U kraljevstvu su trenutno sledece udavace:"); for (int i=0;i<udavace.length;i++) System.out.println(udavace[i] + " - broj cipela: " + brojeviCipela[i]); traziPrincezu(brojNadjene); } catch (IOException e) { System.out.println("Doslo je do neke greske pri unosu podataka."); } catch (NumberFormatException nfe) { System.out.println("Niste dobro uneli broj nadjene cipelice."); } catch (NemaPrinceze ex) { System.out.println(ex.getMessage()); } catch (HappyEnd hex) { System.out.println(hex.getMessage()); } finally { System.out.println("Cica-mica i gotova prica!"); } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #27 on: 21 December 2009, 14:32:35 » |
|
10-Apletiimport java.awt.*; import java.awt.event.*; import javax.swing.*;
public class Lights extends JApplet { class Polje extends JPanel { int n; Polje(int i) { this.n = i; setBackground(Color.black); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { lightenUp(n); } }); } public void lightenUp(int n) { if (light[n / 4][n % 4].getBackground() == Color.black) { light[n / 4][n % 4].setBackground(new Color((float) Math.random(), (float) Math.random(), (float) Math.random())); lightsOn++; } else { light[n / 4][n % 4].setBackground(Color.black); lightsOn--; } try { if (light[n / 4 - 1][n % 4].getBackground() == Color.black) { light[n / 4 - 1][n % 4].setBackground(new Color((float) Math.random(), (float) Math.random(), (float) Math.random())); lightsOn++; } else { light[n / 4 - 1][n % 4].setBackground(Color.black); lightsOn--; } } catch (ArrayIndexOutOfBoundsException ae) {} try { if (light[n / 4 + 1][n % 4].getBackground() == Color.black) { light[n / 4 + 1][n % 4].setBackground(new Color((float) Math.random(), (float) Math.random(), (float) Math.random())); lightsOn++; } else { light[n / 4 + 1][n % 4].setBackground(Color.black); lightsOn--; } } catch (ArrayIndexOutOfBoundsException ae) {} try { if (light[n / 4][n % 4 - 1].getBackground() == Color.black) { light[n / 4][n % 4 - 1].setBackground(new Color((float) Math.random(), (float) Math.random(), (float) Math.random())); lightsOn++; } else { light[n / 4][n % 4 - 1].setBackground(Color.black); lightsOn--; } } catch (ArrayIndexOutOfBoundsException ae) {} try { if (light[n / 4][n % 4 + 1].getBackground() == Color.black) { light[n / 4][n % 4 + 1].setBackground(new Color((float) Math.random(), (float) Math.random(), (float) Math.random())); lightsOn++; } else { light[n / 4][n % 4 + 1].setBackground(Color.black); lightsOn--; } } catch (ArrayIndexOutOfBoundsException ae) {} if (lightsOn == 16) { dlg = new TreeDialog(null); dlg.setVisible(true); } } } class TreeDialog extends JDialog { public TreeDialog(JFrame parent) { super(parent, "All on", true); Container cp = getContentPane(); cp.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 15)); ImageIcon tree = new ImageIcon(getClass().getResource("Tree.gif")); cp.add(new JLabel(tree)); setSize(200, 270); } }
protected Polje light[][]; protected int lightsOn = 0; private TreeDialog dlg;
public void init() { Container cp = getContentPane(); light = new Polje[4][4]; JPanel glavni = new JPanel(); glavni.setBackground(Color.white); glavni.setLayout(new GridLayout(4, 4, 1, 1)); for (int i = 0; i < 16; i++) { glavni.add(light[i / 4][i % 4] = new Polje(i)); } cp.add(glavni, BorderLayout.CENTER); JButton allOff = new JButton("All off"); allOff.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (lightsOn < 16) { int val = JOptionPane.showConfirmDialog(Lights.this, "Sure?", "Yes/No", JOptionPane.YES_NO_OPTION); if (val == JOptionPane.YES_OPTION) resetuj(); } else { resetuj(); } } }); cp.add(allOff, BorderLayout.NORTH); } public void resetuj() { for (int i = 0; i < 16; i++) { light[i / 4][i % 4].setBackground(Color.black); } lightsOn = 0; } private static JApplet applet;
public static void main(String[] args) { JFrame frame = new JFrame("Lights"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); applet = new Lights(); applet.init(); applet.start(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { applet.stop(); applet.destroy(); } }); frame.getContentPane().add(applet); frame.setSize(200, 270); frame.setVisible(true); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #28 on: 21 December 2009, 14:32:59 » |
|
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.util.*;
public class Magic extends JApplet { class Polje extends JTextField { int n; Polje(int i) { this.n = i; setBackground(Color.white); setHorizontalAlignment(JTextField.CENTER); getDocument().addDocumentListener(new MyTextListener()); } class MyTextListener implements DocumentListener { public void changedUpdate(DocumentEvent e) { } public void insertUpdate(DocumentEvent e) { String text = getText(); try { int num = Integer.parseInt(text); if (num <1 || num >9) { throw new NumberFormatException(); } } catch (NumberFormatException ex) { JOptionPane.showMessageDialog(null, "Nedozvoljena vrednost!", "Greska", JOptionPane.ERROR_MESSAGE); } proveri(); } public void removeUpdate(DocumentEvent e) { } } public void proveri() { int i = 0; int j = 0; int s = 0; for (i = 0; i < number.length; i++) { s = 0; for (j = 0; j < number[0].length; j++) { try { s = s + Integer.parseInt(number[i][j].getText()); } catch (NumberFormatException ex) { } } if (s != 15) { break; } } int p = 0; for (j = 0; j < number[0].length; j++) { p = 0; for (i = 0; i < number.length; i++) { try { p = p + Integer.parseInt(number[i][j].getText()); } catch (NumberFormatException ex) { } } if (p != 15) { break; } } int d1 = 0; for (i = 0; i < number.length; i++) { try { d1 = d1 + Integer.parseInt(number[i][i].getText()); } catch (NumberFormatException ex) { } } int d2 = 0; for (i = 0; i < number.length; i++) { try { d2 = d2 + Integer.parseInt(number[i][number.length - i - 1].getText()); } catch (NumberFormatException ex) { } } if (s == 15 && p == 15 && d1 == 15 && d2 == 15) { dlg = new SantaDialog(null); dlg.setVisible(true); } } } class SantaDialog extends JDialog { public SantaDialog(JFrame parent) { super(parent, "Happy New Year!", true); Container cp = getContentPane(); ImageIcon santa = new ImageIcon(getClass().getResource("SantaSmile.jpg")); cp.add(new JLabel(santa)); setSize(340, 340); } }
protected Polje number[][]; private SantaDialog dlg; static Random r = new Random();
public void init() { Container cp = getContentPane(); number = new Polje[3][3]; JPanel glavni = new JPanel(); glavni.setLayout(new GridLayout(3, 3, 1, 1)); for (int i = 0; i < 9; i++) { glavni.add(number[i / 3][i % 3] = new Polje(i)); } boolean[] picked = new boolean[9]; for (int i = 0; i < 3; i++) { int t; do t = r.nextInt(9); while (picked[t]); number[t / 3][t % 3].setText(Integer.toString(r.nextInt(9)+1)); number[t / 3][t % 3].setEditable(false); picked[t] = true; } cp.add(glavni, BorderLayout.CENTER); JButton allOff = new JButton("Ponovo"); allOff.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int val = JOptionPane.showConfirmDialog(Magic.this, "Da li ste sigurni?", "Sigurno?", JOptionPane.YES_NO_OPTION); if (val == JOptionPane.YES_OPTION) resetuj(); } }); cp.add(allOff, BorderLayout.SOUTH); } public void resetuj() { for (int i = 0; i < 9; i++) { number[i / 3][i % 3].setBackground(Color.white); number[i / 3][i % 3].setText(""); number[i / 3][i % 3].setEditable(true); } boolean[] picked = new boolean[9]; for (int i = 0; i < 3; i++) { int t; do t = r.nextInt(9); while (picked[t]); number[t / 3][t % 3].setText(Integer.toString(r.nextInt(9)+1)); number[t / 3][t % 3].setEditable(false); picked[t] = true; } } private static JApplet applet;
public static void main(String[] args) { JFrame frame = new JFrame("Magic"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); applet = new Magic(); applet.init(); applet.start(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { applet.stop(); applet.destroy(); } }); frame.getContentPane().add(applet); frame.setSize(340, 340); frame.setVisible(true); } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #29 on: 21 December 2009, 14:33:57 » |
|
11-Kolekcije/* * Klasa "Birac" ima privatna polja "prezime", "ime" i "maticniBroj", potrebne set/get metode i * konstruktor. Ona treba da implementira interfejs Comparable (porede se prezimena, a potom * i imena ukoliko je potrebno). * * Glavna klasa "BirackiSpisak" sluzi za formiranje jednostavnog birackog spiska. Sa tastature se * unose prezimena, imena i maticni brojevi stanovnika neke regije. Program te podatke smesta u * pogodnu kolekciju, ciji su elementi instance klase "Birac". Kraj unosa oznacava prazan string * unet umesto prezimena sledeceg biraca. * * Na kraju izlistati biracki spisak bez duplikata (koristeci iterator), takav da su biraci sortirani * leksikografski (uz ignorisanje razlike izmedju velikih i malih slova). */
import java.io.*; import java.util.*;
class Birac implements Comparable<Birac> {
private String prezime; private String ime; private long maticniBroj;
public String getPrezime() { return prezime; }
public String getIme() { return ime; }
public long getMaticniBroj() { return maticniBroj; }
public void setPrezime(String prezime) { this.prezime = prezime; }
public void setIme(String ime) { this.ime = ime; }
public void setMaticniBroj(long maticniBroj) { this.maticniBroj = maticniBroj; }
Birac(String prezime, String ime, long maticniBroj) { this.prezime = prezime; this.ime = ime; this.maticniBroj = maticniBroj; }
public int compareTo(Birac b) { if (prezime.toLowerCase().compareTo(b.prezime.toLowerCase()) < 0) { return -1; } if (prezime.toLowerCase().compareTo(b.prezime.toLowerCase()) > 0) { return 1; } else { return ime.toLowerCase().compareTo(b.ime.toLowerCase()); } }
}
public class BirackiSpisak {
public static void main(String[] arguments) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); TreeSet<Birac> skup = new TreeSet<Birac>();
System.out.println("Pocetak"); System.out.println("------------"); System.out.println("Unesite prezime biraca: "); String prezime = in.readLine(); while (!(prezime.equals(""))) { System.out.println("Unesite ime biraca: "); String ime = in.readLine(); System.out.println("Unesite maticni broj: "); long broj = Long.parseLong(in.readLine()); Birac Birac = new Birac(prezime, ime, broj); skup.add(Birac); System.out.println("Unesite prezime biraca: "); prezime = in.readLine(); } System.out.println("Kraj unosa");
System.out.println("--------------");
System.out.println("Biracki spisak:"); Iterator<Birac> iter = skup.iterator(); while (iter.hasNext()) { Birac b = iter.next(); System.out.println(b.getPrezime() + " " + b.getIme() + ", " + b.getMaticniBroj()); } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #30 on: 21 December 2009, 14:34:20 » |
|
package dvanaesteP; /* * Klasa "Osoba" ima privatna polja "ime" i "broj" (telefona), potrebne set/get metode i * konstruktor. Ona treba da implementira interfejs Comparator. * * Glavna klasa "Imenik" sluzi za realizaciju jednostavnog telefonskog imenika. Sa tastature se * ucitavaju (dok se ne unese prazan string) parovi (string, broj), koji predstavljaju kombinacije * imena i brojeva telefona nekih osoba. Podaci se smestaju u objekte klase "Osoba", koji se cuvaju * u listi (koristiti LinkedList), tako da se pri svakom ubacivanju odrzava sortiranost liste. * Kriterijum za sortiranje je ime osobe, tj. kao i u pravom imeniku, osobe su poredjane po abecedi. * Pri sortiranju ignorisati razliku izmedju velikih i malih slova. * Na kraju, koristeci iterator, ispisati sadrzaj imenika. */
import java.io.*; import java.util.*;
class Osoba implements Comparator<Osoba> {
private String ime; private int broj;
public int getBroj() { return broj; }
public String getIme() { return ime; } public void setBroj(int broj) { this.broj = broj; }
public void setIme(String ime) { this.ime = ime; }
Osoba(String ime, int broj) { this.ime = ime; this.broj = broj; } public boolean equals(Osoba o) { if (o == null) { return false; } else { return (o.getIme().equals(ime) && (o.getBroj() == broj)); } } public int compare(Osoba o1, Osoba o2) { String s1 = o1.getIme(); String s2 = o2.getIme(); return s1.toLowerCase().compareTo(s2.toLowerCase()); } }
public class Imenik {
public static void main(String[] arguments) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); LinkedList<Osoba> lista = new LinkedList<Osoba>();
System.out.println("Pocetak"); System.out.println("------------"); System.out.println("Unesite ime: "); String ime = in.readLine(); while (!(ime.equals(""))) { System.out.println("Unesite broj telefona: "); int broj = Integer.parseInt(in.readLine()); Osoba osoba = new Osoba(ime, broj); ListIterator<Osoba> iter = lista.listIterator(); while (iter.hasNext()) { Osoba item = iter.next(); if (osoba.compare(osoba, item) <= 0) { iter.previous(); break; } } iter.add(osoba); System.out.println("Unesite ime: "); ime = in.readLine(); } System.out.println("Kraj unosa"); System.out.println("--------------");
System.out.println("Telefonski imenik:"); ListIterator<Osoba> iter = lista.listIterator(); while (iter.hasNext()) { Osoba os = iter.next(); System.out.println(os.getIme() + ", " + os.getBroj()); } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #31 on: 21 December 2009, 14:34:44 » |
|
/* * Klasa "PropusteniPozivi" sluzi za vodjenje evidencije o propustenim pozivima upucenim jednog * tinejdzerki. Njoj je iskljuceno zvono dok je u skoli, pa joj je jako znacajno da nakon nastave * vidi spisak poziva koje je propustila. I to poredjanih onako kako njoj odgovara. Posto joj se * tekuci decko zove Zoran, zgodno joj je da spisak bude sortiran po abecedi, ali opadajuce, da bi * brzo uocila koliko puta ju je on zvao. Nije bitno da li su imena napisana velikim ili malim * slovima. * * Sa tastature se ucitavaju imena ljudi (mladica) koji su zvali nasu tinejdzerku, sve dok se ne * unese prazan string. Ona se smestaju u pogodnu strukturu, iz koje se na kraju ispise listing * propustenih poziva (koriscenjem iteratora), bez duplikata imena, ali sa dodatnom informacijom o * broju njihovog pojavljivanja - za svako ime koliko puta je ta osoba zvala. */
import java.io.*; import java.util.*;
class KoJeZvao implements Comparator<String>{
public int compare(String s1, String s2) { return - s1.toLowerCase().compareTo(s2.toLowerCase()); } }
public class PropusteniPozivi {
public static void main(String[] arguments) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); TreeMap<String, Integer> tm = new TreeMap<String, Integer>(new KoJeZvao());
System.out.println("Pocetak"); System.out.println("------------"); System.out.println("Ko zove? "); String ime = in.readLine(); while (!(ime.equals(""))) { if (tm.containsKey(ime)) tm.put(ime, tm.get(ime) + 1); else tm.put(ime, 1); System.out.println("Ko zove? "); ime = in.readLine(); } System.out.println("Kraj unosa");
System.out.println("--------------"); System.out.println("Propusteni pozivi:"); Set<String> listing = tm.keySet(); Iterator<String> keyIter = listing.iterator(); while (keyIter.hasNext()) { ime = keyIter.next(); int brPoziva = tm.get(ime); System.out.println(ime + " zvao " + brPoziva + " put(a)"); } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #32 on: 21 December 2009, 14:35:04 » |
|
package dvanaesteP; /* * Klasa "Poklon" ima privatna polja "naziv" i "cena", potrebne set/get metode i konstruktor. * Ona treba da implementira interfejs Comparable. * * Glavna klasa "Svadba" sluzi za pravljenje spiska zeljenih poklona za vencanje. Mladenci planiraju * svadbu do najsitnijih detalja, pa tako prave i spisak zelja kad su u pitanju pokloni. Otisli su * u neku veliku radnju i biraju artikle. Kako odaberu neki artikl (unesu sa tastature njegov * naziv i cenu), program treba da ga smesti u listu (koristiti LinkedList) ciji su elementi instance * klase "Poklon". Kad zavrse izbor poklona, mladenci unesu prazan string. * Pri svakom ubacivanju elementa u listu, odrzava se njena sortiranost. Kriterijum za sortiranje je * cena poklona, a cilj je da kupcima (gostima na svadbi) radnja ponudi spisak odabranih poklona * poredjanih opadajuce po ceni (od najskupljeg do najjeftinijeg). Takav spisak se ispise na kraju * programa (koriscenjem iteratora). */
import java.io.*; import java.util.*;
class Poklon implements Comparable<Poklon> {
private String naziv; private float cena;
public float getCena() { return cena; }
public String getNaziv() { return naziv; } public void setCena(float cena) { this.cena = cena; }
public void setNaziv(String naziv) { this.naziv = naziv; }
Poklon(String naziv, float cena) { this.naziv = naziv; this.cena = cena; } public int compareTo(Poklon p) { return ((Float) cena).compareTo((Float) p.cena); } }
public class Svadba {
public static void main(String[] arguments) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); LinkedList<Poklon> lista = new LinkedList<Poklon>();
System.out.println("Pocetak"); System.out.println("------------"); System.out.println("Unesite naziv poklona: "); String naziv = in.readLine(); while (!(naziv.equals(""))) { System.out.println("Unesite cenu poklona: "); float cena = Float.parseFloat(in.readLine()); Poklon poklon = new Poklon(naziv, cena); ListIterator<Poklon> iter = lista.listIterator(); while (iter.hasNext()) { Poklon item = iter.next(); if (poklon.compareTo(item) > 0) { iter.previous(); break; } } iter.add(poklon); System.out.println("Unesite naziv poklona: "); naziv = in.readLine(); } System.out.println("Kraj unosa"); System.out.println("--------------");
System.out.println("Predlozi poklona:"); ListIterator<Poklon> iter = lista.listIterator(); while (iter.hasNext()) { Poklon p = iter.next(); System.out.println(p.getNaziv() + ", " + p.getCena()); } } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #33 on: 10 January 2010, 00:03:22 » |
|
public class Project { public static void main(String args[]) { int a; string b; if(a==0) { b = "Zero"; } else { b = "Non-Zero"; } return; } }
|
|
|
|
|
|
Logged
|
|
|
|
 |
« Reply #34 on: 10 January 2010, 00:04:07 » |
|
class Srilankan_Bachelor_ female_professio nal { double styles; short skirts; long time_to_understand_ problems; float mind; void knowledge(); char non_co_operative; }
class Married_female_ Software_ Professional { double weight; short tempered; long gossips; float hopes; void work(); char unstable; }
class Female_Engaged_ software_ professional { double time_on_phone; short attention_on_ work; long boast; float on_cloud_nine; void understanding( ); char edgy; }
class Srilankan_Newly_ Married_software _professional { double dinner_invitations; short time_at_work; long lunch_breaks; float talks; void bank_balance( ); char hen_pecked; }
class Srilankan_husband_ wife_software_ professional { double income; short temper; long time_no_see; float new_software_ company; void love_life(); char money_minded; }
|
|
|
|
|
|
Logged
|
|
|
|
|