szukanie w tablicy

0

Hej

Mam dwie tablice, jedna typu double druga int np,
0,1 0,3 0,5
1 2 3
Dalej mam dwie liczby rozmyte czyli postaci:
0,1/1; 0,2/2; 0,3/3 oraz
0,1/2; 0,2/3; 0,3/4
po dodaniu tych liczb(to nie przypadek ze tak dodalem bo to liczby rozmyte dodaje sie w taki sposob) powstanie
0,1/3; 0,1/4; 0,1/5; 0,1/4; 0,2/5; 0,2/6; 0,1/5; 0,2/6; 0,3/7

teraz porownujac mianowniki ulamka musze z tego calego ciagu liczb wybrac te o najwiekszym liczniku, czyli zostana wybrane
0,1/3; 0,1/4; 0,2/5; 0,2/6; 0,3/7

nie mam pojecia od czego zaczac, moze uzyskam jakies podpowiedzi

dziekuje i pozdrawiam

0

Nie wgłębiałem się w logikę tego, ale System.Linq ci tu pomoże. Zobacz metody:

.Select
.Where

0

hmmm :-| a moze cos szerzej o tych metodach?

0
Wojtekkkk napisał(a)

teraz porownujac mianowniki ulamka musze z tego calego ciagu liczb wybrac te o najwiekszym liczniku, czyli zostana wybrane
0,1/3; 0,1/4; 0,2/5; 0,2/6; 0,3/7
Nie kapuje kompletnie [???]

0

Jak posortowac tablice typu double malejąco.
Array.Sort(tab); sortuje rosnaco i dla double zwraca zera

Oczywiście w c#

0

O takie coś chodzi ?

class Liczba
{
   double licznik;
   int mianownik;
}

Liczba[] array = //...;
array = array.OrderByDescending(liczba => liczba.licznik / liczba.mianownik).ToArray();
0
adf88 napisał(a)

Nie kapuje kompletnie [???]

chodzi o to mam np zbior ulamkow(licznik(double) i mianownik(int) zapisane w oddzielnych tablicach)
0,3/3; 0,3/5; 0,3/7; 0,3/4; 0,7/6; 0,7/8; 0,3/5; 0,8/7; 1/9; 0,3/6; 0,6/8; 0,2/7; 0,2/9;
i tam gdzie mianowniki ulamka sa takie same np. 0,3/7; 0,8/7; 0,2/7; wybrac z nich jeden o najwiekszym liczniku i zapisac go do nowej tablicy

po wybraniu wszystkich w nowej tablicy zostanie:
0,3/3; 0,3/5; 0,8/7; 0,3/4; 0,7/6; 1/9; 0,7/8;

<ort>niewiem </ort>jak moge posortowac liczby typu double bo np int sortuje metoda Array.Sort(tablica) a dla double wyrzuca zera. tylko prosze o proste wskazowki, bo nie jestem w tym za dobry

0
Wojtekkkk napisał(a)

niewiem jak moge posortowac liczby typu double bo np int sortuje metoda Array.Sort(tablica) a dla double wyrzuca zera. tylko prosze o proste wskazowki, bo nie jestem w tym za dobry

Tablice typu double sortujesz ta sama metoda. Moze cos nie tak wpisujesz?

double[] tablica = { 0.25, 0.75, 0.45, 1.56, 0.38};
Array.Sort(tablica);
0

Cos niecos skorzystałem

Dzięki i Pozrdrawiam

0

Jeśli chcesz sortować w odwrotnej kolejności, to masz dwa wyjścia:

  1. Posortować:
  
//przykładowa tablica, oczywiście może być dowolna
double[] p = new double[] { 1, 2, 3, 4, 5, 8, 43234, 1, 23, 123, 0.2 };
Array.Sort<double>(p);
//ma być malejąco, więc odwracasz tablicę :)
Array.Reverse(p);
  1. Napisać własny "porównywacz" liczb

Array.Sort<double>(p, new Comparison<double>(COMP));

Gdzie COMP to funkcja porównująca, postaci:


        int COMP(double d1, double d2)
        {
            return d2.CompareTo(d1);
        }

Pozdr

0

powinienes jeszcze byl napisac, czemu druga opcja jest o wiele lepsza ;)

0

Megaspec to ja nie jestem, ale widać jasno, że wykonuje o wiele mniej operacji :)
Opcja 1. robi to samo, co opcja 2., ale dodatkowo odwraca kolejność.

0

przy czym przy każdej iteracji wykonuje funkcję użytkownika, na pewno to ją przyspiesza. odwracanie tablicy wydłuży sortowanie o 1/2*log(n), dla 1024 elementów to 5%. szalenie dużo...

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