Preskoči na sadržaj
Ista raja. Nova runda.
GAMERZ.ba — REBORN
Diskusija

Java zadatak

138 pregleda · 3 odgovora · otvorena 01.07.2015. u 02:50

Pozdrav, da li moze pomoc oko zadatka. Zadatak je vrlo jednostavan, toliko jednostavan da ga ne znam uraditi...
Dat je niz:
int[] arr = {12, 5, 6, -1, -3, 777, -25, 99, 12, -55, -3 };
Potrebno je napraviti dva niza, jedan za smjestanje pozitivnih, a drugi za smjestanje negativnih brojeva iz niza arr. Takodjer potrebno mi je da odredim broj duplikata u nizu.

-Probao sam sve moguce varijante, i podobro sam se namucio sa ovim. Znam logiku koju trebam ubaciti, ali ne mogu nikako da deklarisem niz, a da mu ne odredim kolika je njegova duzina, i automatski mi zadatak ne valja..

Ako neko zna uraditi bio bih veoma zahvalan :)
Ne znam uraditi, ali jedna napomena i savjet kada je u pitanju dužina niza. Gledano matematski, 'najgori' slučaj kada je u pitanju niza, bilo za pozitivne, bilo za negativne brojeve je da deklarišeš pomoćne nizove sa dužinom jednakom onoj dužini niza arr.
Dakle ako u arr imaš 5 brojeva, nebitno da li su pozitivni ili negativni, kada budeš tražio pozitivne/negativne, sigurno ih neće biti više od 5. To rješava problem dužine niza koji imaš, rješenje jeste neefikasno i trošiš više resursa nego ti u biti treba, ali to je cijena koju moraš platiti.

Drugi pristup se ogleda u tome da petljom prođeš kroz zadani niz arr i u pomoćnu varijablu npr. brojač_poz smjestiš koliko pozitivnih brojeva ima u arr. Onda deklariraš novi niz sa dužinom brojač_poz. Isto uradiš za negativne.

Nemam stvarno nikakvog znanja kada je u pitanju Java, ali rado bih ti uradio zadatak, ipak, ako mogu ovako pomoći sa logikom rješavanja i nekim savjetom, pomoći ću. Sintaksu i (ne)mogućnosti ipak moraš znati ti, jer ja još uvijek nisam počeo učiti Javu.
Neću ti uraditi zadatak jer to nema smisla, samo ću ti objasniti kako da ga uradiš.

"int[] arr = {12, 5, 6, -1, -3, 777, -25, 99, 12, -55, -3 };
Potrebno je napraviti dva niza, jedan za smjestanje pozitivnih, a drugi za smjestanje negativnih brojeva iz niza arr. Takodjer potrebno mi je da odredim broj duplikata u nizu."

Potrebna su ti dva nova arraya u koje bi smještao pozitivne i negativne brojeve, dakle:

int[] pozitivni;
int[] negativni;


Zatim je potrebno da for loopom prođeš kroz "arr" array i odrediš da li je broj pozitivan ili negativan, i u zavisnosti od toga, "smjestiš" ga u pravi array.

Array u Javi ima fixiranu veličinu, tako da ne možeš samo appendati elemente u array. Inače je mnogo bolje koristiti List jer u List možeš appendati stvari.

Možeš ovaj zadatak uraditi na više načina, npr. ovim for loopom:

for (i=0; i<11; i++) {  
/* for loop koji ide od 0 do 11 jer imamo 11 brojeva u "arr"arrayu, da si koristio ArrayList, ne bi morao ovo raditi već samo dodavati. ArrayList se deklariše ovako:

List<Integer> arr = new ArrayList<Integer>();
*/


dakle:

for (int a: arr) {  //ovaj for loop prolazi/iterira kroz "arr" array)
for (i=0; i<11; i++) {
if (a > 0) {
pozitivni[i].add(a)
}else{
negativni[i].add(a)
}
}


Što se tiče duplikata potrebno je deklarisati novu integer varijablu (npr. imena "duplikati") i prilikom dodavanja u pozitivne i negativne (if/else statement u for loopu iznad) provjeravati da li neki od ta dva arraya sadrži već taj broj, ako sadrži, dodaš 1 broj u varijablu "duplikati"... Provjeravati da li neki array već sadrži taj element možeš na sljedeći način:

Arrays.asList(imeArraya).contains(vrijednost)


Nadam se da sam ti pomogao 

P.S. Nisam provjeravao kod već pisao iz glave tako da su greške moguće 
MagBa je napisao/la:
Neću ti uraditi zadatak jer to nema smisla, samo ću ti objasniti kako da ga uradiš.

"int[] arr = {12, 5, 6, -1, -3, 777, -25, 99, 12, -55, -3 };
Potrebno je napraviti dva niza, jedan za smjestanje pozitivnih, a drugi za smjestanje negativnih brojeva iz niza arr. Takodjer potrebno mi je da odredim broj duplikata u nizu."

Potrebna su ti dva nova arraya u koje bi smještao pozitivne i negativne brojeve, dakle:

int[] pozitivni;
int[] negativni;


Zatim je potrebno da for loopom prođeš kroz "arr" array i odrediš da li je broj pozitivan ili negativan, i u zavisnosti od toga, "smjestiš" ga u pravi array.

Array u Javi ima fixiranu veličinu, tako da ne možeš samo appendati elemente u array. Inače je mnogo bolje koristiti List jer u List možeš appendati stvari.

Možeš ovaj zadatak uraditi na više načina, npr. ovim for loopom:

for (i=0; i<11; i++) {  
/* for loop koji ide od 0 do 11 jer imamo 11 brojeva u "arr"arrayu, da si koristio ArrayList, ne bi morao ovo raditi već samo dodavati. ArrayList se deklariše ovako:

List<Integer> arr = new ArrayList<Integer>();
*/


dakle:

for (int a: arr) {  //ovaj for loop prolazi/iterira kroz "arr" array)
for (i=0; i<11; i++) {
if (a > 0) {
pozitivni[i].add(a)
}else{
negativni[i].add(a)
}
}


Što se tiče duplikata potrebno je deklarisati novu integer varijablu (npr. imena "duplikati") i prilikom dodavanja u pozitivne i negativne (if/else statement u for loopu iznad) provjeravati da li neki od ta dva arraya sadrži već taj broj, ako sadrži, dodaš 1 broj u varijablu "duplikati"... Provjeravati da li neki array već sadrži taj element možeš na sljedeći način:

Arrays.asList(imeArraya).contains(vrijednost)


Nadam se da sam ti pomogao 

P.S. Nisam provjeravao kod već pisao iz glave tako da su greške moguće 
Velika je sansa da je ovo domaci zadatak i da covjek jos ne zna ostale podatocne strukture, jer je zadatak veoma jednostavan .

@OP Zar je tesko naci broj pozitivnih i negativnih elemenata u nizu prije nego sto kreiras nove nize?

EDIT: Da odredis broj duplikata, koristi dva nested for ciklusa na originalnu nizu.

Prijavi se da bi odgovorio/la na ovu temu.