Java zadatak - nizovi

poruka: 11
|
čitano: 13.053
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
10 godina
neaktivan
offline
JAVA Zadatak - Nizovi - POMOC!!!
Dat je sledeci celobrojni niz: 11,25,-22,34,0,545,-415,25,43,0,11,-918,-44.

Potrebno je napraviti dva niza, jedan za smestanje pozitivnih, a drugi za smestanje negativnih elemenata ovog niza i potrebnu logiku koja ce obaviti izvlacenje odgovarajucih elemenata u odgovarajuci niz.

Drugim recima, iz niza koji je dat, treba da izvucemo sve pozitivne elemente i smestiti u zaseban niz i izvuci sve negativne elemente i smestiti u zaseban niz.

Takodze je potrebno odrediti i broj duplikata u datom nizu.

Napisana funkcionalnost treba da bude primenljiva na bilo koji niz celobrojnih elemenata.
Anti-tech
 
0 2 hvala 0
14 godina
neaktivan
offline
JAVA Zadatak - Nizovi - POMOC!!!

nitko ti ovdje neće dati rješenje, jedino ti možemo pomoći oko logike zadatka. pokušaj razmisliti malo



treba ti jedno polje za pozitivne i drugo za negativne brojeve, a logika je sama po sebi jasna, brojeve veće (i jednako) od 0 spremi u polje za pozitivne brojeve, ostalo u drugo polje za negativne

 

dakle

 


pozitivni[13] //deklaracija polja
negativni[13] //deklaracija polja
int unos = 0;
int pozitivniIndex =0;
int negativniIndex=0;

for(int i = 0;i<13;i++)
{
    WRITE("Unesi "+i+". broj");
    unos = UnosSaTastature;
    if(unos>=0)
       {
          pozitivni[pozitivniIndex]=unos;
          pozitivniIndex++;
       }
    else
    {
       negativni[negativniIndex]=unos;
       negativniIndex++;      
    }
}
*sad sam skontao da ti i trebaju duplikati

samo prođi kroz oba polja na kraju i vidi da li ima duplikata u njima (premda možeš to provjeriti i za vrijeme unosa)

to ti ne mogu objasnjavat jer mi se ne da

 

*inace ovo je primjenjivo samo na napisanu duzinu polja i unos jednog po jednog elementa. U zadatku nije precizirano da li ih unosiš jedan po jedan, čitanje iz txt datoteke itd... (onda je kompletno drugacije)

Poruka je uređivana zadnji put sri 19.11.2014 0:23 (mean_machine).
 
0 0 hvala 0
10 godina
neaktivan
offline
Re: JAVA Zadatak - Nizovi - POMOC!!!
Znaci napisana funkcionalnost treba biti za koji bilo niz celih brojeva i takodze ako mozes da mi obrazlosis ovo za duplikata? U svakom slucaju hvala.
Anti-tech
10 godina
neaktivan
offline
Re: JAVA Zadatak - Nizovi - POMOC!!!
Nije navedeno na koji nacin da se unesu brojeve, ali da upotrebljena logika funkcionira kod svih celobrojnih nizova u Javi. Ako neko ima dobar savet, neka kaze?
Anti-tech
11 godina
neaktivan
offline
Re: JAVA Zadatak - Nizovi - POMOC!!!

A da ipak prvo pokusas nesto...

10 godina
neaktivan
offline
Java zadatak - nizovi
Uspeo sam!!! Ostalo mi je jos samo da odredim broj duplikata. Nadam se da necu bas na kraju da zaglavim? :)
Anti-tech
 
0 0 hvala 0
17 godina
offline
Re: Java zadatak - nizovi
anti-tech kaže...
Uspeo sam!!! Ostalo mi je jos samo da odredim broj duplikata. Nadam se da necu bas na kraju da zaglavim? :)

Dvostrukom petljom odrediš broj duplikata.

Vanjska petlja ide od 0 do n minus 1 gdje je n broj članova niza, a unutarnja petlja ide od indexa vanjske petlje plus 1 do n., u kojoj usporediš element na indexu vanjske petlje  sa onim na indexu unutarnje petlje.

Oprez, da bi algoritam radio kako treba, svaki broj niza može imati samo jedan duplikat iza njega, što znači da moraš prekinuti unutarnju petlju čim nađeš duplikat iza broja.

 

a[5] = {1, 2, 1, 3, 1}

 

Ovaj niz ima dva duplikata. 

Poruka je uređivana zadnji put čet 20.11.2014 14:06 (Floki).
11 godina
neaktivan
offline
Java zadatak - nizovi

Sad kad si vec sam rijesio zadatak, evo ga vrlo elegantno rjesenje uz pomoc Java 8 Stream API:

 

import java.util.*;

import java.util.stream.Collectors;

 

public class NizoviJava {

 

  public static void main(String [] args) {

   List<Integer> brojevi = Arrays.asList(11,25,-22,34,0,545,-415,25,43,0,11,-918,-44);

 

   List<Integer> pozitivniBrojevi = brojevi.stream()

                       .filter(br -> br > 0)

                       .collect(Collectors.toList());

 

   List<Integer> negativniBrojevi = brojevi.stream()

                       .filter(br -> br < 0)

                       .collect(Collectors.toList());

 

   long brDuplikata = brojevi.size() - brojevi.stream()

                        .distinct()

                        .mapToInt(Integer::new)

                        .count();

 

 

   System.out.println("Pozitivni brojevi:");

   pozitivniBrojevi.forEach(System.out::println);

 

   System.out.println("Negativni brojevi brojevi:");

   negativniBrojevi.forEach(System.out::println);

 

   System.out.println("Broj duplikata: " + brDuplikata);

 

 

  }

 

}

 

Zasto sam uopste postavio ovo rjesenje? Zato sto ovo rjesenje reflektuje novu, funkcionalnu osobinu Jave. 

Poruka je uređivana zadnji put čet 20.11.2014 19:05 (brano88).
 
0 0 hvala 0
17 godina
offline
Java zadatak - nizovi

Jel to lambda u javi, slično je C#

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FilterList
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> lista = new List<int> { 1, 8, -3, 1, -4, 5, 15, -4, 1};
            List<int> pozitivni = lista.FindAll(x => x > 0);
            List<int> negativni = lista.FindAll(x => x < 0);
            int duplikati = lista.Count - lista.Distinct().Count();
            Print(lista);
            Print(pozitivni);
            Print(negativni);
            Console.WriteLine(duplikati);
        }
        public static void Print(IEnumerable<int> lista)
        {
            foreach(int broj in lista )
            {
                Console.Write("{0} ", broj);
            }
            Console.WriteLine();
        }
    }
}

Poruka je uređivana zadnji put čet 20.11.2014 22:05 (Floki).
 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Java zadatak - nizovi

"Jel to lambda u javi, slično je C#"

 

Da. Razlika je u tome sto lambda u C#-u zamjenjuje "delegate", dok u Javi zamjenjuje "S.A.M interfejs" (Single Abstract Method interface).

Mogao i ovo da uradis kada je u pitanju Print metod (iako mislim da je IEnumerable ipak bolja praksa):

 

public static void Print(List<int> lista)

{

   lista.ForEach(b => Console.Write("{0} ", b));

   Console.WriteLine("\n");

}

10 godina
neaktivan
offline
Re: Java zadatak - nizovi

Kako si uradio na kraju?

Ja sam nesto pokusavala i nije bas sjajan :)

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice