• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Różnica symetryczna zbiorów Java

Object Storage Arubacloud
0 głosów
1,281 wizyt
pytanie zadane 20 października 2016 w Java przez Patryk Rafał Bywalec (2,700 p.)

Witam mam napisać kod sprawdzający różnice symetryczną tablic czyli elementy z obu tablic których nie ma w pierwszej i drugiej tablicy.

Dane przechowuje w tablicy np dla danych wejściowych 

tab1[] = {14,843,81,4,1};
tab2[]={12,14,5};

mam otrzymać 843,4,81,12,5

mam taki oto kod

public IZbior roznicaSymetryczna(IZbior drugi) {
        
        Zbior z = new Zbior();
        Zbior d = (Zbior) drugi;
        z.elementy = 0;
        boolean jest = false;
        
       
        for(int i=0; i<this.tab.length; i++)
        {
           
           for(int j=0; j<d.tabEelementy.length; j++)
           {
               if(this.tab[i] == this.tabEelementy[j])
               {
                   jest = true;
               }else{
                   jest = false;
               }
               
           }
            if(jest == false)
            {
                int w = d.tabEelementy[i];
                if(w!=0)
                {
                    z.dodaj(w);
                    z.elementy++;
                }
            }
           
        }
   
        for(int i=0; i<z.elementy; i++)
        {
            System.out.println(z.tab[i]);
        }
        return z;
    }

Niestety nie wiem co źle robię

komentarz 20 października 2016 przez Andrus19 Bywalec (2,260 p.)
wrzuć cały kod, będzie szybciej
komentarz 20 października 2016 przez Patryk Rafał Bywalec (2,700 p.)
nie wiem jaki jest sens przecież tłumacze że mam zrobić metodę która będzie wybierała z tablic liczby które nie powtarzają
2
komentarz 20 października 2016 przez Andrus19 Bywalec (2,260 p.)
sens jest taki że łatwiej jest sprawdzić działanie niż przeczytać ten kod(nawet nie napisałeś co obecnie nie działa w tym kodzie)
komentarz 20 października 2016 przez Patryk Rafał Bywalec (2,700 p.)
Pomysł mam taki żeby porównywać liczby z pierwszej tablicy i w drugiej i odrzucac te które się powtarzają a kopiować do nowego obiektu te kotre się nie powtarzają jak w przykładzie niestety pobiera mi również powtarzające się elementy

1 odpowiedź

0 głosów
odpowiedź 20 października 2016 przez Andrus19 Bywalec (2,260 p.)
if(this.tab[i] == this.tabEelementy[j])
               {
                   jest = true;
               }else{
                   jest = false;
               }

ten fragment sobie przeanalizuj co się stanie gdy np. pierwszy element z pierwszej i pierwszy drugiej tablicy będzie taki sam i zarazem pierwszy element pierwszej i ostatni drugiej będą różne.

Po drugie co z elementami, które znajdują się tylko w drugiej tablicy?

komentarz 21 października 2016 przez Patryk Rafał Bywalec (2,700 p.)

Tak bo nie wiem czy dobrze zrozumiałem ?

public IZbior roznicaSymetryczna(IZbior drugi) {
        
        Zbior z = new Zbior();
        Zbior d = (Zbior) drugi;
        z.elementy = 0;
        boolean jest = false;
        
       
        for(int i=0; i<this.tab.length; i++)
        {
            
           jest = false;
           for(int j=0; j<d.tabEelementy.length; j++)
           {
               if(this.tab[i] == this.tabEelementy[j])
               {
                   break;
               }
               
           }
            if(!jest)
            {
                int w = d.tabEelementy[i];
                if(w!=0)
                {
                    z.dodaj(w);
                    z.elementy++;
                }
            }
           
        }
   
        for(int i=0; i<z.elementy; i++)
        {
            System.out.println(z.tab[i]);
        }
        return z;
    }

 

komentarz 21 października 2016 przez K0XM4N Gaduła (3,640 p.)
Mógłbyś też spróbować zrobić to w ten sposób, że masz dwie główne pętle, jedna dla pierwszej tablicy, a druga dla drugiej. Każda sprawdza czy elementy są różne. Jeżeli są różne to zwiększasz ilość różnic. Potem sprawdzasz czy ilość różnic jest równa z rozmiarem tablicy (co znaczy, że wtedy liczba nie wystąpiła w tej drugiej tablicy ani razu) i dodajesz ją do Setu. Set jest zbiorem gdzie elementy się nie będą powtarzać i tak samo dla drugiej tablicy. Całość zajęła mi tyle samo kodu co Tobie ;P
komentarz 21 października 2016 przez Patryk Rafał Bywalec (2,700 p.)
Tylko obie tablice powinny być równego rozmiaru bo jeśli nie będą to z drugiej tablicy będzie mi pomijać te liczby które leżą dalej niż rozmiar pierwszej
komentarz 21 października 2016 przez K0XM4N Gaduła (3,640 p.)

Nie musza być takiego samego rozmiaru. 

for(int i=0; i<pierwsza.lenght; i++)
        {
             //kod
         
           for(int j=0; j<druga.lenght; j++)
           {
              //kod
                
           }
//kod
}

for(int i=0; i<druga.lenght; i++)
        {
             //kod
         
           for(int j=0; j<pierwsza.lenght; j++)
           {
              //kod
                
           }
//kod
}

O to mi chodziło

komentarz 21 października 2016 przez Patryk Rafał Bywalec (2,700 p.)
dzięki kolego działa ale ja głupi jestem :)

Podobne pytania

0 głosów
3 odpowiedzi 370 wizyt
0 głosów
1 odpowiedź 505 wizyt
0 głosów
2 odpowiedzi 496 wizyt
pytanie zadane 15 sierpnia 2019 w Java przez Uwegi Początkujący (430 p.)

92,565 zapytań

141,416 odpowiedzi

319,599 komentarzy

61,950 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...