porównanie zawartości tablic int

Odpowiedz Nowy wątek
2009-01-20 11:56
0

Witam, czy istnieje klasa porównująca zawartość (chodzi o ciąg cyfr, tylko każda cyfra jest zapisana pod innym indeksem tablicy) tablic int o takiej samej długości i zwraca np true gdy pierwsza tablica ma większą zawartość od drugiej [???]

Lub jak mogę to zrobić w najkrótszy sposób?

int[]tablica1 = new int[]{4,3,3,2};
int[]tablica2 = new int[]{4,2,5,1};

int[]zmienna = new int[1];
int[]sprawdzajaca = tablica1;

for(int i=tablica1.length-1; i>=0; i--)
    if(tab[i]<tab1[i]{
        zmienna=tablica1;
        tablica1=tablica2;
        tablica2=zmienna;
    }

System.out.println("tablica1 > tablic2 " + Arrays.equals(tablica1, sprawdzajaca));

Pozostało 580 znaków

2009-01-20 12:16
0

piszesz, że chcesz sprawdzić czy jedna tablica jest większa od drugiej, ale nie bardzo wiem w jakim sensie.
Chodzi o to czy suma int'ów z jednej jest większa od sumy int'ów drugiej?
Jeżeli tak to:

int sum1=0;
int sum2=0;
for(int i:tablica1) sum1+=i;
for(int i:tablica2) sum2+=i;
//porównujesz sobie teraz sumy

Czy na poszczególnych idexach? Musisz sprecyzować co rozumiesz pod pojęciem "jedna tablica większa od drugiej" Metodą equals sprawdzisz chyba tylko czy zawartość jest taka sama.


there are 10 types of poeple who can read binary code. Those whoe can, and those who cant't.

Pozostało 580 znaków

2009-01-20 13:00
0

Trochę nie jasno to napisałem, przepraszam.
mam porównać dwie duże liczby które nie mieszczą się w żadnym z zakresów typów domyślnie dostępnych w języku JAVA. Z tym że nie mogę korzystać z klasy BigInteger, i operacje muszę zrobić na tablicach.

i porównując np. takie tablice:

  tablica1 = {4,3,3,2};
  tablica2 = {4,2,5,1};

ma być na takiej zasadzie jak bym porównywał dwie liczby 4332 i 4251 która jest większa

Pozostało 580 znaków

2009-01-20 13:34
0

No to zmienia postać rzeczy :)
To w sumie proste. Porównujesz sobie kolejne indeksy i jeżeli którys jest wiekszy to znaczy ze cala liczba jest większa (tylko w przypadku tablic o takim samym rozmiarze!).

int[] tablica1 = new int[]{4,4,3,5}
int[] tablica2 = new int[]{4,4,2,6}

public int sprawdz(int[] tablica1, int[] tablica2){
     if(tablica1.equals(tablica2)) return 0;
     for(int i=0;i<tablica1.length();i++){
         if(tablica1[i]>tablica2[i]) {
            return 1;
            continue;
         }
         if(tablica1[i]<tablica2[i] ) {
            return -1;
            continue;
     }
}

Coś mogłem namieszać z break i continue (z palca pisze, nie mam tu środowiska), ale generalnie zasada jest odpowiednia: porównujesz cyfry z odpowiednich miejsc, czyli 4xxx z 4xxx (tysiące się zgadzają), x4xx z x4xxx (setki też), xx3x z xx2x (dziesiątki pierwszej sa wieksze wiec cala liczba jest wieksza i funkcja zwraca wynik bez dalszego sprawdzania) -> 1 jezeli wieksza, -1 mniejsza, 0 rowne.

EDIT:
Oczywiście jeżeli tablice nie są tych samych rozmiarów, to większa będzie liczba w większej tablicy, przy założeniu że początkowe indeksy nie są zerami.


there are 10 types of poeple who can read binary code. Those whoe can, and those who cant't.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0