PDA

Prikaži potpunu verziju : NeatBeans pomoc(HITNO)


GROBAR22
28.11.2013, 19:42
Molim nekog ko zna da mi pomogne oko jednog zadatka u netbeansu(ili bilo kom JAVA programu bitan je samo kod),bio bih veoma zahvalan
http://www.dodaj.rs/f/1W/xx/1xi8t4Q4/323232.jpg

RexGrammer
28.11.2013, 20:27
Sta si do sad probao i uradio? Koji tacno deo te muci, i ako mozemo da vidimo kod koji si do sad uradio, bilo bi super.

GROBAR22
28.11.2013, 20:39
imam ovaj kod, u ovom programu se simulira bacanje dve kocke sve dok zbir kocaka ne bude od 2 do 12, a meni treba da na obe kocke bude isti broj

System.out.println("Zbir dve kocke Prosečan broj bacanja");
System.out.println("-------------- ---------------------");
for (int i = 2; i < 13; i++)
System.out.printf("%7d %24.2f\n", i, prosekZaZbir(i));
}
public static int baciZaZbir(int zbir) {
int brojBacanja = 0; // brojač bacanja dve kocke
int kocka1; // broj koji je pao na prvoj kocki
int kocka2; // broj koji je pao na drugoj kocki
do {
kocka1 = (int)(Math.random()*6) + 1; // baciti prvu kocku
kocka2 = (int)(Math.random()*6) + 1; // baciti drugu kocku
brojBacanja++; // uračunati bacanje
} while ((kocka1 + kocka2) != zbir);
return brojBacanja;
}

public static double prosekZaZbir(int zbir) {
final int BROJ_PONAVLJANJA = 100000;
int ukupnoBacanja = 0; // ukupan broj bacanja za
// dati zbir dve kocke
for (int i = 0; i < BROJ_PONAVLJANJA; i++)
ukupnoBacanja = ukupnoBacanja + baciZaZbir(zbir);
return (double)ukupnoBacanja/BROJ_PONAVLJANJA;
}

}

RexGrammer
28.11.2013, 21:03
Zar ne pise da sve ovo treba da bude klasa, a bacanja metode? Od toga mozes da pocnes.


Ti u:

for (int i = 2; i < 13; i++)
System.out.printf("%7d %24.2f\n", i, prosekZaZbir(i));

U for ciklusu proveravas koliki je prosek bacanja za zbirove od 2 do 12.

Ti treba da napises metodu koja "baca" dve kocke dok na njima ne bude bio isti broj. Pseudo-kod:

int baciDveKocke(n)
{
kocka1 se deklarise i postavlja na nasumicnu vrednost;
kocka 2 se deklarise i postavlja na nasumicnu vrednost;
deklarises brojac za bacanja i inicijalizujes ga na jedan;
dok je tacan uslov (prva kocka nije jednaka drugoj kocki)
dodeli nasumicnu vrednost kocki1;
dodeli nasumicnu vrednost kocki2;
vrati brojacbacanja;
}


U drugoj metodi koristis prvu, i m puta je ponavljas za broj n (to mozes najosnovnijim ciklusom odraditi), sabiras dobijene vrednosti, i na kraju podelis sa m, i vrati dobijenu vrednost.

main() bi trebalo da mozes sam da uradis, nakon prethodne dve metode.

Ivan452
28.11.2013, 21:03
@Grobar22

U prevodu, nista nisi uradio imas neki uradjen zadatak od prosle godine i ocekujes da ti ovde neko to resi? :)

Zadatak je mozda dosta konfuzno napisan. Ja cu ti ga pojasniti, ti onda probaj da ga uradis pa ako se zaglavis negde javi.

prva metoda baciDveKocke(n):
Ova metoda treba da vrati int koliko su puta bacene dve kocke da bi se dobila n vrednost.
Znaci, trebas da u jednoj petlji 2x radis celobrojni random od 1-6, brojis koliko si puta prosao kroz tu petlju sve dok ne dobijes taj broj koji je prosledjen funkciji (n). I onda da vratis tu vrednost brojaca (koliko si puta prosao kroz petlju).

druga petoda prosekDveKocke(n,m):
Ova metoda treba da poziva metodu baciDveKocke m puta i da joj prosledi vrednost n. Potom da izracuna prosecnu vrednost koju je funkcija baciDveKocke vratila.
znaci ako pozoves prosekDveKocke(1,3) ona treba 3x da pozove metodu baciDveKocke(1) i da izracuna zbir vrednosti koju je ta metoda vratila svaki put i podeli je sa tri (prosecna vrednost).

I na kraju u main metodi trebas da pozoves prosekDveKocke(n,m) 6x. Gde n ide od 1 do 6 a m=1000


Zadatak je prilicno lagan. I mozes sigurno da ga uradis, posebno posto imas uradjenu ovu drugu verziju


@RexGrammer
U pseudo kodu nigde ne povecavas vrednost brojaca.
I prva kocka ne treba da bude jednaka drugoj kocki, vec da i prva i druga budu jednake vrednosti n.

GROBAR22
28.11.2013, 21:20
@Grobar22

U prevodu, nista nisi uradio imas neki uradjen zadatak od prosle godine i ocekujes da ti ovde neko to resi? :)

Zadatak je mozda dosta konfuzno napisan. Ja cu ti ga pojasniti, ti onda probaj da ga uradis pa ako se zaglavis negde javi.

prva metoda baciDveKocke(n):
Ova metoda treba da vrati int koliko su puta bacene dve kocke da bi se dobila n vrednost.
Znaci, trebas da u jednoj petlji 2x radis celobrojni random od 1-6, brojis koliko si puta prosao kroz tu petlju sve dok ne dobijes taj broj koji je prosledjen funkciji (n). I onda da vratis tu vrednost brojaca (koliko si puta prosao kroz petlju).

druga petoda prosekDveKocke(n,m):
Ova metoda treba da poziva metodu baciDveKocke m puta i da joj prosledi vrednost n. Potom da izracuna prosecnu vrednost koju je funkcija baciDveKocke vratila.
znaci ako pozoves prosekDveKocke(1,3) ona treba 3x da pozove metodu baciDveKocke(1) i da izracuna zbir vrednosti koju je ta metoda vratila svaki put i podeli je sa tri (prosecna vrednost).

I na kraju u main metodi trebas da pozoves prosekDveKocke(n,m) 6x. Gde n ide od 1 do 6 a m=1000


Zadatak je prilicno lagan. I mozes sigurno da ga uradis, posebno posto imas uradjenu ovu drugu verziju


@RexGrammer
U pseudo kodu nigde ne povecavas vrednost brojaca.
I prva kocka ne treba da bude jednaka drugoj kocki, vec da i prva i druga budu jednake vrednosti n.

meni je jasno sta se trazi u zadatku, ne znam kako to da izvedem posto mi slabije ide programiranje, zato sam zamolio ako bi neko bio voljan da uradi to , posto ne verujem da je vise od 5 minuta posla, verovatno bi i sam razumeo kad bi video uradjen zadatak.

RexGrammer
28.11.2013, 21:27
@Grobar22
@RexGrammer
U pseudo kodu nigde ne povecavas vrednost brojaca.
I prva kocka ne treba da bude jednaka drugoj kocki, vec da i prva i druga budu jednake vrednosti n.

Da zaboravio sam povecanje brojaca. A sto se kocaka tice, pa polazim s' pretpostavkom da je kocka u stvari int, tj. vrednosni tip promenjive, kada bi bile klase tj. referentni tipovi, bilo bi drugacije. Mislio sam da ne komplikujem tj samo da "=" operator vraca true, imajuci u obziru da je OP pocetnik nema potrebe da se zalazi u detalje.

Ivan452
28.11.2013, 21:48
A sto se kocaka tice, pa polazim s' pretpostavkom da je kocka u stvari int, tj. vrednosni tip promenjive, kada bi bile klase tj. referentni tipovi, bilo bi drugacije. Mislio sam da ne komplikujem tj samo da "=" operator vraca true, imajuci u obziru da je OP pocetnik nema potrebe da se zalazi u detalje.

Nije problem u tipu promenljive.
"simulira bacanje dve kocke za igranje sve dok na obe kocke ne padne isti broj jednak datom argumentu n"
Ti samo proveravas da li je kocka1==kocka2, a treba da bude kocka1==kocka2==n.

RexGrammer
28.11.2013, 22:03
Jao da, bas sam glup :n-cc2:

Ja sam mislio da ti pricas o poredjenju u smislu da nije tacno da se porede same promenjive nego njihove vrednosti, sorry. :odoK:

GROBAR22
28.11.2013, 22:50
sve je to super :) ali jel ima neko voljan da napise taj kod molim vas potrebno mi je :D, kontam i ja otprilike kako treba al ne znam da realizujem to, u tome je problem

water wizard
28.11.2013, 23:12
moraš da ponudiš neku nagradu ne ide to tako :)

GROBAR22
28.11.2013, 23:46
moraš da ponudiš neku nagradu ne ide to tako :)

Ja sam mislio da se to podrazumeva ko god uradi ima pivo od mene :)

Belphegor
29.11.2013, 0:19
Savet za resavanje domacih zadataka:
Odes na neki forum (najbolje da bude specijalizovan za programiranje), napravis profil sa nekim interesantnim zenskim imenom, otvoris temu, normalno pises sve u zenskom rodu, text postavis da budu u nekoj roze boji i na kraju dodas smajlije sa srcima.
Ima da se polome da ti pomognu.

http://images.wikia.com/adventuretimewithfinnandjake/images/8/80/Troll-face-problem.jpg

GROBAR22
29.11.2013, 1:20
Odlican stil odj*bavanja :) moraces i mene da naucis

NIx Car
29.11.2013, 1:41
Grobare, tebi ovde niko nece doci, sesti i napisati zadatak. Forum koristis za resavanje nedoumica i pomoci ako si negde zapeo u toku samog pisanja programa.
Ako ne znas da uradis sam zadatak (tj ako ne znas ni da ga pocnes), no hard feelings, ali gubis vreme ovde. :)

GROBAR22
29.11.2013, 1:50
naravno da nema ljutnje :) ali sam mislio da je to jedno 5 minuta posla da nece biti tesko, nema veze snacicu se nekako

ivan90BG
1.12.2013, 11:48
Ako se još uvek nisi snašao evo ti rešenje.



public class BacacKocki {

Random rand;
public BacacKocki() {
rand = new Random(System.nanoTime());
}
public int dveKocke(int n) {
int broj1;
int broj2;
int brojac = 0;
do {
broj1 = rand.nextInt(6)+1;
broj2 = rand.nextInt(6)+1;
brojac++;
} while (broj1 != n || broj2 != n);
return brojac;
}

public float prosekDveKocke(int n, int m) {
int zbir = 0;
for (int i = 0; i < m; i++) {
zbir += dveKocke(n);
}
return (float)zbir/m;
}

public static void main(String[] args) {
BacacKocki bacac = new BacacKocki();
System.out.println("Broj na obe kocke Prosečan broj bacanja");
System.out.println("----------------- ---------------------");
for (int i = 1; i <= 6; i++) {
System.out.println(" "+i+" "+bacac.prosekDveKocke(i,10000));
}
}
}

Jedan izlaz ovog programa:

Broj na obe kocke Prosečan broj bacanja
----------------- ---------------------
1 35.8968
2 35.7759
3 35.4587
4 35.8247
5 36.1754
6 36.3534




Od tebe očekujem da ako ti nešto nije jasno iz ovog koda, pitaš, a ne da samo uzmeš kod i predaš ga kao rešenje bez razmišljanja. A pivo neću, jer ne pijem. ;)

Ostalim forumašima se izvinjavam zbog kršenja neformalne politike odgovaranja na zahteve za rešavanjem zadataka, ali nekad prosto ne mogu da gledam kako se neko ostavlja na cedilu. Pretpostavljam da je politika ovakva baš zbog gore navedene mogućnosti da postavljač pitanja samo uzme kod bez razmišljanja, a svrha naše pomoći bi trebala da bude da postavljča pitanja nešto nauči.

Evo ako se čovek ne javi sa pitanjima u vezi koda i sopstvenim obrazloženjem koda (ako ga je razumeo odmah ili posle pitanja) obećavam da više neću da odgovaram na ovakve zadatke. :D

p.s. Naravno da ne odgovaram na lične poruke sa molbama za rađenje zadataka. :opanachke

GROBAR22
1.12.2013, 13:49
Ako se još uvek nisi snašao evo ti rešenje.



public class BacacKocki {

Random rand;
public BacacKocki() {
rand = new Random(System.nanoTime());
}
public int dveKocke(int n) {
int broj1;
int broj2;
int brojac = 0;
do {
broj1 = rand.nextInt(6)+1;
broj2 = rand.nextInt(6)+1;
brojac++;
} while (broj1 != n || broj2 != n);
return brojac;
}

public float prosekDveKocke(int n, int m) {
int zbir = 0;
for (int i = 0; i < m; i++) {
zbir += dveKocke(n);
}
return (float)zbir/m;
}

public static void main(String[] args) {
BacacKocki bacac = new BacacKocki();
System.out.println("Broj na obe kocke Prosečan broj bacanja");
System.out.println("----------------- ---------------------");
for (int i = 1; i <= 6; i++) {
System.out.println(" "+i+" "+bacac.prosekDveKocke(i,10000));
}
}
}

Jedan izlaz ovog programa:

Broj na obe kocke Prosečan broj bacanja
----------------- ---------------------
1 35.8968
2 35.7759
3 35.4587
4 35.8247
5 36.1754
6 36.3534




Od tebe očekujem da ako ti nešto nije jasno iz ovog koda, pitaš, a ne da samo uzmeš kod i predaš ga kao rešenje bez razmišljanja. A pivo neću, jer ne pijem. ;)

Ostalim forumašima se izvinjavam zbog kršenja neformalne politike odgovaranja na zahteve za rešavanjem zadataka, ali nekad prosto ne mogu da gledam kako se neko ostavlja na cedilu. Pretpostavljam da je politika ovakva baš zbog gore navedene mogućnosti da postavljač pitanja samo uzme kod bez razmišljanja, a svrha naše pomoći bi trebala da bude da postavljča pitanja nešto nauči.

Evo ako se čovek ne javi sa pitanjima u vezi koda i sopstvenim obrazloženjem koda (ako ga je razumeo odmah ili posle pitanja) obećavam da više neću da odgovaram na ovakve zadatke. :D

p.s. Naravno da ne odgovaram na lične poruke sa molbama za rađenje zadataka. :opanachke

hvala plemeniti covece! ako ne pijes pivo moze bilo sta , e ovako par stvari mi nije bilo jasno kako da uradim, kod public int dveKocke(int n) kako da znam koliko je taj n kad posle napisem da broj1!=n || broj2!=n, isti slucaj i kod public float prosekDveKocke(int n, int m). To ako bi mogao da mi pojasnis

Krilce
1.12.2013, 14:33
hvala plemeniti covece! ako ne pijes pivo moze bilo sta , e ovako par stvari mi nije bilo jasno kako da uradim, kod public int dveKocke(int n) kako da znam koliko je taj n kad posle napisem da broj1!=n || broj2!=n, isti slucaj i kod public float prosekDveKocke(int n, int m). To ako bi mogao da mi pojasnis

Pa n je broj koji ti unosis, odnosno parametar te funkcije koju pozivas. Dole u mainu je on odradio for petlju iz koje je prosledjivao brojac toj funkciji. Ako je bilo koji od dobijenih brojeva razlicit od tog brojaca, on nastavlja da baca kocke, sve dok se ne desi da su oba broja sa kocki ista tom brojacu.

Uslov:
broj1!=n || broj2!=n

znaci da ukoliko je neki od brojeva razlicit od broja koji si ti uneo => nisu oba broja ista (sto je uslov zadatka), sto znaci da ce do while petlja nastaviti da radi tok se ne narusi gore napisan uslov, tj. dok oba broja ne budu jednaka n, odnosno broju koji si ti uneo.

Iscitaj ovaj post par puta, verujem da zvuci konfuzno. :kreza:

ivan90BG
1.12.2013, 17:51
Mda, taj uslov sam mogao da napišem razumljivije, ali mi je proradila želja za preranom optimizacijom (trenutno se na faksu lečim od toga :D)

Taj uslov je ekvivalentan sledećem: !(broj1 == n && broj2 == n), gde je n traženi broj (čeka se da se pojavi na obe kocke istovremeno). Patljama se daju uslovi pod kojima će se izvršavanje nastaviti, Ako zanš uslov za prekid, samo stavi negaciju ispred (ja sam otišao i korak dalje pa sam uneo negaciju u izraz, prema pravilima Bulove algebre, čime se broj operacija smanjuje.

U suštini svaki normalan kompajler bi trebalo da uradi to isto bez moje pomoći, ali čuo sam da Java kompajler i JVM imaju nek nesređene račune, valjda kompajler misli da JVM treba da radi gro optimizovanja, ali JVM nema vremena za to jer ne sme da oduži jit kompajliranje da programi nebi lagovali od toga).

Krilce
1.12.2013, 19:59
U sustini, verovatno bi za njega bilo razumljivije da si stavio jedan "if" unutar "while" petlje(sto i jeste cilj, posto pretpostavljam da zadatak sluzi da ga nauci da radi sa petljama i uslovima). Znam da sam ja, kada sam bio poceo sa C, imao problema sa do while petljom, posto mi je uslov koji trazi predstavljao neku obrnutu logiku, odnosno "radi dok se ovo desava", suprotno od "radi dok se ovo ne desi". Znaci:

while(true) {
broj1 = rand.nextInt(6) + 1;
broj2 = rand.nextInt(6) + 1;

if(broj1 == n && broj2 = n)
break; //izadji iz petlje
}

Beskonacna petlja se generalno ne preporucuje, ali mislim da je ovo lakse shvatiti, s obzirom da se ne radi obrnutom logikom, koja je cesto efikasnija, ali nepreglednija i teza za razumeti, posebno za nekog ko se sa tim prvi put susrece.

Jos bolje bi bilo iskoristiti do while sa uslovom koji si naveo, ali reko, mozda je ovako lakse videti sta se dogadja. :D